mirror of https://github.com/MISP/MISP
new: [API] Added CSV as return format for event index
parent
572b0d13a4
commit
1187fb2a27
|
@ -505,10 +505,19 @@ class AppController extends Controller
|
|||
return $this->request->header('Accept') === 'application/json' || $this->RequestHandler->prefers() === 'json';
|
||||
}
|
||||
|
||||
protected function _isCsv($data=false)
|
||||
{
|
||||
if ($this->params['ext'] === 'csv' || $this->request->header('Accept') === 'application/csv' || $this->RequestHandler->prefers() === 'csv') {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
protected function _isRest()
|
||||
{
|
||||
$api = $this->__isApiFunction($this->request->params['controller'], $this->request->params['action']);
|
||||
if (isset($this->RequestHandler) && ($api || $this->RequestHandler->isXml() || $this->_isJson())) {
|
||||
if (isset($this->RequestHandler) && ($api || $this->RequestHandler->isXml() || $this->_isJson() || $this->_isCsv())) {
|
||||
if ($this->_isJson()) {
|
||||
if (!empty($this->request->input()) && empty($this->request->input('json_decode'))) {
|
||||
throw new MethodNotAllowedException('Invalid JSON input. Make sure that the JSON input is a correctly formatted JSON string. This request has been blocked to avoid an unfiltered request.');
|
||||
|
|
|
@ -818,6 +818,11 @@ class EventsController extends AppController
|
|||
$this->set('analysisLevels', $this->Event->analysisLevels);
|
||||
$this->set('distributionLevels', $this->Event->distributionLevels);
|
||||
$this->set('shortDist', $this->Event->shortDist);
|
||||
if ($this->params['ext'] === 'csv') {
|
||||
App::uses('CsvExport', 'Export');
|
||||
$export = new CsvExport();
|
||||
return $this->RestResponse->viewData($export->eventIndex($events), 'csv');
|
||||
}
|
||||
if ($this->request->is('ajax')) {
|
||||
$this->autoRender = false;
|
||||
$this->layout = false;
|
||||
|
|
|
@ -918,7 +918,7 @@ class ServersController extends AppController
|
|||
$this->set('files', $files);
|
||||
}
|
||||
// Only run this check on the diagnostics tab
|
||||
if ($tab == 'diagnostics' || $tab == 'download') {
|
||||
if ($tab == 'diagnostics' || $tab == 'download' || $this->_isRest()) {
|
||||
$php_ini = php_ini_loaded_file();
|
||||
$this->set('php_ini', $php_ini);
|
||||
$advanced_attachments = shell_exec($this->Server->getPythonVersion() . ' ' . APP . 'files/scripts/generate_file_objects.py -c');
|
||||
|
@ -1022,7 +1022,7 @@ class ServersController extends AppController
|
|||
$worker_array = $this->Server->workerDiagnostics($workerIssueCount);
|
||||
}
|
||||
$this->set('worker_array', $worker_array);
|
||||
if ($tab == 'download') {
|
||||
if ($tab == 'download' || $this->_isRest()) {
|
||||
foreach ($dumpResults as $key => $dr) {
|
||||
unset($dumpResults[$key]['description']);
|
||||
}
|
||||
|
@ -1806,4 +1806,6 @@ misp.direct_call(relative_path, body)
|
|||
$this->render('ajax/get_api_info');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -207,4 +207,34 @@ class CsvExport
|
|||
return '';
|
||||
}
|
||||
|
||||
public function eventIndex($events)
|
||||
{
|
||||
$fields = array(
|
||||
'id', 'date', 'info', 'tags', 'uuid', 'published', 'analysis', 'attribute_count', 'orgc_id', 'orgc_name', 'orgc_uuid', 'timestamp', 'distribution', 'sharing_group_id', 'threat_level_id',
|
||||
'publish_timestamp', 'extends_uuid'
|
||||
);
|
||||
$result = implode(',', $fields) . PHP_EOL;
|
||||
foreach ($events as $key => $event) {
|
||||
$event['tags'] = '';
|
||||
if (!empty($event['EventTag'])) {
|
||||
$tags = array();
|
||||
foreach ($event['EventTag'] as $et) {
|
||||
$tags[] = $et['Tag']['name'];
|
||||
}
|
||||
$tags = implode(', ', $tags);
|
||||
} else {
|
||||
$tags = '';
|
||||
}
|
||||
$event['Event']['tags'] = $tags;
|
||||
$event['Event']['orgc_name'] = $event['Orgc']['name'];
|
||||
$event['Event']['orgc_uuid'] = $event['Orgc']['uuid'];
|
||||
$current = array();
|
||||
foreach ($fields as $field) {
|
||||
$current[] = $this->__escapeCSVField($event['Event'][$field]);
|
||||
}
|
||||
$result .= implode(', ', $current) . PHP_EOL;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue