diff --git a/src/Lib/default/local_tool_connectors/MispConnector.php b/src/Lib/default/local_tool_connectors/MispConnector.php index d7d4b30..ee0705b 100644 --- a/src/Lib/default/local_tool_connectors/MispConnector.php +++ b/src/Lib/default/local_tool_connectors/MispConnector.php @@ -907,6 +907,12 @@ class MispConnector extends CommonConnectorTools 'reload_url' => '/localTools/action/' . h($params['connection']['id']) . '/organisationsAction', 'popover_url' => '/localTools/action/' . h($params['connection']['id']) . '/fetchSelectedOrganisationsAction' ], + [ + 'text' => __('Fetch all organisations'), + 'html' => ' ', + 'reload_url' => '/localTools/action/' . h($params['connection']['id']) . '/organisationsAction', + 'popover_url' => '/localTools/action/' . h($params['connection']['id']) . '/fetchSelectedOrganisationsAction?ids=all' + ], [ 'text' => __('Push organisations'), 'html' => ' ', @@ -1190,23 +1196,42 @@ class MispConnector extends CommonConnectorTools return [ 'data' => [ 'title' => __('Fetch organisations'), - 'description' => __('Fetch and create/update the selected {0} organisations from MISP?', count($ids)), + 'description' => is_array($ids) ? + __('Fetch and create/update the selected {0} organisations from MISP?', count($ids)) : + __('Fetch and create/update ALL organisations from MISP?'), 'submit' => [ 'action' => $params['request']->getParam('action') ], - 'url' => ['controller' => 'localTools', 'action' => 'action', $params['connection']['id'], 'fetchSelectedOrganisationsAction'] + 'url' => is_array($ids) ? + ['controller' => 'localTools', 'action' => 'action', $params['connection']['id'], 'fetchSelectedOrganisationsAction'] : + ['controller' => 'localTools', 'action' => 'action', $params['connection']['id'], 'fetchSelectedOrganisationsAction?ids=all'] ] ]; } elseif ($params['request']->is(['post'])) { $successes = 0; $errors = 0; - foreach ($ids as $id) { - $response = $this->getData('/organisations/view/' . $id, $params); - $result = $this->captureOrganisation($response->getJson()['Organisation']); + if (!is_array($ids) && $ids === 'all') { + $response = $this->getData('/organisations/index/scope:all', $params); if ($response->getStatusCode() == 200) { - $successes++; - } else { - $errors++; + $orgs = $response->getJson(); + foreach ($orgs as $org) { + $result = $this->captureOrganisation($org['Organisation']); + if ($result) { + $successes++; + } else { + $errors++; + } + } + } + } else { + foreach ($ids as $id) { + $response = $this->getData('/organisations/view/' . $id, $params); + $result = $this->captureOrganisation($response->getJson()['Organisation']); + if ($response->getStatusCode() == 200) { + $successes++; + } else { + $errors++; + } } } if ($successes) {