fix: show error message instead of fatal error when diagnostics tool fails to run

pull/7997/head
Luciano Righetti 2021-11-26 11:45:10 +01:00
parent 49f938f731
commit 019bba81af
2 changed files with 33 additions and 7 deletions

View File

@ -3204,9 +3204,18 @@ class Server extends AppModel
public function yaraDiagnostics(&$diagnostic_errors)
{
$scriptFile = APP . 'files' . DS . 'scripts' . DS . 'yaratest.py';
$scriptResult = ProcessTool::execute([ProcessTool::pythonBin(), $scriptFile]);
$scriptResult = json_decode($scriptResult, true);
return array('operational' => $scriptResult['success'], 'plyara' => $scriptResult['plyara']);
try {
$scriptResult = ProcessTool::execute([ProcessTool::pythonBin(), $scriptFile]);
$scriptResult = json_decode($scriptResult, true);
} catch (Exception $exception) {
$this->logException('Failed to run yara diagnostics.', $exception);
return array(
'operational' => 0,
'plyara' => 0,
'test_run' => false
);
}
return array('operational' => $scriptResult['success'], 'plyara' => $scriptResult['plyara'], 'test_run' => true);
}
public function stixDiagnostics(&$diagnostic_errors)
@ -3214,7 +3223,17 @@ class Server extends AppModel
$expected = array('stix' => '>1.2.0.11', 'cybox' => '>2.1.0.21', 'mixbox' => '>1.0.5', 'maec' => '>4.1.0.17', 'stix2' => '>3.0.0', 'pymisp' => '>2.4.120');
// check if the STIX and Cybox libraries are working using the test script stixtest.py
$scriptFile = APP . 'files' . DS . 'scripts' . DS . 'stixtest.py';
$scriptResult = ProcessTool::execute([ProcessTool::pythonBin(), $scriptFile]);
try {
$scriptResult = ProcessTool::execute([ProcessTool::pythonBin(), $scriptFile]);
} catch (Exception $exception) {
$this->logException('Failed to run STIX diagnostics.', $exception);
return [
'operational' => 0,
'invalid_version' => false,
'test_run' => false
];
}
try {
$scriptResult = $this->jsonDecode($scriptResult);
} catch (Exception $e) {
@ -3237,6 +3256,7 @@ class Server extends AppModel
$result = [
'operational' => $scriptResult['operational'],
'invalid_version' => false,
'test_run' => true
];
foreach ($expected as $package => $expectedVersion) {
$result[$package]['version'] = $scriptResult[$package];

View File

@ -335,7 +335,9 @@
<?php else: ?>
<b><?= __('Current libraries status') ?>:</b>
<?php if ($stix['operational'] === 0): ?>
<?php if ($stix['test_run'] === false): ?>
<b class="red bold"><?= __('Failed to run STIX diagnostics tool.') ?></b>
<?php elseif ($stix['operational'] === 0): ?>
<b class="red bold"><?= __('Some of the libraries related to STIX are not installed. Make sure that all libraries listed below are correctly installed.') ?></b>
<?php elseif ($stix['invalid_version']): ?>
<span class="orange"><?= __('Some versions should be updated.') ?></span>
@ -369,10 +371,14 @@
<div class="diagnostics-box">
<?php
$colour = 'green';
$message = __('OK');
if ($yaraStatus['operational'] == 0) {
if ($yaraStatus['test_run'] === false) {
$colour = 'red';
$message = __('Failed to run yara diagnostics tool.');
}elseif ($yaraStatus['operational'] == 0) {
$colour = 'red';
$message = __('Invalid plyara version / plyara not installed. Please run pip3 install plyara');
}else{
$message = __('OK');
}
echo __('plyara library installed') . '…<span style="color:' . $colour . ';">' . $message . '</span>';
?>