mirror of https://github.com/MISP/MISP
Merge branch '2.4' into feature/galaxy
commit
1e7dccf272
|
@ -28,6 +28,7 @@ addons:
|
|||
- libxml2-dev
|
||||
- zlib1g-dev
|
||||
- php5-dev
|
||||
- php5-cli
|
||||
- apache2
|
||||
- libapache2-mod-php5
|
||||
- curl
|
||||
|
|
|
@ -1519,9 +1519,9 @@ class AttributesController 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, $from=false, $to=false, $last=false, $eventid=false, $withAttachments=false, $uuid=false) {
|
||||
public function restSearch($key='download', $value=false, $type=false, $category=false, $org=false, $tags=false, $from=false, $to=false, $last=false, $eventid=false, $withAttachments=false, $uuid=false, $publish_timestamp=false) {
|
||||
if ($tags) $tags = str_replace(';', ':', $tags);
|
||||
$simpleFalse = array('value' , 'type', 'category', 'org', 'tags', 'from', 'to', 'last', 'eventid', 'withAttachments', 'uuid');
|
||||
$simpleFalse = array('value' , 'type', 'category', 'org', 'tags', 'from', 'to', 'last', 'eventid', 'withAttachments', 'uuid', 'publish_timestamp');
|
||||
foreach ($simpleFalse as $sF) {
|
||||
if (${$sF} === 'null' || ${$sF} == '0' || ${$sF} === false || strtolower(${$sF}) === 'false') ${$sF} = false;
|
||||
}
|
||||
|
@ -1547,13 +1547,16 @@ class AttributesController extends AppController {
|
|||
} else {
|
||||
throw new BadRequestException('Either specify the search terms in the url, or POST a json array / xml (with the root element being "request" and specify the correct accept and content type headers.');
|
||||
}
|
||||
$paramArray = array('value', 'type', 'category', 'org', 'tags', 'from', 'to', 'last', 'eventid', 'uuid', 'published');
|
||||
if (!isset($data['request'])) {
|
||||
$data['request'] = $data;
|
||||
}
|
||||
$paramArray = array('value', 'type', 'category', 'org', 'tags', 'from', 'to', 'last', 'eventid', 'uuid', 'published', 'publish_timestamp');
|
||||
foreach ($paramArray as $p) {
|
||||
if (isset($data['request'][$p])) ${$p} = $data['request'][$p];
|
||||
else ${$p} = null;
|
||||
}
|
||||
}
|
||||
$simpleFalse = array('value' , 'type', 'category', 'org', 'tags', 'from', 'to', 'last', 'eventid', 'withAttachments', 'uuid');
|
||||
$simpleFalse = array('value' , 'type', 'category', 'org', 'tags', 'from', 'to', 'last', 'eventid', 'withAttachments', 'uuid', 'publish_timestamp');
|
||||
foreach ($simpleFalse as $sF) {
|
||||
if (!is_array(${$sF}) && (${$sF} === 'null' || ${$sF} == '0' || ${$sF} === false || strtolower(${$sF}) === 'false')) ${$sF} = false;
|
||||
}
|
||||
|
@ -1653,6 +1656,14 @@ class AttributesController extends AppController {
|
|||
|
||||
if ($from) $conditions['AND'][] = array('Event.date >=' => $from);
|
||||
if ($to) $conditions['AND'][] = array('Event.date <=' => $to);
|
||||
if ($publish_timestamp) {
|
||||
if (is_array($publish_timestamp)) {
|
||||
$conditions['AND'][] = array('Event.publish_timestamp >=' => $publish_timestamp[0]);
|
||||
$conditions['AND'][] = array('Event.publish_timestamp <=' => $publish_timestamp[1]);
|
||||
} else {
|
||||
$conditions['AND'][] = array('Event.publish_timestamp >=' => $publish_timestamp);
|
||||
}
|
||||
}
|
||||
if ($last) $conditions['AND'][] = array('Event.publish_timestamp >=' => $last);
|
||||
if ($published) $conditions['AND'][] = array('Event.published' => $published);
|
||||
|
||||
|
|
|
@ -2436,7 +2436,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) {
|
||||
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) {
|
||||
if ($key != 'download') {
|
||||
if (!$this->checkAuthUser($key)) {
|
||||
throw new UnauthorizedException('This authentication key is not authorized to be used for exports. Contact your administrator.');
|
||||
|
@ -2460,13 +2460,19 @@ class EventsController extends AppController {
|
|||
} else {
|
||||
throw new BadRequestException('Either specify the search terms in the url, or POST a json array / xml (with the root element being "request" and specify the correct headers based on content type.');
|
||||
}
|
||||
$paramArray = array('value', 'type', 'category', 'org', 'tags', 'searchall', 'from', 'to', 'last', 'eventid', 'withAttachments', 'metadata', 'uuid', 'published');
|
||||
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');
|
||||
foreach ($paramArray as $p) {
|
||||
if (isset($data['request'][$p])) ${$p} = $data['request'][$p];
|
||||
else ${$p} = null;
|
||||
if (isset($data['request'][$p])) {
|
||||
${$p} = $data['request'][$p];
|
||||
} else {
|
||||
${$p} = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
$simpleFalse = array('value' , 'type', 'category', 'org', 'tags', 'searchall', 'from', 'to', 'last', 'eventid', 'withAttachments', 'uuid');
|
||||
$simpleFalse = array('value' , 'type', 'category', 'org', 'tags', 'searchall', 'from', 'to', 'last', 'eventid', 'withAttachments', 'uuid', 'publish_timestamp', 'timestamp');
|
||||
foreach ($simpleFalse as $sF) {
|
||||
if (!is_array(${$sF}) && (${$sF} === 'null' || ${$sF} == '0' || ${$sF} === false || strtolower(${$sF}) === 'false')) {
|
||||
${$sF} = false;
|
||||
|
@ -2569,6 +2575,22 @@ class EventsController extends AppController {
|
|||
|
||||
if ($from) $conditions['AND'][] = array('Event.date >=' => $from);
|
||||
if ($to) $conditions['AND'][] = array('Event.date <=' => $to);
|
||||
if ($publish_timestamp) {
|
||||
if (is_array($publish_timestamp)) {
|
||||
$conditions['AND'][] = array('Event.publish_timestamp >=' => $publish_timestamp[0]);
|
||||
$conditions['AND'][] = array('Event.publish_timestamp <=' => $publish_timestamp[1]);
|
||||
} else {
|
||||
$conditions['AND'][] = array('Event.publish_timestamp >=' => $publish_timestamp);
|
||||
}
|
||||
}
|
||||
if ($timestamp) {
|
||||
if (is_array($timestamp)) {
|
||||
$conditions['AND'][] = array('Event.timestamp >=' => $timestamp[0]);
|
||||
$conditions['AND'][] = array('Event.timestamp <=' => $timestamp[1]);
|
||||
} else {
|
||||
$conditions['AND'][] = array('Event.timestamp >=' => $timestamp);
|
||||
}
|
||||
}
|
||||
if ($last) $conditions['AND'][] = array('Event.publish_timestamp >=' => $last);
|
||||
if ($published) $conditions['AND'][] = array('Event.published' => $published);
|
||||
$params = array(
|
||||
|
|
|
@ -737,9 +737,10 @@ class ServersController extends AppController {
|
|||
$writeableDirs = $this->Server->writeableDirsDiagnostics($diagnostic_errors);
|
||||
$writeableFiles = $this->Server->writeableFilesDiagnostics($diagnostic_errors);
|
||||
$readableFiles = $this->Server->readableFilesDiagnostics($diagnostic_errors);
|
||||
$extensions = $this->Server->extensionDiagnostics();
|
||||
|
||||
$viewVars = array(
|
||||
'diagnostic_errors', 'tabs', 'tab', 'issues', 'finalSettings', 'writeableErrors', 'readableErrors', 'writeableDirs', 'writeableFiles', 'readableFiles'
|
||||
'diagnostic_errors', 'tabs', 'tab', 'issues', 'finalSettings', 'writeableErrors', 'readableErrors', 'writeableDirs', 'writeableFiles', 'readableFiles', 'extensions'
|
||||
);
|
||||
$viewVars = array_merge($viewVars, $additionalViewVars);
|
||||
foreach ($viewVars as $viewVar) $this->set($viewVar, ${$viewVar});
|
||||
|
@ -755,7 +756,20 @@ class ServersController extends AppController {
|
|||
foreach ($dumpResults as $key => $dr) {
|
||||
unset($dumpResults[$key]['description']);
|
||||
}
|
||||
$dump = array('gpgStatus' => $gpgErrors[$gpgStatus], 'proxyStatus' => $proxyErrors[$proxyStatus], 'zmqStatus' => $zmqStatus, 'stix' => $stix, 'writeableDirs' => $writeableDirs, 'writeableFiles' => $writeableFiles,'finalSettings' => $dumpResults);
|
||||
$dump = array(
|
||||
'version' => $version,
|
||||
'phpSettings' => $phpSettings,
|
||||
'gpgStatus' => $gpgErrors[$gpgStatus],
|
||||
'proxyStatus' => $proxyErrors[$proxyStatus],
|
||||
'zmqStatus' => $zmqStatus,
|
||||
'stix' => $stix,
|
||||
'moduleStatus' => $moduleStatus,
|
||||
'writeableDirs' => $writeableDirs,
|
||||
'writeableFiles' => $writeableFiles,
|
||||
'readableFiles' => $readableFiles,
|
||||
'finalSettings' => $dumpResults,
|
||||
'extensions' => $extensions
|
||||
);
|
||||
$this->response->body(json_encode($dump, JSON_PRETTY_PRINT));
|
||||
$this->response->type('json');
|
||||
$this->response->download('MISP.report.json');
|
||||
|
@ -768,7 +782,6 @@ class ServersController extends AppController {
|
|||
$priorityErrorColours = array(0 => 'red', 1 => 'yellow', 2 => 'green');
|
||||
$this->set('priorityErrorColours', $priorityErrorColours);
|
||||
$this->set('phpversion', phpversion());
|
||||
$this->set('extensions', $this->Server->extensionDiagnostics());
|
||||
$this->set('phpmin', $this->phpmin);
|
||||
$this->set('phprec', $this->phprec);
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ class ComplexTypeTool {
|
|||
return $this->checkComplexCnC($input);
|
||||
break;
|
||||
case 'freetext':
|
||||
case 'FreeText':
|
||||
return $this->checkFreeText($input, $settings);
|
||||
break;
|
||||
case 'csv':
|
||||
|
@ -122,6 +123,7 @@ class ComplexTypeTool {
|
|||
}
|
||||
|
||||
public function checkFreeText($input, $settings = array()) {
|
||||
$charactersToTrim = array('\'', '"', ',', '(', ')');
|
||||
$iocArray = preg_split("/\r\n|\n|\r|\s|\s+|,|;/", $input);
|
||||
$quotedText = explode('"', $input);
|
||||
foreach ($quotedText as $k => $temp) {
|
||||
|
@ -137,8 +139,9 @@ class ComplexTypeTool {
|
|||
if (!empty($iocArray)) {
|
||||
foreach ($iocArray as $ioc) {
|
||||
$ioc = trim($ioc);
|
||||
$ioc = trim($ioc, '"');
|
||||
$ioc = trim($ioc, ',');
|
||||
foreach ($charactersToTrim as $c) {
|
||||
$ioc = trim($ioc, $c);
|
||||
}
|
||||
$ioc = preg_replace('/\p{C}+/u', '', $ioc);
|
||||
if (empty($ioc)) continue;
|
||||
$typeArray = $this->__resolveType($ioc);
|
||||
|
|
|
@ -2875,6 +2875,9 @@ class Event extends AppModel {
|
|||
if (!is_array($r['values'])) {
|
||||
$r['values'] = array($r['values']);
|
||||
}
|
||||
if (!isset($r['types']) && isset($r['type'])) {
|
||||
$r['types'] = array($r['type']);
|
||||
}
|
||||
if (!is_array($r['types'])) {
|
||||
$r['types'] = array($r['types']);
|
||||
}
|
||||
|
@ -2886,7 +2889,11 @@ class Event extends AppModel {
|
|||
$r['values'] = array($r['values']);
|
||||
}
|
||||
}
|
||||
foreach ($r['values'] as &$value) {
|
||||
foreach ($r['values'] as $valueKey => &$value) {
|
||||
if (empty($value)) {
|
||||
unset($r['values'][$valueKey]);
|
||||
continue;
|
||||
}
|
||||
if (in_array('freetext', $r['types'])) {
|
||||
if (is_array($value)) $value = json_encode($value);
|
||||
$this->Warninglist = ClassRegistry::init('Warninglist');
|
||||
|
@ -2899,6 +2906,7 @@ class Event extends AppModel {
|
|||
$temp[$type] = $type;
|
||||
}
|
||||
$ft['types'] = $temp;
|
||||
$ft['comment'] = isset($r['comment']) ? $r['comment'] : false;
|
||||
}
|
||||
}
|
||||
$r['types'] = array_diff($r['types'], array('freetext'));
|
||||
|
|
|
@ -161,6 +161,7 @@
|
|||
<?php if ($mayModify && !empty($event['objects'])): ?>
|
||||
<th><input class="select_all" type="checkbox" onClick="toggleAllAttributeCheckboxes();" /></th>
|
||||
<?php endif;?>
|
||||
<th class="context hidden"><?php echo $this->Paginator->sort('id');?></th>
|
||||
<th class="context hidden">UUID</th>
|
||||
<th><?php echo $this->Paginator->sort('timestamp', 'Date');?></th>
|
||||
<th><?php echo $this->Paginator->sort('Org.name', 'Org'); ?>
|
||||
|
@ -232,6 +233,7 @@
|
|||
endfor;
|
||||
else:
|
||||
?>
|
||||
<td class="short context hidden <?php echo $extra; ?>"><?php echo $object['objectType'] == 0 ? h($object['id']) : ' '; ?></td>
|
||||
<td class="short context hidden <?php echo $extra; ?>"><?php echo $object['objectType'] == 0 ? h($object['uuid']) : ' '; ?></td>
|
||||
<td class="short <?php echo $extra; ?>">
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_timestamp_solid'; ?>">
|
||||
|
|
Loading…
Reference in New Issue