fix: [restSearch] Avoiding useless stix python script calls on empty files

pull/3766/head
chrisr3d 2018-10-05 14:58:39 +02:00
parent d65482c297
commit a42b3ab756
No known key found for this signature in database
GPG Key ID: 6BBED1B63A6D639F
1 changed files with 17 additions and 6 deletions

View File

@ -6,9 +6,11 @@ class StixExport
protected $__end_of_cmd = ' 2>' . APP . 'tmp/logs/exec-errors.log'; protected $__end_of_cmd = ' 2>' . APP . 'tmp/logs/exec-errors.log';
protected $__return_type = null; protected $__return_type = null;
private $__tmp_dir = null; private $__current_filename = null;
private $__empty_file = null;
private $__framing = null; private $__framing = null;
private $__stix_file = null; private $__stix_file = null;
private $__tmp_dir = null;
private $__tmp_file = null; private $__tmp_file = null;
private $__n_attributes = 0; private $__n_attributes = 0;
private $__filenames = array(); private $__filenames = array();
@ -27,6 +29,7 @@ class StixExport
if ($this->__n_attributes + $attributes_count < $this->__attributes_limit) { if ($this->__n_attributes + $attributes_count < $this->__attributes_limit) {
($this->__n_attributes == 0) ? $this->__tmp_file->append($event) : $this->__tmp_file->append(',' . $event); ($this->__n_attributes == 0) ? $this->__tmp_file->append($event) : $this->__tmp_file->append(',' . $event);
$this->__n_attributes += $attributes_count; $this->__n_attributes += $attributes_count;
$this->__empty_file = false;
} else { } else {
if ($attributes_count > $this->__attributes_limit) { if ($attributes_count > $this->__attributes_limit) {
$randomFileName = $this->generateRandomFileName(); $randomFileName = $this->generateRandomFileName();
@ -37,6 +40,7 @@ class StixExport
} else { } else {
$this->__tmp_file->append(']}'); $this->__tmp_file->append(']}');
$this->__tmp_file->close(); $this->__tmp_file->close();
array_push($this->__filenames, $this->__current_filename);
$this->__initialize_misp_file(); $this->__initialize_misp_file();
$this->__tmp_file->append($event); $this->__tmp_file->append($event);
$this->__n_attributes = $attributes_count; $this->__n_attributes = $attributes_count;
@ -53,6 +57,7 @@ class StixExport
$this->__tmp_dir = $this->__scripts_dir . 'tmp/'; $this->__tmp_dir = $this->__scripts_dir . 'tmp/';
$this->__framing = json_decode(shell_exec($framing_cmd), true); $this->__framing = json_decode(shell_exec($framing_cmd), true);
$this->__stix_file = new File($this->__tmp_dir . $randomFileName . '.stix'); $this->__stix_file = new File($this->__tmp_dir . $randomFileName . '.stix');
unset($randomFileName);
$this->__stix_file->write($this->__framing['header']); $this->__stix_file->write($this->__framing['header']);
$this->__initialize_misp_file(); $this->__initialize_misp_file();
return ''; return '';
@ -60,8 +65,14 @@ class StixExport
public function footer() public function footer()
{ {
$this->__tmp_file->append(']}'); if ($this->__empty_file) {
$this->__tmp_file->close(); $this->__tmp_file->close();
$this->__tmp_file->delete();
} else {
$this->__tmp_file->append(']}');
$this->__tmp_file->close();
array_push($this->__filenames, $this->__current_filename);
}
foreach ($this->__filenames as $filename) { foreach ($this->__filenames as $filename) {
$result = $this->__parse_misp_events($filename); $result = $this->__parse_misp_events($filename);
$decoded = json_decode($result, true); $decoded = json_decode($result, true);
@ -91,10 +102,10 @@ class StixExport
private function __initialize_misp_file() private function __initialize_misp_file()
{ {
$randomFileName = $this->generateRandomFileName(); $this->__current_filename = $this->generateRandomFileName();
$this->__tmp_file = new File($this->__tmp_dir . $randomFileName, true, 0644); $this->__tmp_file = new File($this->__tmp_dir . $this->__current_filename, true, 0644);
$this->__tmp_file->write('{"response": ['); $this->__tmp_file->write('{"response": [');
array_push($this->__filenames, $randomFileName); $this->__empty_file = true;
} }
public function generateRandomFileName() public function generateRandomFileName()