Skip to content

Commit d3f0820

Browse files
committed
chg: [MISP connector] added bulk org pull
1 parent be64a18 commit d3f0820

File tree

1 file changed

+33
-8
lines changed

1 file changed

+33
-8
lines changed

src/Lib/default/local_tool_connectors/MispConnector.php

+33-8
Original file line numberDiff line numberDiff line change
@@ -907,6 +907,12 @@ public function organisationsAction(array $params): array
907907
'reload_url' => '/localTools/action/' . h($params['connection']['id']) . '/organisationsAction',
908908
'popover_url' => '/localTools/action/' . h($params['connection']['id']) . '/fetchSelectedOrganisationsAction'
909909
],
910+
[
911+
'text' => __('Fetch all organisations'),
912+
'html' => '<i class="fas fa-download"></i> ',
913+
'reload_url' => '/localTools/action/' . h($params['connection']['id']) . '/organisationsAction',
914+
'popover_url' => '/localTools/action/' . h($params['connection']['id']) . '/fetchSelectedOrganisationsAction?ids=all'
915+
],
910916
[
911917
'text' => __('Push organisations'),
912918
'html' => '<i class="fas fa-upload"></i> ',
@@ -1190,23 +1196,42 @@ public function fetchSelectedOrganisationsAction(array $params): array
11901196
return [
11911197
'data' => [
11921198
'title' => __('Fetch organisations'),
1193-
'description' => __('Fetch and create/update the selected {0} organisations from MISP?', count($ids)),
1199+
'description' => is_array($ids) ?
1200+
__('Fetch and create/update the selected {0} organisations from MISP?', count($ids)) :
1201+
__('Fetch and create/update ALL organisations from MISP?'),
11941202
'submit' => [
11951203
'action' => $params['request']->getParam('action')
11961204
],
1197-
'url' => ['controller' => 'localTools', 'action' => 'action', $params['connection']['id'], 'fetchSelectedOrganisationsAction']
1205+
'url' => is_array($ids) ?
1206+
['controller' => 'localTools', 'action' => 'action', $params['connection']['id'], 'fetchSelectedOrganisationsAction'] :
1207+
['controller' => 'localTools', 'action' => 'action', $params['connection']['id'], 'fetchSelectedOrganisationsAction?ids=all']
11981208
]
11991209
];
12001210
} elseif ($params['request']->is(['post'])) {
12011211
$successes = 0;
12021212
$errors = 0;
1203-
foreach ($ids as $id) {
1204-
$response = $this->getData('/organisations/view/' . $id, $params);
1205-
$result = $this->captureOrganisation($response->getJson()['Organisation']);
1213+
if (!is_array($ids) && $ids === 'all') {
1214+
$response = $this->getData('/organisations/index/scope:all', $params);
12061215
if ($response->getStatusCode() == 200) {
1207-
$successes++;
1208-
} else {
1209-
$errors++;
1216+
$orgs = $response->getJson();
1217+
foreach ($orgs as $org) {
1218+
$result = $this->captureOrganisation($org['Organisation']);
1219+
if ($result) {
1220+
$successes++;
1221+
} else {
1222+
$errors++;
1223+
}
1224+
}
1225+
}
1226+
} else {
1227+
foreach ($ids as $id) {
1228+
$response = $this->getData('/organisations/view/' . $id, $params);
1229+
$result = $this->captureOrganisation($response->getJson()['Organisation']);
1230+
if ($response->getStatusCode() == 200) {
1231+
$successes++;
1232+
} else {
1233+
$errors++;
1234+
}
12101235
}
12111236
}
12121237
if ($successes) {

0 commit comments

Comments
 (0)