mirror of https://github.com/MISP/MISP
new: Added new flag to events/restSearch to disable sharing group loading
- sgReferenceOnly: Will only load the sharing_group_id not the actual sharing group datapull/2041/merge
parent
406415b6b6
commit
e7f2944918
|
@ -2459,7 +2459,7 @@ class EventsController extends AppController {
|
|||
// the last 4 fields accept the following operators:
|
||||
// && - you can use && between two search values to put a logical OR between them. for value, 1.1.1.1&&2.2.2.2 would find attributes with the value being either of the two.
|
||||
// ! - you can negate a search term. For example: google.com&&!mail would search for all attributes with value google.com but not ones that include mail. www.google.com would get returned, mail.google.com wouldn't.
|
||||
public function restSearch($key = 'download', $value = false, $type = false, $category = false, $org = false, $tags = false, $searchall = false, $from = false, $to = false, $last = false, $eventid = false, $withAttachments = false, $metadata = false, $uuid = false, $publish_timestamp = false, $timestamp = false, $published = false, $enforceWarninglist = false) {
|
||||
public function restSearch($key = 'download', $value = false, $type = false, $category = false, $org = false, $tags = false, $searchall = false, $from = false, $to = false, $last = false, $eventid = false, $withAttachments = false, $metadata = false, $uuid = false, $publish_timestamp = false, $timestamp = false, $published = false, $enforceWarninglist = false, $sgReferenceOnly = false) {
|
||||
if ($key != null && strlen($key) == 40) {
|
||||
if (!$this->checkAuthUser($key)) {
|
||||
throw new UnauthorizedException('This authentication key is not authorized to be used for exports. Contact your administrator.');
|
||||
|
@ -2485,7 +2485,7 @@ class EventsController extends AppController {
|
|||
if (!isset($data['request'])) {
|
||||
$data['request'] = $data;
|
||||
}
|
||||
$paramArray = array('value', 'type', 'category', 'org', 'tags', 'searchall', 'from', 'to', 'last', 'eventid', 'withAttachments', 'metadata', 'uuid', 'published', 'publish_timestamp', 'timestamp', 'enforceWarninglist');
|
||||
$paramArray = array('value', 'type', 'category', 'org', 'tags', 'searchall', 'from', 'to', 'last', 'eventid', 'withAttachments', 'metadata', 'uuid', 'published', 'publish_timestamp', 'timestamp', 'enforceWarninglist', 'sgReferenceOnly');
|
||||
foreach ($paramArray as $p) {
|
||||
if (isset($data['request'][$p])) {
|
||||
${$p} = $data['request'][$p];
|
||||
|
@ -2494,7 +2494,7 @@ class EventsController extends AppController {
|
|||
}
|
||||
}
|
||||
}
|
||||
$simpleFalse = array('value' , 'type', 'category', 'org', 'tags', 'searchall', 'from', 'to', 'last', 'eventid', 'withAttachments', 'uuid', 'publish_timestamp', 'timestamp', 'enforceWarninglist');
|
||||
$simpleFalse = array('value' , 'type', 'category', 'org', 'tags', 'searchall', 'from', 'to', 'last', 'eventid', 'withAttachments', 'uuid', 'publish_timestamp', 'timestamp', 'enforceWarninglist', 'sgReferenceOnly');
|
||||
foreach ($simpleFalse as $sF) {
|
||||
if (!is_array(${$sF}) && (${$sF} === 'null' || ${$sF} == '0' || ${$sF} === false || strtolower(${$sF}) === 'false')) {
|
||||
${$sF} = false;
|
||||
|
@ -2564,7 +2564,8 @@ class EventsController extends AppController {
|
|||
'eventid' => $currentEventId,
|
||||
'includeAttachments' => $withAttachments,
|
||||
'metadata' => $metadata,
|
||||
'enforceWarninglist' => $enforceWarninglist
|
||||
'enforceWarninglist' => $enforceWarninglist,
|
||||
'sgReferenceOnly' => $sgReferenceOnly
|
||||
));
|
||||
if (!empty($result)) {
|
||||
$result = $this->Whitelist->removeWhitelistedFromArray($result, false);
|
||||
|
|
|
@ -1203,7 +1203,7 @@ class Event extends AppModel {
|
|||
// includeAttachments: true will attach the attachments to the attributes in the data field
|
||||
public function fetchEvent($user, $options = array()) {
|
||||
if (isset($options['Event.id'])) $options['eventid'] = $options['Event.id'];
|
||||
$possibleOptions = array('eventid', 'idList', 'tags', 'from', 'to', 'last', 'to_ids', 'includeAllTags', 'includeAttachments', 'event_uuid', 'distribution', 'sharing_group_id', 'disableSiteAdmin', 'metadata', 'includeGalaxy', 'enforceWarninglist');
|
||||
$possibleOptions = array('eventid', 'idList', 'tags', 'from', 'to', 'last', 'to_ids', 'includeAllTags', 'includeAttachments', 'event_uuid', 'distribution', 'sharing_group_id', 'disableSiteAdmin', 'metadata', 'includeGalaxy', 'enforceWarninglist', 'sgReferenceOnly');
|
||||
if (!isset($options['excludeGalaxy']) || !$options['excludeGalaxy']) {
|
||||
$this->GalaxyCluster = ClassRegistry::init('GalaxyCluster');
|
||||
}
|
||||
|
@ -1338,7 +1338,8 @@ class Event extends AppModel {
|
|||
if (!$options['includeAllTags']) $tagConditions = array('exportable' => 1);
|
||||
else $tagConditions = array();
|
||||
|
||||
$params = array('conditions' => $conditions,
|
||||
$params = array(
|
||||
'conditions' => $conditions,
|
||||
'recursive' => 0,
|
||||
'fields' => $fields,
|
||||
'contain' => array(
|
||||
|
@ -1363,6 +1364,10 @@ class Event extends AppModel {
|
|||
)
|
||||
)
|
||||
);
|
||||
if ($options['sgReferenceOnly']) {
|
||||
unset($params['contain']['SharingGroup']);
|
||||
unset($params['contain']['Attribute']['SharingGroup']);
|
||||
}
|
||||
if ($options['metadata']) {
|
||||
unset($params['contain']['Attribute']);
|
||||
unset($params['contain']['ShadowAttribute']);
|
||||
|
@ -1385,14 +1390,16 @@ class Event extends AppModel {
|
|||
$event['Event']['event_creator_email'] = $UserEmail;
|
||||
}
|
||||
// unset the empty sharing groups that are created due to the way belongsTo is handled
|
||||
if (isset($event['SharingGroup']['SharingGroupServer'])) {
|
||||
foreach ($event['SharingGroup']['SharingGroupServer'] as &$sgs) {
|
||||
if ($sgs['server_id'] == 0) {
|
||||
$sgs['Server'] = array('id' => '0', 'url' => Configure::read('MISP.baseurl'), 'name' => Configure::read('MISP.baseurl'));
|
||||
if (isset($event['SharingGroup'])) {
|
||||
if (isset($event['SharingGroup']['SharingGroupServer'])) {
|
||||
foreach ($event['SharingGroup']['SharingGroupServer'] as &$sgs) {
|
||||
if ($sgs['server_id'] == 0) {
|
||||
$sgs['Server'] = array('id' => '0', 'url' => Configure::read('MISP.baseurl'), 'name' => Configure::read('MISP.baseurl'));
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($event['SharingGroup']['id'] == null) unset($event['SharingGroup']);
|
||||
}
|
||||
if ($event['SharingGroup']['id'] == null) unset($event['SharingGroup']);
|
||||
$event['Galaxy'] = array();
|
||||
// unset empty event tags that got added because the tag wasn't exportable
|
||||
if (!empty($event['EventTag'])) {
|
||||
|
@ -1456,10 +1463,12 @@ class Event extends AppModel {
|
|||
$event['Attribute'][$key]['data'] = $encodedFile;
|
||||
}
|
||||
}
|
||||
if (isset($attribute['SharingGroup']['SharingGroupServer'])) {
|
||||
foreach ($attribute['SharingGroup']['SharingGroupServer'] as &$sgs) {
|
||||
if ($sgs['server_id'] == 0) {
|
||||
$sgs['Server'] = array('id' => '0', 'url' => Configure::read('MISP.baseurl'), 'name' => Configure::read('MISP.baseurl'));
|
||||
if (isset($attribute['SharingGroup'])) {
|
||||
if (isset($attribute['SharingGroup']['SharingGroupServer'])) {
|
||||
foreach ($attribute['SharingGroup']['SharingGroupServer'] as &$sgs) {
|
||||
if ($sgs['server_id'] == 0) {
|
||||
$sgs['Server'] = array('id' => '0', 'url' => Configure::read('MISP.baseurl'), 'name' => Configure::read('MISP.baseurl'));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue