Merge branch '2.4' into develop

pull/7614/head
iglocska 2021-07-30 15:56:12 +02:00
commit 3c7e13446d
No known key found for this signature in database
GPG Key ID: BEA224F1FEF113AC
2 changed files with 28 additions and 23 deletions

View File

@ -17,6 +17,8 @@ class OpendataExport
private $__scripts_dir = APP . 'files/scripts/';
private $__script_name = 'misp-opendata/opendata.py';
private $__request_object = [];
public function setDefaultFilters($filters)
{
$this->__default_filters = $filters;
@ -58,11 +60,7 @@ class OpendataExport
$simple_query = true;
}
if (!empty($this->__default_filters['portal-url'])) {
if ($simple_query) {
$this->__url = ' --portal_url ' . $this->__default_filters['portal-url'];
} else {
$this->__url .= ' --portal_url ' . $this->__default_filters['portal-url'];
}
$this->__request_object['portal_url'] = $this->__default_filters['portal-url'];
unset($this->__default_filters['portal-url']);
}
return '';
@ -73,7 +71,7 @@ class OpendataExport
$my_server = ClassRegistry::init('Server');
$cmd = $my_server->getPythonVersion() . ' ' . $this->__scripts_dir . $this->__script_name;
if (!empty($this->__auth)) {
$cmd .= ' --auth ' . $this->__auth;
$this->__request_object['auth'] = $this->__auth;
}
if ($this->__search){
return $this->__search_query($cmd);
@ -91,14 +89,15 @@ class OpendataExport
unset($this->__default_filters['returnFormat']);
$body = json_encode($this->__default_filters);
$bodyFilename = $this->__generateSetupFile($body);
$bodyParam = ' --body ' . $bodyFilename;
$levelParam = ' --level ' . strtolower($this->__scope) . 's';
$this->__request_object['body'] = $bodyFilename;
$this->__request_object['level'] = strtolower($this->__scope) . 's';
$setup = json_encode($this->__setup);
$setupFilename = $this->__generateSetupFile($setup);
$setupParam = ' --setup ' . $setupFilename;
$urlParam = ' --misp_url ' . $this->__url;
$cmd .= $bodyParam . $setupParam . $levelParam . $urlParam;
$results = shell_exec($cmd);
$this->__request_object['setup'] = $setupFilename;
$this->__request_object['misp_url'] = $this->__url;
$commandFile = $this->__generateCommandFile();
$results = shell_exec($cmd . ' --query_data ' . $commandFile);
unlink($commandFile);
unlink($bodyFilename);
unlink($setupFilename);
return $results;
@ -120,28 +119,25 @@ class OpendataExport
private function __delete_query($cmd)
{
$cmd .= $this->__url . " -d '" . $this->__setup['dataset'] . "'";
$this->__request_object['delete'] = $this->__setup['dataset'];
return $this->__simple_query($cmd);
}
private function __search_query($cmd)
{
$cmd .= $this->__url . " -s '" . $this->__setup['dataset'] . "'";
$this->__request_object['search'] = $this->__setup['dataset'];
return $this->__simple_query($cmd);
}
private function __simple_query($cmd)
{
if (!empty($this->__setup['resources'])) {
if (is_array($this->__setup['resources'])) {
foreach ($this->__setup['resources'] as $resource) {
$cmd .= " '" . $resource . "'";
}
} else {
$cmd .= " '" . $this->__setup['resources'] . "'";
}
$this->__request_object['search'] = $this->__setup['resources'];
}
return shell_exec($cmd);
$commandFile = $this->__generateCommandFile();
$results = shell_exec($cmd . ' --query_data ' . $commandFile);
unlink($commandFile);
return $results;
}
private function __generateRandomFileName()
@ -157,4 +153,13 @@ class OpendataExport
$tmpFile->close();
return $filename;
}
private function __generateCommandFile()
{
$filename = $this->__scripts_dir . 'tmp/' . $this->__generateRandomFileName() . '.command';
$tmpFile = new File($filename, true, 0644);
$tmpFile->write(json_encode($this->__request_object));
$tmpFile->close();
return $filename;
}
}

@ -1 +1 @@
Subproject commit ecc3b4580d5a050479ae3b404f5492b55e8efe82
Subproject commit f06333e3e834e37a8efe3d24105b51797ccc5a6c