Merge branch 'develop' of github.com:MISP/MISP into develop

pull/6898/head
Alexandre Dulaunoy 2021-01-20 10:46:51 +01:00
commit 70a8e8717b
No known key found for this signature in database
GPG Key ID: 09E2CD4944E6CBCD
2 changed files with 30 additions and 31 deletions

View File

@ -376,7 +376,11 @@ class Server extends AppModel
private function __checkIfPulledEventExistsAndAddOrUpdate($event, $eventId, &$successes, &$fails, $eventModel, $server, $user, $jobId, $force = false)
{
// check if the event already exist (using the uuid)
$existingEvent = $eventModel->find('first', array('conditions' => array('Event.uuid' => $event['Event']['uuid'])));
$existingEvent = $eventModel->find('first', [
'conditions' => ['Event.uuid' => $event['Event']['uuid']],
'recursive' => -1,
'fields' => ['id', 'locked'],
]);
$passAlong = $server['Server']['id'];
if (!$existingEvent) {
// add data for newly imported events
@ -812,10 +816,7 @@ class Server extends AppModel
public function serverEventsOverlap()
{
$servers = $this->find('all', [
'conditions' => ['OR' => [
'pull' => 1,
// 'push' => 1,
]],
'conditions' => ['Server.pull' => 1],
'order' => ['Server.id ASC'],
'recursive' => -1,
]);
@ -825,14 +826,16 @@ class Server extends AppModel
}
$serverUuids = [];
foreach ($servers as $server) {
foreach ($servers as &$server) {
try {
$uuids = $this->getEventIdsFromServer($server, true, null, true, 'events', true);
$serverUuids[$server['Server']['id']] = $uuids;
$uuids = $this->getEventIdsFromServer($server, true, null, true);
$serverUuids[$server['Server']['id']] = array_flip($uuids);
$server['Server']['events_count'] = count($uuids);
} catch (Exception $e) {
$this->logException("Could not get event UUIDs for server {$server['Server']['id']}", $e);
}
}
unset($server);
$compared = [];
foreach ($servers as $server) {
@ -848,8 +851,8 @@ class Server extends AppModel
continue;
}
$intersect = count(array_intersect($serverUuids[$server['Server']['id']], $serverUuids[$server2['Server']['id']]));
$percentage = round(100 * $intersect / count($serverUuids[$server['Server']['id']]));
$intersect = count(array_intersect_key($serverUuids[$server['Server']['id']], $serverUuids[$server2['Server']['id']]));
$percentage = round(100 * $intersect / $server['Server']['events_count']);
$compared[$server['Server']['id']][$server2['Server']['id']] = [
'percentage' => $percentage,
'events' => $intersect,

View File

@ -1,7 +1,11 @@
<?php
$serverTemplate = array(
'id', 'name', 'url'
);
$generatePopover = function (array $server) {
$popover = '';
foreach (['id' => __('ID'), 'name' => __('Name'), 'url' => __('URL'), 'events_count' => __('Events count')] as $key => $name) {
$popover .= '<span class=\'bold\'>' . $name . '</span>: <span class=\'bold blue\'>' . h($server['Server'][$key]) . '</span><br>';
}
return $popover;
};
?>
<div class="index">
<h2><?php echo __('Server events overlap analysis matrix');?></h2>
@ -11,16 +15,12 @@
<div>
<table class="table table-striped table-hover table-condensed" style="width:100px;">
<tr>
<th>&nbsp;</th>
<th></th>
<?php
foreach ($servers as $server):
$popover = '';
foreach ($serverTemplate as $element) {
$popover .= '<span class=\'bold\'>' . Inflector::humanize($element) . '</span>: <span class=\'bold blue\'>' . h($server['Server'][$element]) . '</span><br>';
}
?>
<th>
<div data-toggle="popover" data-content="<?= $popover; ?>" data-trigger="hover">
<th style="text-align: center">
<div data-toggle="popover" data-content="<?= $generatePopover($server); ?>" data-trigger="hover">
<?= 'S' . h($server['Server']['id']) ?>
</div>
</th>
@ -30,15 +30,11 @@
</tr>
<?php
foreach ($servers as $item):
$popover = '';
foreach ($serverTemplate as $element) {
$popover .= '<span class=\'bold\'>' . Inflector::humanize($element) . '</span>: <span class=\'bold blue\'>' . h($item['Server'][$element]) . '</span><br>';
}
?>
<tr>
<td class="short">
<div data-toggle="popover" data-content="<?php echo $popover;?>" data-trigger="hover">
<?= __('Server #%s: %s', h($item['Server']['id']), h($item['Server']['name'])) ?>
<div data-toggle="popover" data-content="<?= $generatePopover($item) ?>" data-trigger="hover">
<?= __('<b>S%s</b>: %s', h($item['Server']['id']), h($item['Server']['name'])) ?>
</div>
</td>
<?php
@ -68,11 +64,11 @@
$popover = __('%s % of the events of %s is contained in %s (%s matching events)', $percentage, $item['Server']['name'], $item2['Server']['name'], $count);
}
?>
<td class="<?= h($class); ?>">
<div data-toggle="popover" data-content="<?php echo h($popover);?>" data-trigger="hover">
<?= $percentage === null ? '-' : h($percentage) . '&nbsp;%' ?>
</div>
</td>
<td class="<?= $class ?>" style="text-align: center">
<div data-toggle="popover" data-content="<?= h($popover) ?>" data-trigger="hover">
<?= $percentage === null ? '&ndash;' : h($percentage) . '&nbsp;%' ?>
</div>
</td>
<?php
endforeach;
?>