new: [internal] filter "type" added for the internal fetcher

- appends email as a type if email-src/email-dst are found
pull/6208/head
iglocska 2020-09-03 12:03:59 +02:00
parent b14e5fbb0e
commit 6fe5732700
No known key found for this signature in database
GPG Key ID: BEA224F1FEF113AC
1 changed files with 31 additions and 1 deletions

View File

@ -1641,7 +1641,7 @@ class Event extends AppModel
'Attribute' => array(
'value' => array('function' => 'set_filter_value'),
'category' => array('function' => 'set_filter_simple_attribute'),
'type' => array('function' => 'set_filter_simple_attribute'),
'type' => array('function' => 'set_filter_type'),
'object_relation' => array('function' => 'set_filter_simple_attribute'),
'tags' => array('function' => 'set_filter_tags', 'pop' => true),
'ignore' => array('function' => 'set_filter_ignore'),
@ -2718,6 +2718,36 @@ class Event extends AppModel
return $conditions;
}
public function set_filter_type(&$params, $conditions, $options)
{
if (!empty($params[$options['filter']])) {
$params[$options['filter']] = $this->convert_filters($params[$options['filter']]);
if (!empty(Configure::read('MISP.attribute_filters_block_only'))) {
if ($options['context'] === 'Event' && !empty($params[$options['filter']]['OR'])) {
unset($params[$options['filter']]['OR']);
}
}
if (!empty($params[$options['filter']])) {
foreach (['OR', 'NOT'] as $operator) {
if (
!empty($params[$options['filter']][$operator]) &&
(
in_array('email-src', $params[$options['filter']][$operator]) ||
in_array('email-dst', $params[$options['filter']][$operator])
) && (
!in_array('email', $params[$options['filter']][$operator])
)
) {
$params[$options['filter']][$operator][] = 'email';
}
}
}
$conditions = $this->generic_add_filter($conditions, $params[$options['filter']], 'Attribute.' . $options['filter']);
}
return $conditions;
}
public function set_filter_simple_attribute(&$params, $conditions, $options)
{
if (!empty($params[$options['filter']])) {