2015-02-16 17:31:32 +01:00
|
|
|
<?php
|
|
|
|
class JSONConverterTool {
|
|
|
|
public function event2JSON($event, $isSiteAdmin=false) {
|
2016-09-12 12:09:19 +02:00
|
|
|
$toRearrange = array('Org', 'Orgc', 'SharingGroup', 'Attribute', 'ShadowAttribute', 'RelatedAttribute', 'RelatedEvent');
|
|
|
|
foreach ($toRearrange as $object) {
|
|
|
|
if (isset($event[$object])) {
|
|
|
|
$event['Event'][$object] = $event[$object];
|
|
|
|
unset($event[$object]);
|
|
|
|
}
|
|
|
|
}
|
2016-06-04 01:08:16 +02:00
|
|
|
|
2015-04-13 17:52:04 +02:00
|
|
|
if (isset($event['EventTag'])) {
|
|
|
|
foreach ($event['EventTag'] as $k => $tag) {
|
|
|
|
$event['Event']['Tag'][$k] = $tag['Tag'];
|
|
|
|
}
|
|
|
|
}
|
2016-09-12 12:09:19 +02:00
|
|
|
|
2015-02-16 17:31:32 +01:00
|
|
|
//
|
|
|
|
// cleanup the array from things we do not want to expose
|
|
|
|
//
|
|
|
|
unset($event['Event']['user_id']);
|
|
|
|
// hide the org field is we are not in showorg mode
|
|
|
|
if (!Configure::read('MISP.showorg') && !$isSiteAdmin) {
|
|
|
|
unset($event['Event']['org']);
|
|
|
|
unset($event['Event']['orgc']);
|
|
|
|
unset($event['Event']['from']);
|
|
|
|
}
|
2016-06-04 01:08:16 +02:00
|
|
|
|
2015-02-16 17:31:32 +01:00
|
|
|
if (isset($event['Event']['Attribute'])) {
|
|
|
|
// remove value1 and value2 from the output and remove invalid utf8 characters for the xml parser
|
|
|
|
foreach ($event['Event']['Attribute'] as $key => $value) {
|
|
|
|
unset($event['Event']['Attribute'][$key]['value1']);
|
|
|
|
unset($event['Event']['Attribute'][$key]['value2']);
|
|
|
|
unset($event['Event']['Attribute'][$key]['category_order']);
|
2016-04-08 16:47:22 +02:00
|
|
|
if (isset($event['RelatedAttribute'][$value['id']])) {
|
|
|
|
$event['Event']['Attribute'][$key]['RelatedAttribute'] = $event['Event']['RelatedAttribute'][$value['id']];
|
|
|
|
foreach ($event['Event']['Attribute'][$key]['RelatedAttribute'] as &$ra) {
|
|
|
|
$ra = array('Attribute' => $ra);
|
|
|
|
}
|
|
|
|
}
|
2015-02-16 17:31:32 +01:00
|
|
|
}
|
|
|
|
}
|
2015-10-15 17:39:17 +02:00
|
|
|
unset($event['Event']['RelatedAttribute']);
|
2015-02-16 17:31:32 +01:00
|
|
|
if (isset($event['Event']['RelatedEvent'])) {
|
|
|
|
foreach ($event['Event']['RelatedEvent'] as $key => $value) {
|
2016-04-08 16:47:22 +02:00
|
|
|
unset($event['Event']['RelatedEvent'][$key]['Event']['user_id']);
|
2015-02-16 17:31:32 +01:00
|
|
|
if (!Configure::read('MISP.showorg') && !$isSiteAdmin) {
|
2016-04-08 16:47:22 +02:00
|
|
|
unset($event['Event']['RelatedEvent'][$key]['Event']['org']);
|
|
|
|
unset($event['Event']['RelatedEvent'][$key]['Event']['orgc']);
|
2015-02-16 17:31:32 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$result = array('Event' => $event['Event']);
|
2016-04-08 16:47:22 +02:00
|
|
|
if (isset($event['errors'])) $result = array_merge($result, array('errors' => $event['errors']));
|
2016-04-18 10:06:16 +02:00
|
|
|
return json_encode($result, JSON_PRETTY_PRINT);
|
2015-02-16 17:31:32 +01:00
|
|
|
}
|
2016-06-04 01:08:16 +02:00
|
|
|
|
2015-12-01 15:39:12 +01:00
|
|
|
public function arrayPrinter($array, $root = true) {
|
2015-11-30 02:28:07 +01:00
|
|
|
if (is_array($array)) {
|
|
|
|
$resultArray = array();
|
|
|
|
foreach ($array as $k => $element) {
|
2015-12-01 15:39:12 +01:00
|
|
|
$temp = $this->arrayPrinter($element, false);
|
2015-11-30 02:28:07 +01:00
|
|
|
if (!is_array($temp)) {
|
2016-06-04 01:10:45 +02:00
|
|
|
$resultArray[] = '[' . $k .']' . $temp;
|
2015-11-30 02:28:07 +01:00
|
|
|
} else {
|
|
|
|
foreach ($temp as &$t) $resultArray[] = '[' . $k . ']' . $t;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else $resultArray = ': ' . $array . PHP_EOL;
|
|
|
|
if ($root) {
|
|
|
|
$text = '';
|
|
|
|
foreach ($resultArray as &$r) $text .= $r;
|
|
|
|
return $text;
|
|
|
|
} else return $resultArray;
|
|
|
|
}
|
2016-06-04 01:08:16 +02:00
|
|
|
|
2016-05-02 10:31:40 +02:00
|
|
|
public function eventCollection2Format($events, $isSiteAdmin=false) {
|
|
|
|
$results = array();
|
|
|
|
foreach ($events as &$event) $results[] = $this->event2JSON($event, $isSiteAdmin);
|
|
|
|
return implode(',' . PHP_EOL, $results);
|
|
|
|
}
|
2016-06-04 01:08:16 +02:00
|
|
|
|
2016-05-02 10:31:40 +02:00
|
|
|
public function frameCollection($input, $mispVersion = false) {
|
|
|
|
$result = '{"response":[';
|
|
|
|
$result .= $input;
|
|
|
|
if ($mispVersion) $result .= ',' . PHP_EOL . '{"xml_version":"' . $mispVersion . '"}' . PHP_EOL;
|
|
|
|
return $result . ']}';
|
|
|
|
}
|
2016-06-06 10:09:55 +02:00
|
|
|
}
|