mirror of https://github.com/MISP/MISP
new: Further work on the object UI
- refactoring - added objects fields to object rows - nested rows within the object - massive cleanuppull/2489/head
parent
dd27f118f3
commit
8cd31dd76c
|
@ -209,7 +209,6 @@ class ObjectsController extends AppController {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
$this->set('enabledRows', $enabledRows);
|
||||
$distributionData = $this->MispObject->Event->Attribute->fetchDistributionData($this->Auth->user());
|
||||
$this->set('distributionData', $distributionData);
|
||||
|
|
|
@ -53,6 +53,8 @@ class Event extends AppModel {
|
|||
0 => 'Your organisation only', 1 => 'This community only', 2 => 'Connected communities', 3 => 'All communities', 4 => 'Sharing group'
|
||||
);
|
||||
|
||||
private $__fTool = false;
|
||||
|
||||
public $shortDist = array(0 => 'Organisation', 1 => 'Community', 2 => 'Connected', 3 => 'All', 4 => ' sharing Group');
|
||||
|
||||
public $export_types = array(
|
||||
|
@ -3114,8 +3116,128 @@ class Event extends AppModel {
|
|||
return time() - ($delta * $multiplier);
|
||||
}
|
||||
|
||||
private function __prepareAttributeForView(
|
||||
$attribute,
|
||||
$correlatedAttributes,
|
||||
$correlatedShadowAttributes,
|
||||
$filterType = false,
|
||||
$eventWarnings,
|
||||
$warningLists
|
||||
) {
|
||||
$attribute['objectType'] = 'attribute';
|
||||
$include = true;
|
||||
if ($filterType && !in_array($filterType, array('proposal', 'correlation', 'warning'))) {
|
||||
if (!in_array($attribute['type'], $this->Attribute->typeGroupings[$filterType])) {
|
||||
$include = false;
|
||||
}
|
||||
}
|
||||
if ($filterType === 'proposal' && empty($attribute['ShadowAttribute'])) {
|
||||
$include = false;
|
||||
}
|
||||
if ($filterType === 'correlation' && !in_array($attribute['id'], $correlatedAttributes)) {
|
||||
$include = false;
|
||||
}
|
||||
if (!empty($attribute['ShadowAttribute'])) {
|
||||
$temp = array();
|
||||
foreach ($attribute['ShadowAttribute'] as $k => $proposal) {
|
||||
$result = $this->__prepareProposalForView(
|
||||
$proposal,
|
||||
$correlatedShadowAttributes,
|
||||
false,
|
||||
$eventWarnings,
|
||||
$warningLists
|
||||
);
|
||||
$temp[] = $result['data'];
|
||||
}
|
||||
$attribute['ShadowAttribute'] = $temp;
|
||||
}
|
||||
$attribute = $this->__prepareGenericForView($attribute, $eventWarnings, $warningLists);
|
||||
return array('include' => $include, 'data' => $attribute);
|
||||
}
|
||||
|
||||
private function __prepareProposalForView(
|
||||
$proposal,
|
||||
$correlatedShadowAttributes,
|
||||
$filterType = false,
|
||||
$eventWarnings,
|
||||
$warningLists
|
||||
) {
|
||||
if ($proposal['proposal_to_delete']) {
|
||||
$proposal['objectType'] = 'proposal_delete';
|
||||
} else {
|
||||
$proposal['objectType'] = 'proposal';
|
||||
}
|
||||
|
||||
$include = true;
|
||||
if ($filterType === 'correlation' && !in_array($proposal['id'], $correlatedShadowAttributes)) {
|
||||
$include = false;
|
||||
}
|
||||
if ($filterType && !in_array($filterType, array('proposal', 'correlation', 'warning'))) {
|
||||
if (!in_array($attribute['type'], $this->Attribute->typeGroupings[$filterType])) {
|
||||
$include = false;
|
||||
}
|
||||
}
|
||||
$proposal = $this->__prepareGenericForView($proposal, $eventWarnings, $warningLists);
|
||||
return array('include' => $include, 'data' => $proposal);
|
||||
}
|
||||
|
||||
private function __prepareObjectForView(
|
||||
$object,
|
||||
$correlatedAttributes,
|
||||
$correlatedShadowAttributes,
|
||||
$filterType = false,
|
||||
$eventWarnings,
|
||||
$warningLists
|
||||
) {
|
||||
$object['category'] = $object['meta-category'];
|
||||
$proposal['objectType'] = 'object';
|
||||
// filters depend on child objects
|
||||
$include = empty($filterType) || $filterType == 'object';
|
||||
if (!empty($object['Attribute'])) {
|
||||
$temp = array();
|
||||
foreach ($object['Attribute'] as $k => $proposal) {
|
||||
$result = $this->__prepareAttributeForView(
|
||||
$proposal,
|
||||
$correlatedAttributes,
|
||||
$correlatedShadowAttributes,
|
||||
$filterType,
|
||||
$eventWarnings,
|
||||
$warningLists
|
||||
);
|
||||
$include = $include || $object['include'];
|
||||
$temp[] = $result['data'];
|
||||
}
|
||||
$object['Attribute'] = $temp;
|
||||
}
|
||||
return array('include' => $include, 'data' => $object);
|
||||
}
|
||||
|
||||
private function __prepareGenericForView(
|
||||
$object,
|
||||
$eventWarnings,
|
||||
$warningLists
|
||||
) {
|
||||
if (!$this->__fTool) {
|
||||
$this->__fTool = new FinancialTool();
|
||||
}
|
||||
if ($object['type'] == 'attachment' && preg_match('/.*\.(jpg|png|jpeg|gif)$/i', $object['value'])) {
|
||||
$object['image'] = $this->Attribute->base64EncodeAttachment($object);
|
||||
}
|
||||
if (isset($object['distribution']) && $object['distribution'] != 4) unset($object['SharingGroup']);
|
||||
if ($object['objectType'] !== 'object') {
|
||||
if ($object['category'] === 'Financial fraud') {
|
||||
if (!$this->__fTool->validateRouter($object['type'], $object['value'])) {
|
||||
$object['validationIssue'] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->Warninglist->checkForWarning($object, $eventWarnings, $warningLists);
|
||||
return $object;
|
||||
}
|
||||
|
||||
public function rearrangeEventForView(&$event, $passedArgs = array(), $all = false) {
|
||||
$fTool = new FinancialTool();
|
||||
$this->Warninglist = ClassRegistry::init('Warninglist');
|
||||
$warningLists = $this->Warninglist->fetchForEventView();
|
||||
foreach ($event['Event'] as $k => $v) {
|
||||
if (is_array($v)) {
|
||||
$event[$k] = $v;
|
||||
|
@ -3131,79 +3253,55 @@ class Event extends AppModel {
|
|||
}
|
||||
}
|
||||
$eventArray = array();
|
||||
$eventWarnings = array();
|
||||
$correlatedAttributes = isset($event['RelatedAttribute']) ? array_keys($event['RelatedAttribute']) : array();
|
||||
$correlatedShadowAttributes = isset($event['RelatedShadowAttribute']) ? array_keys($event['RelatedShadowAttribute']) : array();
|
||||
$totalElements = count($event['Attribute']);
|
||||
foreach ($event['Attribute'] as $attribute) {
|
||||
$totalElements += isset($attribute['ShadowAttribute']) ? count($attribute['ShadowAttribute']) : 0;
|
||||
if ($filterType && !in_array($filterType, array('proposal', 'correlation', 'warning'))) if (!in_array($attribute['type'], $this->Attribute->typeGroupings[$filterType])) continue;
|
||||
if (isset($attribute['distribution']) && $attribute['distribution'] != 4) unset($attribute['SharingGroup']);
|
||||
$attribute['objectType'] = 0;
|
||||
if (!empty($attribute['ShadowAttribute'])) {
|
||||
$attribute['hasChildren'] = 1;
|
||||
} else {
|
||||
$attribute['hasChildren'] = 0;
|
||||
}
|
||||
if ($filterType === 'proposal' && $attribute['hasChildren'] == 0) continue;
|
||||
if ($filterType === 'correlation' && !in_array($attribute['id'], $correlatedAttributes)) continue;
|
||||
if ($attribute['type'] == 'attachment' && preg_match('/.*\.(jpg|png|jpeg|gif)$/i', $attribute['value'])) {
|
||||
$attribute['image'] = $this->Attribute->base64EncodeAttachment($attribute);
|
||||
}
|
||||
$eventArray[] = $attribute;
|
||||
$result = $this->__prepareAttributeForView(
|
||||
$attribute,
|
||||
$correlatedAttributes,
|
||||
$correlatedShadowAttributes,
|
||||
$filterType,
|
||||
$eventWarnings,
|
||||
$warningLists
|
||||
);
|
||||
$event['objects'][] = $result['data'];
|
||||
}
|
||||
unset($event['Attribute']);
|
||||
if (isset($event['ShadowAttribute'])) {
|
||||
$totalElements += count($event['ShadowAttribute']);
|
||||
foreach ($event['ShadowAttribute'] as $shadowAttribute) {
|
||||
if ($filterType === 'correlation' && !in_array($shadowAttribute['id'], $correlatedShadowAttributes)) continue;
|
||||
if ($filterType && !in_array($filterType, array('proposal', 'correlation', 'warning'))) if (!in_array($attribute['type'], $this->Attribute->typeGroupings[$filterType])) continue;
|
||||
$shadowAttribute['objectType'] = 2;
|
||||
if ($shadowAttribute['type'] == 'attachment' && preg_match('/.*\.(jpg|png|jpeg|gif)$/i', $shadowAttribute['value'])) {
|
||||
$shadowAttribute['image'] = $this->ShadowAttribute->base64EncodeAttachment($attribute);
|
||||
}
|
||||
$eventArray[] = $shadowAttribute;
|
||||
if (!empty($event['ShadowAttribute'])) {
|
||||
foreach ($event['ShadowAttribute'] as $proposal) {
|
||||
$result = $this->__prepareProposalForView(
|
||||
$proposal,
|
||||
$correlatedShadowAttributes,
|
||||
$filterType,
|
||||
$eventWarnings,
|
||||
$warningLists
|
||||
);
|
||||
$event['objects'][] = $result['data'];
|
||||
}
|
||||
unset($event['ShadowAttribute']);
|
||||
}
|
||||
if (!empty($event['Object'])) {
|
||||
foreach ($event['Object'] as $object) {
|
||||
$object['objectType'] = 'object';
|
||||
$result = $this->__prepareObjectForView(
|
||||
$object,
|
||||
$correlatedAttributes,
|
||||
$correlatedShadowAttributes,
|
||||
false,
|
||||
$eventWarnings,
|
||||
$warningLists
|
||||
);
|
||||
$event['objects'][] = $result['data'];
|
||||
}
|
||||
unset($event['Object']);
|
||||
}
|
||||
unset($event['ShadowAttribute']);
|
||||
App::uses('CustomPaginationTool', 'Tools');
|
||||
$customPagination = new CustomPaginationTool();
|
||||
if ($all) $passedArgs['page'] = 0;
|
||||
$eventArrayWithProposals = array();
|
||||
foreach ($eventArray as $k => &$object) {
|
||||
if ($object['category'] === 'Financial fraud') {
|
||||
if (!$fTool->validateRouter($object['type'], $object['value'])) {
|
||||
$object['validationIssue'] = true;
|
||||
}
|
||||
}
|
||||
if ($object['objectType'] == 0) {
|
||||
if (isset($object['ShadowAttribute'])) {
|
||||
$shadowAttributeTemp = $object['ShadowAttribute'];
|
||||
unset($object['ShadowAttribute']);
|
||||
$eventArrayWithProposals[] = $object;
|
||||
foreach ($shadowAttributeTemp as $kk => $shadowAttribute) {
|
||||
$shadowAttribute['objectType'] = 1;
|
||||
if ($kk == 0) $shadowAttribute['firstChild'] = true;
|
||||
if (($kk + 1) == count($shadowAttributeTemp)) $shadowAttribute['lastChild'] = true;
|
||||
$eventArrayWithProposals[] = $shadowAttribute;
|
||||
}
|
||||
} else {
|
||||
$eventArrayWithProposals[] = $object;
|
||||
}
|
||||
} else {
|
||||
$eventArrayWithProposals[] = $object;
|
||||
}
|
||||
unset($eventArray[$k]);
|
||||
}
|
||||
$event['objects'] = $eventArrayWithProposals;
|
||||
$this->Warninglist = ClassRegistry::init('Warninglist');
|
||||
$warningLists = $this->Warninglist->fetchForEventView();
|
||||
if (!empty($warningLists)) $event = $this->Warninglist->setWarnings($event, $warningLists);
|
||||
if ($filterType && $filterType == 'warning') {
|
||||
foreach ($event['objects'] as $k => &$object) if (empty($object['warnings'])) unset($event['objects'][$k]);
|
||||
$event['objects'] = array_values($event['objects']);
|
||||
}
|
||||
$params = $customPagination->applyRulesOnArray($event['objects'], $passedArgs, 'events', 'category');
|
||||
$params['total_elements'] = $totalElements;
|
||||
$params['total_elements'] = count($event['objects']);
|
||||
return $params;
|
||||
}
|
||||
|
||||
|
|
|
@ -232,6 +232,23 @@ class Warninglist extends AppModel{
|
|||
return $warninglists;
|
||||
}
|
||||
|
||||
public function checkForWarning($object, &$eventWarnings, $warningLists) {
|
||||
if ($object['to_ids']) {
|
||||
foreach ($warningLists as $list) {
|
||||
if (in_array('ALL', $list['types']) || in_array($object['type'], $list['types'])) {
|
||||
$result = $this->__checkValue($list['values'], $object['value'], $object['type'], $list['Warninglist']['type']);
|
||||
if (!empty($result)) {
|
||||
$object['warnings'][$result][] = $list['Warninglist']['name'];
|
||||
if (!in_array($list['Warninglist']['name'], $eventWarnings)) {
|
||||
$eventWarnings[$list['Warninglist']['id']] = $list['Warninglist']['name'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $object;
|
||||
}
|
||||
|
||||
public function setWarnings(&$event, &$warninglists) {
|
||||
if (empty($event['objects'])) return $event;
|
||||
$eventWarnings = array();
|
||||
|
|
|
@ -0,0 +1,256 @@
|
|||
<?php
|
||||
$tr_class = '';
|
||||
$linkClass = 'white';
|
||||
$otherColour = 'blue';
|
||||
if (isset($object['deleted']) && $object['deleted']) {
|
||||
$tr_class .= ' background-light-red';
|
||||
}
|
||||
if (!empty($child)) {
|
||||
if ($child === 'last' && empty($object['ShadowAttribute'])) {
|
||||
$tr_class .= ' tableHighlightBorderBottom borderBlue';
|
||||
} else {
|
||||
$tr_class .= ' tableHighlightBorderCenter borderBlue';
|
||||
}
|
||||
if (!empty($object['ShadowAttribute'])) {
|
||||
$tr_class .= ' tableInsetOrangeFirst';
|
||||
}
|
||||
} else {
|
||||
$child = false;
|
||||
if (!empty($object['ShadowAttribute'])) {
|
||||
$tr_class .= ' tableHighlightBorderTop borderOrange';
|
||||
}
|
||||
}
|
||||
?>
|
||||
<tr id = "Attribute_<?php echo h($object['id']); ?>_tr" class="<?php echo $tr_class; ?>">
|
||||
<?php
|
||||
if ($mayModify):
|
||||
?>
|
||||
<td style="width:10px;" data-position="<?php echo h($object['objectType']) . '_' . h($object['id']); ?>">
|
||||
<input id = "select_<?php echo $object['id']; ?>" class="select_attribute row_checkbox" type="checkbox" data-id="<?php echo $object['id'];?>" />
|
||||
</td>
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
<td class="short context hidden">
|
||||
<?php echo h($object['id']); ?>
|
||||
</td>
|
||||
<td class="short context hidden">
|
||||
<?php echo h($object['uuid']); ?>
|
||||
</td>
|
||||
<td class="short">
|
||||
<?php echo date('Y-m-d', $object['timestamp']); ?>
|
||||
</td>
|
||||
<td class="short">
|
||||
|
||||
</td>
|
||||
<td class="short">
|
||||
<div id = "Attribute_<?php echo $object['id']; ?>_category_placeholder" class = "inline-field-placeholder"></div>
|
||||
<div id = "Attribute_<?php echo $object['id']; ?>_category_solid" class="inline-field-solid" ondblclick="activateField('Attribute', '<?php echo $object['id']; ?>', 'category', <?php echo $event['Event']['id'];?>);">
|
||||
<?php echo h($object['category']); ?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="short">
|
||||
<div id = "Attribute_<?php echo $object['id']; ?>_type_placeholder" class = "inline-field-placeholder"></div>
|
||||
<div id = "Attribute_<?php echo $object['id']; ?>_type_solid" class="inline-field-solid" ondblclick="activateField('Attribute', '<?php echo $object['id']; ?>', 'type', <?php echo $event['Event']['id'];?>);">
|
||||
<?php echo h($object['type']); ?>
|
||||
</div>
|
||||
</td>
|
||||
<td id="Attribute_<?php echo h($object['id']); ?>_container" class="showspaces limitedWidth shortish">
|
||||
<div id="Attribute_<?php echo $object['id']; ?>_value_placeholder" class="inline-field-placeholder"></div>
|
||||
<?php
|
||||
if ('attachment' !== $object['type'] && 'malware-sample' !== $object['type']) $editable = ' ondblclick="activateField(\'Attribute\', \'' . $object['id'] . '\', \'value\', \'' . $event['Event']['id'] . '\');"';
|
||||
else $editable = '';
|
||||
?>
|
||||
<div id = "Attribute_<?php echo $object['id']; ?>_value_solid" class="inline-field-solid" <?php echo $editable; ?>>
|
||||
<span <?php if (Configure::read('Plugin.Enrichment_hover_enable') && isset($modules) && isset($modules['hover_type'][$object['type']])) echo 'class="eventViewAttributeHover" data-object-type="Attribute" data-object-id="' . h($object['id']) . '"'?>>
|
||||
<?php
|
||||
echo $this->element('/Events/View/value_field', array('object' => $object));
|
||||
?>
|
||||
</span>
|
||||
<?php
|
||||
if (isset($object['warnings'])) {
|
||||
$temp = '';
|
||||
$components = array(1 => 0, 2 => 1);
|
||||
$valueParts = explode('|', $object['value']);
|
||||
foreach ($components as $component => $valuePart) {
|
||||
if (isset($object['warnings'][$component]) && isset($valueParts[$valuePart])) {
|
||||
foreach ($object['warnings'][$component] as $warning) $temp .= '<span class=\'bold\'>' . h($valueParts[$valuePart]) . '</span>: <span class=\'red\'>' . h($warning) . '</span><br />';
|
||||
}
|
||||
}
|
||||
echo ' <span class="icon-warning-sign" data-placement="right" data-toggle="popover" data-content="' . h($temp) . '" data-trigger="hover"> </span>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="shortish">
|
||||
<div class="attributeTagContainer">
|
||||
<?php echo $this->element('ajaxAttributeTags', array('attributeId' => $object['id'], 'attributeTags' => $object['AttributeTag'], 'tagAccess' => ($isSiteAdmin || $mayModify || $me['org_id'] == $event['Event']['org_id']) )); ?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="showspaces bitwider">
|
||||
<div id = "Attribute_<?php echo $object['id']; ?>_comment_placeholder" class = "inline-field-placeholder"></div>
|
||||
<div id = "Attribute_<?php echo $object['id']; ?>_comment_solid" class="inline-field-solid" ondblclick="activateField('Attribute', '<?php echo $object['id']; ?>', 'comment', <?php echo $event['Event']['id'];?>);">
|
||||
<?php echo nl2br(h($object['comment'])); ?>
|
||||
</div>
|
||||
</td>
|
||||
<?php
|
||||
if ($mayChangeCorrelation && !$event['Event']['disable_correlation']):
|
||||
?>
|
||||
<td class="short" style="padding-top:3px;">
|
||||
<input id="correlation_toggle_<?php echo h($object['id']); ?>" class="correlation-toggle" type="checkbox" data-attribute-id="<?php echo h($object['id']); ?>" <?php echo $object['disable_correlation'] ? '' : 'checked'; ?>>
|
||||
</td>
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
<td class="shortish">
|
||||
<ul class="inline" style="margin:0px;">
|
||||
<?php
|
||||
$relatedObject = 'Attribute';
|
||||
if (!empty($event['Related' . $relatedObject][$object['id']])) {
|
||||
foreach ($event['Related' . $relatedObject][$object['id']] as $relatedAttribute) {
|
||||
$relatedData = array('Event info' => $relatedAttribute['info'], 'Correlating Value' => $relatedAttribute['value'], 'date' => isset($relatedAttribute['date']) ? $relatedAttribute['date'] : 'N/A');
|
||||
$popover = '';
|
||||
foreach ($relatedData as $k => $v) {
|
||||
$popover .= '<span class=\'bold black\'>' . h($k) . '</span>: <span class="blue">' . h($v) . '</span><br />';
|
||||
}
|
||||
echo '<li style="padding-right: 0px; padding-left:0px;" data-toggle="popover" data-content="' . h($popover) . '" data-trigger="hover"><span>';
|
||||
if ($relatedAttribute['org_id'] == $me['org_id']) {
|
||||
echo $this->Html->link($relatedAttribute['id'], array('controller' => 'events', 'action' => 'view', $relatedAttribute['id'], true, $event['Event']['id']), array('class' => 'red'));
|
||||
} else {
|
||||
echo $this->Html->link($relatedAttribute['id'], array('controller' => 'events', 'action' => 'view', $relatedAttribute['id'], true, $event['Event']['id']), array('class' => $otherColour));
|
||||
}
|
||||
echo "</span></li>";
|
||||
echo ' ';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</td>
|
||||
<td class="shortish">
|
||||
<ul class="inline" style="margin:0px;">
|
||||
<?php
|
||||
if (!empty($object['Feed'])):
|
||||
foreach ($object['Feed'] as $feed):
|
||||
$popover = '';
|
||||
foreach ($feed as $k => $v):
|
||||
if ($k == 'id') continue;
|
||||
$popover .= '<span class=\'bold black\'>' . Inflector::humanize(h($k)) . '</span>: <span class="blue">' . h($v) . '</span><br />';
|
||||
endforeach;
|
||||
?>
|
||||
<li style="padding-right: 0px; padding-left:0px;" data-toggle="popover" data-content="<?php echo h($popover);?>" data-trigger="hover"><span>
|
||||
<?php
|
||||
if ($isSiteAdmin):
|
||||
echo $this->Html->link($feed['id'], array('controller' => 'feeds', 'action' => 'previewIndex', $feed['id']), array('style' => 'margin-right:3px;'));
|
||||
else:
|
||||
?>
|
||||
<span style="margin-right:3px;"><?php echo h($feed['id']);?></span>
|
||||
<?php
|
||||
endif;
|
||||
endforeach;
|
||||
?>
|
||||
</li>
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
</ul>
|
||||
</td>
|
||||
<td class="short">
|
||||
<div id = "Attribute_<?php echo $object['id']; ?>_to_ids_placeholder" class = "inline-field-placeholder"></div>
|
||||
<div id = "Attribute_<?php echo $object['id']; ?>_to_ids_solid" class="inline-field-solid" ondblclick="activateField('Attribute', '<?php echo $object['id']; ?>', 'to_ids', <?php echo $event['Event']['id'];?>);">
|
||||
<?php echo $object['to_ids'] ? 'Yes' : 'No'; ?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="shortish">
|
||||
<?php
|
||||
$turnRed = '';
|
||||
if ($object['distribution'] == 0) $turnRed = 'style="color:red"';
|
||||
?>
|
||||
<div id = "Attribute_<?php echo $object['id']; ?>_distribution_placeholder" class = "inline-field-placeholder"></div>
|
||||
<div id = "Attribute_<?php echo $object['id']; ?>_distribution_solid" <?php echo $turnRed; ?> class="inline-field-solid" ondblclick="activateField('Attribute', '<?php echo $object['id']; ?>', 'distribution', <?php echo $event['Event']['id'];?>);">
|
||||
<?php
|
||||
if ($object['distribution'] == 4):
|
||||
?>
|
||||
<a href="/sharing_groups/view/<?php echo h($object['sharing_group_id']); ?>"><?php echo h($object['SharingGroup']['name']);?></a>
|
||||
<?php
|
||||
else:
|
||||
echo h($shortDist[$object['distribution']]);
|
||||
endif;
|
||||
?>
|
||||
</div>
|
||||
</td>
|
||||
<?php
|
||||
if (Configure::read('Plugin.Sightings_enable') !== false):
|
||||
echo $this->element('/Events/View/sighting_field', array(
|
||||
'object' => $object,
|
||||
'tr_class' => $tr_class,
|
||||
'page' => $page
|
||||
));
|
||||
endif;
|
||||
?>
|
||||
<td class="short action-links">
|
||||
<?php
|
||||
if ($object['deleted']):
|
||||
if ($isSiteAdmin || $mayModify):
|
||||
?>
|
||||
<span class="icon-repeat useCursorPointer" title="Restore attribute" role="button" tabindex="0" aria-label="Restore attribute" onClick="deleteObject('attributes', 'restore', '<?php echo h($object['id']); ?>', '<?php echo h($event['Event']['id']); ?>');"></span>
|
||||
<span class="icon-trash useCursorPointer" title="Delete attribute" role="button" tabindex="0" aria-label="Permanently delete attribute" onClick="deleteObject('attributes', 'delete', '<?php echo h($object['id']) . '/true'; ?>', '<?php echo h($event['Event']['id']); ?>');"></span>
|
||||
<?php
|
||||
endif;
|
||||
else:
|
||||
if ($isSiteAdmin || !$mayModify):
|
||||
if (isset($modules) && isset($modules['types'][$object['type']])):
|
||||
?>
|
||||
<span class="icon-asterisk useCursorPointer" title="Query enrichment" role="button" tabindex="0" aria-label="Query enrichment" onClick="simplePopup('<?php echo $baseurl;?>/events/queryEnrichment/<?php echo h($object['id']);?>/ShadowAttribute');" title="Propose enrichment"> </span>
|
||||
<?php
|
||||
endif;
|
||||
if (isset($cortex_modules) && isset($cortex_modules['types'][$object['type']])):
|
||||
?>
|
||||
<span class="icon-eye-open useCursorPointer" title="Query Cortex" role="button" tabindex="0" aria-label="Query Cortex" onClick="simplePopup('<?php echo $baseurl;?>/events/queryEnrichment/<?php echo h($object['id']);?>/ShadowAttribute/Cortex');" title="Propose enrichment through Cortex"></span>
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
<a href="<?php echo $baseurl;?>/shadow_attributes/edit/<?php echo $object['id']; ?>" title="Propose Edit" class="icon-share useCursorPointer"></a>
|
||||
<span class="icon-trash useCursorPointer" title="Propose Deletion" role="button" tabindex="0" aria-label="Propose deletion" onClick="deleteObject('shadow_attributes', 'delete', '<?php echo h($object['id']); ?>', '<?php echo h($event['Event']['id']); ?>');"></span>
|
||||
<?php
|
||||
if ($isSiteAdmin):
|
||||
?>
|
||||
<span class="verticalSeparator"> </span>
|
||||
<?php endif;
|
||||
endif;
|
||||
if ($isSiteAdmin || $mayModify):
|
||||
if (isset($modules) && isset($modules['types'][$object['type']])):
|
||||
?>
|
||||
<span class="icon-asterisk useCursorPointer" onClick="simplePopup('<?php echo $baseurl;?>/events/queryEnrichment/<?php echo h($object['id']);?>/Attribute');" title="Add enrichment" role="button" tabindex="0" aria-label="Add enrichment"> </span>
|
||||
<?php
|
||||
endif;
|
||||
if (isset($cortex_modules) && isset($cortex_modules['types'][$object['type']])):
|
||||
?>
|
||||
<span class="icon-eye-open useCursorPointer" onClick="simplePopup('<?php echo $baseurl;?>/events/queryEnrichment/<?php echo h($object['id']);?>/Attribute/Cortex');" title="Add enrichment" role="button" tabindex="0" aria-label="Add enrichment via Cortex">C</span>
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
<a href="<?php echo $baseurl;?>/attributes/edit/<?php echo $object['id']; ?>" title="Edit" class="icon-edit useCursorPointer"></a>
|
||||
<span class="icon-trash useCursorPointer" title="Delete attribute" role="button" tabindex="0" aria-label="Delete attribute" onClick="deleteObject('attributes', 'delete', '<?php echo h($object['id']); ?>', '<?php echo h($event['Event']['id']); ?>');"></span>
|
||||
<?php
|
||||
endif;
|
||||
endif;
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
if (!empty($object['ShadowAttribute'])) {
|
||||
end($object['ShadowAttribute']);
|
||||
$lastElement = key($object['ShadowAttribute']);
|
||||
foreach ($object['ShadowAttribute'] as $propKey => $proposal) {
|
||||
echo $this->element('/Events/View/row_' . $proposal['objectType'], array(
|
||||
'object' => $proposal,
|
||||
'mayModify' => $mayModify,
|
||||
'mayChangeCorrelation' => $mayChangeCorrelation,
|
||||
'page' => $page,
|
||||
'fieldCount' => $fieldCount,
|
||||
'child' => $propKey == $lastElement ? 'last' : true,
|
||||
'objectContainer' => $child
|
||||
));
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -0,0 +1,60 @@
|
|||
<?php
|
||||
$tr_class = '';
|
||||
$linkClass = 'white';
|
||||
$currentType = 'denyForm';
|
||||
$tr_class = 'tableHighlightBorderTop borderBlue blueRow';
|
||||
?>
|
||||
<tr id = "<?php echo $currentType . '_' . $object['id'] . '_tr'; ?>" class="<?php echo $tr_class; ?>">
|
||||
<td style="width:10px;" data-position="<?php echo h($object['objectType']) . '_' . h($object['id']); ?>">
|
||||
<input id = "select_object_<?php echo $object['id']; ?>" class="select_object row_checkbox" type="checkbox" data-id="<?php echo $object['id'];?>" />
|
||||
</td>
|
||||
<td class="short" colspan="2">
|
||||
<?php echo date('Y-m-d', $object['timestamp']); ?>
|
||||
</td>
|
||||
<td colspan="<?php echo $fieldCount -5;?>">
|
||||
<span class="bold">Name: </span><?php echo h($object['name']);?><br />
|
||||
<span class="bold">Meta-category: </span><?php echo h($object['meta-category']);?><br />
|
||||
<span class="bold">Description: </span><?php echo h($object['description']);?><br />
|
||||
<span class="bold">Tempate: </span><?php echo h($object['name']) . ' v' . h($object['template_version']) . ' (' . h($object['template_uuid']) . ')'; ?>
|
||||
</td>
|
||||
<td class="shortish">
|
||||
<?php
|
||||
$turnRed = '';
|
||||
if ($object['objectType'] == 0 && $object['distribution'] == 0) $turnRed = 'style="color:red"';
|
||||
?>
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_distribution_placeholder'; ?>" class = "inline-field-placeholder"></div>
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_distribution_solid'; ?>" <?php echo $turnRed; ?> class="inline-field-solid" ondblclick="activateField('<?php echo $currentType; ?>', '<?php echo $object['id']; ?>', 'distribution', <?php echo $event['Event']['id'];?>);">
|
||||
<?php
|
||||
if ($object['objectType'] == 0) {
|
||||
if ($object['distribution'] == 4):
|
||||
?>
|
||||
<a href="/sharing_groups/view/<?php echo h($object['sharing_group_id']); ?>"><?php echo h($object['SharingGroup']['name']);?></a>
|
||||
<?php
|
||||
else:
|
||||
echo h($shortDist[$object['distribution']]);
|
||||
endif;
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td class="short action-links">
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
if (!empty($object['Attribute'])) {
|
||||
end($object['Attribute']);
|
||||
$lastElement = key($object['Attribute']);
|
||||
foreach ($object['Attribute'] as $attrKey => $attribute) {
|
||||
echo $this->element('/Events/View/row_' . $attribute['objectType'], array(
|
||||
'object' => $attribute,
|
||||
'mayModify' => $mayModify,
|
||||
'mayChangeCorrelation' => $mayChangeCorrelation,
|
||||
'page' => $page,
|
||||
'fieldCount' => $fieldCount,
|
||||
'child' => $attrKey == $lastElement ? 'last' : true
|
||||
));
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -0,0 +1,316 @@
|
|||
<?php
|
||||
$tr_class = 'darkOrangeRow';
|
||||
$linkClass = 'white';
|
||||
$currentType = 'denyForm';
|
||||
if (!empty($objectContainer)) {
|
||||
if (!empty($child)) {
|
||||
if ($child === 'last') {
|
||||
$tr_class .= ' tableInsetOrangeLast';
|
||||
} else {
|
||||
$tr_class .= ' tableInsetOrangeMiddle';
|
||||
}
|
||||
} else {
|
||||
$tr_class .= ' tableInsetOrange';
|
||||
}
|
||||
if ($objectContainer === true) {
|
||||
$tr_class .= ' tableHighlightBorderCenter borderBlue';
|
||||
} else {
|
||||
$tr_class .= ' tableHighlightBorderBottom borderBlue';
|
||||
}
|
||||
} else {
|
||||
if (!empty($child)) {
|
||||
if ($child === 'last') {
|
||||
$tr_class .= ' tableHighlightBorderBottom borderOrange';
|
||||
} else {
|
||||
$tr_class .= ' tableHighlightBorderCenter borderOrange';
|
||||
}
|
||||
} else {
|
||||
$tr_class .= ' tableHighlightBorder borderOrange';
|
||||
}
|
||||
}
|
||||
?>
|
||||
<tr id = "proposal<?php echo '_' . $object['id'] . '_tr'; ?>" class="<?php echo $tr_class; ?>">
|
||||
<?php if ($mayModify): ?>
|
||||
<td style="width:10px;" data-position="<?php echo h($object['objectType']) . '_' . h($object['id']); ?>">
|
||||
<input id = "select_proposal_<?php echo $object['id']; ?>" class="select_proposal row_checkbox" type="checkbox" data-id="<?php echo $object['id'];?>" />
|
||||
</td>
|
||||
<?php endif; ?>
|
||||
<td class="short context hidden">
|
||||
<?php
|
||||
echo $object['objectType'] == 0 ? h($object['id']) : ' ';
|
||||
?>
|
||||
</td>
|
||||
<td class="short context hidden">
|
||||
<?php echo $object['objectType'] == 0 ? h($object['uuid']) : ' '; ?>
|
||||
</td>
|
||||
<td class="short">
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_timestamp_solid'; ?>">
|
||||
<?php
|
||||
if (isset($object['timestamp'])) echo date('Y-m-d', $object['timestamp']);
|
||||
else echo ' ';
|
||||
?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="short">
|
||||
<?php
|
||||
if ($object['objectType'] != 0) {
|
||||
if (isset($object['Org']['name'])) {
|
||||
$imgAbsolutePath = APP . WEBROOT_DIR . DS . 'img' . DS . 'orgs' . DS . h($object['Org']['name']) . '.png';
|
||||
if (file_exists($imgAbsolutePath)) echo $this->Html->image('orgs/' . h($object['Org']['name']) . '.png', array('alt' => h($object['Org']['name']), 'title' => h($object['Org']['name']), 'style' => 'width:24px; height:24px'));
|
||||
else echo h($object['Org']['name']);
|
||||
}
|
||||
} else { ?>
|
||||
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
<td class="short">
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_category_placeholder'; ?>" class = "inline-field-placeholder"></div>
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_category_solid'; ?>" class="inline-field-solid" ondblclick="activateField('<?php echo $currentType; ?>', '<?php echo $object['id']; ?>', 'category', <?php echo $event['Event']['id'];?>);">
|
||||
<?php echo h($object['category']); ?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="short">
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_type_placeholder'; ?>" class = "inline-field-placeholder"></div>
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_type_solid'; ?>" class="inline-field-solid" ondblclick="activateField('<?php echo $currentType; ?>', '<?php echo $object['id']; ?>', 'type', <?php echo $event['Event']['id'];?>);">
|
||||
<?php echo h($object['type']); ?>
|
||||
</div>
|
||||
</td>
|
||||
<td id="<?php echo h($currentType) . '_' . h($object['id']) . '_container'; ?>" class="showspaces limitedWidth shortish">
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_value_placeholder'; ?>" class = "inline-field-placeholder"></div>
|
||||
<?php
|
||||
if ('attachment' !== $object['type'] && 'malware-sample' !== $object['type']) $editable = ' ondblclick="activateField(\'' . $currentType . '\', \'' . $object['id'] . '\', \'value\', \'' . $event['Event']['id'] . '\');"';
|
||||
else $editable = '';
|
||||
?>
|
||||
<div id = "<?php echo $currentType; ?>_<?php echo $object['id']; ?>_value_solid" class="inline-field-solid" <?php echo $editable; ?>>
|
||||
<span <?php if (Configure::read('Plugin.Enrichment_hover_enable') && isset($modules) && isset($modules['hover_type'][$object['type']])) echo 'class="eventViewAttributeHover" data-object-type="' . h($currentType) . '" data-object-id="' . h($object['id']) . '"'?>>
|
||||
<?php
|
||||
$sigDisplay = $object['value'];
|
||||
if ('attachment' == $object['type'] || 'malware-sample' == $object['type'] ) {
|
||||
if ($object['type'] == 'attachment' && isset($object['image'])) {
|
||||
$extension = explode('.', $object['value']);
|
||||
$extension = end($extension);
|
||||
$uri = 'data:image/' . strtolower(h($extension)) . ';base64,' . h($object['image']);
|
||||
echo '<img class="screenshot screenshot-collapsed useCursorPointer" src="' . $uri . '" title="' . h($object['value']) . '" />';
|
||||
} else {
|
||||
$t = ($object['objectType'] == 0 ? 'attributes' : 'shadow_attributes');
|
||||
$filenameHash = explode('|', nl2br(h($object['value'])));
|
||||
if (strrpos($filenameHash[0], '\\')) {
|
||||
$filepath = substr($filenameHash[0], 0, strrpos($filenameHash[0], '\\'));
|
||||
$filename = substr($filenameHash[0], strrpos($filenameHash[0], '\\'));
|
||||
echo h($filepath);
|
||||
echo '<a href="' . $baseurl . '/' . h($t) . '/download/' . h($object['id']) . '" class="' . $linkClass . '">' . h($filename) . '</a>';
|
||||
} else {
|
||||
echo '<a href="' . $baseurl . '/' . h($t) . '/download/' . h($object['id']) . '" class="' . $linkClass . '">' . h($filenameHash[0]) . '</a>';
|
||||
}
|
||||
if (isset($filenameHash[1])) echo '<br />' . $filenameHash[1];
|
||||
}
|
||||
} else if (strpos($object['type'], '|') !== false) {
|
||||
$filenameHash = explode('|', $object['value']);
|
||||
echo h($filenameHash[0]);
|
||||
if (isset($filenameHash[1])) {
|
||||
$separator = '<br />';
|
||||
if (in_array($object['type'], array('ip-dst|port', 'ip-src|port'))) {
|
||||
$separator = ':';
|
||||
}
|
||||
echo $separator . h($filenameHash[1]);
|
||||
}
|
||||
} else if ('vulnerability' == $object['type']) {
|
||||
if (! is_null(Configure::read('MISP.cveurl'))) {
|
||||
$cveUrl = Configure::read('MISP.cveurl');
|
||||
} else {
|
||||
$cveUrl = "http://www.google.com/search?q=";
|
||||
}
|
||||
echo $this->Html->link($sigDisplay, $cveUrl . $sigDisplay, array('target' => '_blank', 'class' => $linkClass));
|
||||
} else if ('link' == $object['type']) {
|
||||
echo $this->Html->link($sigDisplay, $sigDisplay, array('class' => $linkClass));
|
||||
} else if ('cortex' == $object['type']) {
|
||||
echo '<div class="cortex-json" data-cortex-json="' . h($object['value']) . '">Cortex object</div>';
|
||||
} else if ('text' == $object['type']) {
|
||||
if ($object['category'] == 'External analysis' && preg_match('/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}/i', $object['value'])) {
|
||||
echo '<a href="' . $baseurl . '/events/view/' . h($object['value']) . '" class="' . $linkClass . '">' . h($object['value']) . '</a>';
|
||||
} else {
|
||||
$sigDisplay = str_replace("\r", '', h($sigDisplay));
|
||||
$sigDisplay = str_replace(" ", ' ', $sigDisplay);
|
||||
echo nl2br($sigDisplay);
|
||||
}
|
||||
} else if ('hex' == $object['type']) {
|
||||
$sigDisplay = str_replace("\r", '', $sigDisplay);
|
||||
echo '<span class="hex-value" title="Hexadecimal representation">' . nl2br(h($sigDisplay)) . '</span> <span role="button" tabindex="0" aria-label="Switch to binary representation" class="icon-repeat hex-value-convert useCursorPointer" title="Switch to binary representation"></span>';
|
||||
} else {
|
||||
$sigDisplay = str_replace("\r", '', $sigDisplay);
|
||||
echo nl2br(h($sigDisplay));
|
||||
}
|
||||
if (isset($object['validationIssue'])) echo ' <span class="icon-warning-sign" title="Warning, this doesn\'t seem to be a legitimage ' . strtoupper(h($object['type'])) . ' value"> </span>';
|
||||
?>
|
||||
</span>
|
||||
<?php
|
||||
if (isset($object['warnings'])) {
|
||||
$temp = '';
|
||||
$components = array(1 => 0, 2 => 1);
|
||||
$valueParts = explode('|', $object['value']);
|
||||
foreach ($components as $component => $valuePart) {
|
||||
if (isset($object['warnings'][$component]) && isset($valueParts[$valuePart])) {
|
||||
foreach ($object['warnings'][$component] as $warning) $temp .= '<span class=\'bold\'>' . h($valueParts[$valuePart]) . '</span>: <span class=\'red\'>' . h($warning) . '</span><br />';
|
||||
}
|
||||
}
|
||||
echo ' <span class="icon-warning-sign" data-placement="right" data-toggle="popover" data-content="' . h($temp) . '" data-trigger="hover"> </span>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="shortish">
|
||||
<?php
|
||||
if ($object['objectType'] == 0):
|
||||
?>
|
||||
<div class="attributeTagContainer">
|
||||
|
||||
</div>
|
||||
<?php
|
||||
else:
|
||||
?>
|
||||
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
</td>
|
||||
<td class="showspaces bitwider">
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_comment_placeholder'; ?>" class = "inline-field-placeholder"></div>
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_comment_solid'; ?>" class="inline-field-solid" ondblclick="activateField('<?php echo $currentType; ?>', '<?php echo $object['id']; ?>', 'comment', <?php echo $event['Event']['id'];?>);">
|
||||
<?php echo nl2br(h($object['comment'])); ?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="short" style="padding-top:3px;"> </td>
|
||||
<td class="shortish">
|
||||
<ul class="inline" style="margin:0px;">
|
||||
<?php
|
||||
if ($object['objectType'] == 0) {
|
||||
$relatedObject = 'Attribute';
|
||||
$otherColour = !empty($object['ShadowAttribute']) ? 'blue' : 'white';
|
||||
} else {
|
||||
$relatedObject = 'ShadowAttribute';
|
||||
$otherColour = 'white';
|
||||
}
|
||||
$relatedObject = $object['objectType'] == 0 ? 'Attribute' : 'ShadowAttribute';
|
||||
|
||||
if (!empty($event['Related' . $relatedObject][$object['id']])) {
|
||||
foreach ($event['Related' . $relatedObject][$object['id']] as $relatedAttribute) {
|
||||
$relatedData = array('Event info' => $relatedAttribute['info'], 'Correlating Value' => $relatedAttribute['value'], 'date' => isset($relatedAttribute['date']) ? $relatedAttribute['date'] : 'N/A');
|
||||
$popover = '';
|
||||
foreach ($relatedData as $k => $v) {
|
||||
$popover .= '<span class=\'bold black\'>' . h($k) . '</span>: <span class="blue">' . h($v) . '</span><br />';
|
||||
}
|
||||
echo '<li style="padding-right: 0px; padding-left:0px;" data-toggle="popover" data-content="' . h($popover) . '" data-trigger="hover"><span>';
|
||||
if ($relatedAttribute['org_id'] == $me['org_id']) {
|
||||
echo $this->Html->link($relatedAttribute['id'], array('controller' => 'events', 'action' => 'view', $relatedAttribute['id'], true, $event['Event']['id']), array('class' => 'red'));
|
||||
} else {
|
||||
echo $this->Html->link($relatedAttribute['id'], array('controller' => 'events', 'action' => 'view', $relatedAttribute['id'], true, $event['Event']['id']), array('class' => $otherColour));
|
||||
}
|
||||
echo "</span></li>";
|
||||
echo ' ';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</td>
|
||||
<td class="shortish">
|
||||
<ul class="inline" style="margin:0px;">
|
||||
<?php
|
||||
if (!empty($object['Feed'])):
|
||||
foreach ($object['Feed'] as $feed):
|
||||
$popover = '';
|
||||
foreach ($feed as $k => $v):
|
||||
if ($k == 'id') continue;
|
||||
$popover .= '<span class=\'bold black\'>' . Inflector::humanize(h($k)) . '</span>: <span class="blue">' . h($v) . '</span><br />';
|
||||
endforeach;
|
||||
?>
|
||||
<li style="padding-right: 0px; padding-left:0px;" data-toggle="popover" data-content="<?php echo h($popover);?>" data-trigger="hover"><span>
|
||||
<?php
|
||||
if ($isSiteAdmin):
|
||||
echo $this->Html->link($feed['id'], array('controller' => 'feeds', 'action' => 'previewIndex', $feed['id']), array('style' => 'margin-right:3px;'));
|
||||
else:
|
||||
?>
|
||||
<span style="margin-right:3px;"><?php echo h($feed['id']);?></span>
|
||||
<?php
|
||||
endif;
|
||||
endforeach;
|
||||
?>
|
||||
</li>
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
</ul>
|
||||
</td>
|
||||
<td class="short">
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_to_ids_placeholder'; ?>" class = "inline-field-placeholder"></div>
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_to_ids_solid'; ?>" class="inline-field-solid" ondblclick="activateField('<?php echo $currentType; ?>', '<?php echo $object['id']; ?>', 'to_ids', <?php echo $event['Event']['id'];?>);">
|
||||
<?php
|
||||
if ($object['to_ids']) echo 'Yes';
|
||||
else echo 'No';
|
||||
?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="shortish"> </td>
|
||||
<?php
|
||||
if (Configure::read('Plugin.Sightings_enable') !== false):
|
||||
?>
|
||||
<td class="shortish">
|
||||
<span id="sightingForm_<?php echo h($object['id']);?>">
|
||||
<?php
|
||||
if ($object['objectType'] == 0):
|
||||
echo $this->Form->create('Sighting', array('id' => 'Sighting_' . $object['id'], 'url' => '/sightings/add/' . $object['id'], 'style' => 'display:none;'));
|
||||
echo $this->Form->input('type', array('label' => false, 'id' => 'Sighting_' . $object['id'] . '_type'));
|
||||
echo $this->Form->end();
|
||||
?>
|
||||
</span>
|
||||
<?php
|
||||
$temp = array();
|
||||
if (isset($sightingsData['csv'][$object['id']])) {
|
||||
$temp = $sightingsData['csv'][$object['id']];
|
||||
}
|
||||
?>
|
||||
<span class="icon-thumbs-up useCursorPointer" title="Add sighting" role="button" tabindex="0" aria-label="Add sighting" onClick="addSighting('0', '<?php echo h($object['id']); ?>', '<?php echo h($event['Event']['id']);?>', '<?php echo h($page); ?>');"> </span>
|
||||
<span class="icon-thumbs-down useCursorPointer" title="Mark as false-positive" role="button" tabindex="0" aria-label="Mark as false-positive" onClick="addSighting('1', '<?php echo h($object['id']); ?>', '<?php echo h($event['Event']['id']);?>', '<?php echo h($page); ?>');"> </span>
|
||||
<span class="icon-wrench useCursorPointer sightings_advanced_add" title="Advanced sightings" role="button" tabindex="0" aria-label="Advanced sightings" data-object-id="<?php echo h($object['id']); ?>" data-object-context="attribute"> </span>
|
||||
<span id="sightingCount_<?php echo h($object['id']); ?>" class="bold sightingsCounter_<?php echo h($object['id']); ?>" data-placement="top" data-toggle="popover" data-trigger="hover" data-content="<?php echo isset($sightingsData['data'][$object['id']]['html']) ? $sightingsData['data'][$object['id']]['html'] : ''; ?>">
|
||||
<?php
|
||||
$s = (!empty($sightingsData['data'][$object['id']]['sighting']['count']) ? $sightingsData['data'][$object['id']]['sighting']['count'] : 0);
|
||||
$f = (!empty($sightingsData['data'][$object['id']]['false-positive']['count']) ? $sightingsData['data'][$object['id']]['false-positive']['count'] : 0);
|
||||
$e = (!empty($sightingsData['data'][$object['id']]['expiration']['count']) ? $sightingsData['data'][$object['id']]['expiration']['count'] : 0);
|
||||
?>
|
||||
</span>
|
||||
<span id="ownSightingCount_<?php echo h($object['id']); ?>" class="bold sightingsCounter_<?php echo h($object['id']); ?>" data-placement="top" data-toggle="popover" data-trigger="hover" data-content="<?php echo isset($sightingsData['data'][$object['id']]['html']) ? $sightingsData['data'][$object['id']]['html'] : ''; ?>">
|
||||
<?php echo '(<span class="green">' . h($s) . '</span>/<span class="red">' . h($f) . '</span>/<span class="orange">' . h($e) . '</span>)'; ?>
|
||||
</span>
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
</td>
|
||||
<td class="short">
|
||||
<?php
|
||||
if ($object['objectType'] == 0 && !empty($temp)) {
|
||||
echo $this->element('sparkline', array('id' => $object['id'], 'csv' => $temp));
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
<td class="short action-links">
|
||||
<?php
|
||||
if (($event['Orgc']['id'] == $me['org_id'] && $mayModify) || $isSiteAdmin) {
|
||||
echo $this->Form->create('Shadow_Attribute', array('id' => 'ShadowAttribute_' . $object['id'] . '_accept', 'url' => '/shadow_attributes/accept/' . $object['id'], 'style' => 'display:none;'));
|
||||
echo $this->Form->end();
|
||||
?>
|
||||
<span class="icon-ok useCursorPointer" title="Accept Proposal" role="button" tabindex="0" aria-label="Accept proposal" onClick="acceptObject('shadow_attributes', '<?php echo $object['id']; ?>', '<?php echo $event['Event']['id']; ?>');"></span>
|
||||
<?php
|
||||
}
|
||||
if (($event['Orgc']['id'] == $me['org_id'] && $mayModify) || $isSiteAdmin || ($object['org_id'] == $me['org_id'])) {
|
||||
?>
|
||||
<span class="icon-trash useCursorPointer" title="Discard proposal" role="button" tabindex="0" aria-label="Discard proposal" onClick="deleteObject('shadow_attributes', 'discard' ,'<?php echo $object['id']; ?>', '<?php echo $event['Event']['id']; ?>');"></span>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
|
@ -0,0 +1,60 @@
|
|||
<?php
|
||||
$tr_class = 'redRow';
|
||||
$linkClass = 'white';
|
||||
$currentType = 'denyForm';
|
||||
if (!empty($objectContainer)) {
|
||||
if (!empty($child)) {
|
||||
if ($child === 'last') {
|
||||
$tr_class .= ' tableInsetOrangeLast';
|
||||
} else {
|
||||
$tr_class .= ' tableInsetOrangeMiddle';
|
||||
}
|
||||
} else {
|
||||
$tr_class .= ' tableInsetOrange';
|
||||
}
|
||||
if ($objectContainer === true) {
|
||||
$tr_class .= ' tableHighlightBorderCenter borderBlue';
|
||||
} else {
|
||||
$tr_class .= ' tableHighlightBorderBottom borderBlue';
|
||||
}
|
||||
} else {
|
||||
if (!empty($child)) {
|
||||
if ($child === 'last') {
|
||||
$tr_class .= ' tableHighlightBorderBottom borderOrange';
|
||||
} else {
|
||||
$tr_class .= ' tableHighlightBorderCenter borderOrange';
|
||||
}
|
||||
} else {
|
||||
$tr_class .= ' tableHighlightBorder borderOrange';
|
||||
}
|
||||
}
|
||||
?>
|
||||
<tr id = "<?php echo $currentType . '_' . $object['id'] . '_tr'; ?>" class="<?php echo $tr_class; ?>">
|
||||
<?php if ($mayModify): ?>
|
||||
<td style="width:10px;" data-position="<?php echo h($object['objectType']) . '_' . h($object['id']); ?>">
|
||||
<?php if ($object['objectType'] == 0): ?>
|
||||
<input id = "select_<?php echo $object['id']; ?>" class="select_attribute row_checkbox" type="checkbox" data-id="<?php echo $object['id'];?>" />
|
||||
<?php else: ?>
|
||||
<input id = "select_proposal_<?php echo $object['id']; ?>" class="select_proposal row_checkbox" type="checkbox" data-id="<?php echo $object['id'];?>" />
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<?php endif;
|
||||
?>
|
||||
<td colspan="<?php echo $fieldCount; ?>" style="font-weight:bold;text-align:left;width:100%;">DELETE</td>
|
||||
<td class="short action-links">
|
||||
<?php
|
||||
if (($event['Orgc']['id'] == $me['org_id'] && $mayModify) || $isSiteAdmin) {
|
||||
echo $this->Form->create('Shadow_Attribute', array('id' => 'ShadowAttribute_' . $object['id'] . '_accept', 'url' => '/shadow_attributes/accept/' . $object['id'], 'style' => 'display:none;'));
|
||||
echo $this->Form->end();
|
||||
?>
|
||||
<span class="icon-ok useCursorPointer" title="Accept Proposal" role="button" tabindex="0" aria-label="Accept proposal" onClick="acceptObject('shadow_attributes', '<?php echo $object['id']; ?>', '<?php echo $event['Event']['id']; ?>');"></span>
|
||||
<?php
|
||||
}
|
||||
if (($event['Orgc']['id'] == $me['org_id'] && $mayModify) || $isSiteAdmin || ($object['org_id'] == $me['org_id'])) {
|
||||
?>
|
||||
<span class="icon-trash useCursorPointer" title="Discard proposal" role="button" tabindex="0" aria-label="Discard proposal" onClick="deleteObject('shadow_attributes', 'discard' ,'<?php echo $object['id']; ?>', '<?php echo $event['Event']['id']; ?>');"></span>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
|
@ -0,0 +1,35 @@
|
|||
<td class="shortish">
|
||||
<span id="sightingForm_<?php echo h($object['id']);?>">
|
||||
<?php
|
||||
echo $this->Form->create('Sighting', array('id' => 'Sighting_' . $object['id'], 'url' => '/sightings/add/' . $object['id'], 'style' => 'display:none;'));
|
||||
echo $this->Form->input('type', array('label' => false, 'id' => 'Sighting_' . $object['id'] . '_type'));
|
||||
echo $this->Form->end();
|
||||
?>
|
||||
</span>
|
||||
<?php
|
||||
$temp = array();
|
||||
if (isset($sightingsData['csv'][$object['id']])) {
|
||||
$temp = $sightingsData['csv'][$object['id']];
|
||||
}
|
||||
?>
|
||||
<span class="icon-thumbs-up useCursorPointer" title="Add sighting" role="button" tabindex="0" aria-label="Add sighting" onClick="addSighting('0', '<?php echo h($object['id']); ?>', '<?php echo h($event['Event']['id']);?>', '<?php echo h($page); ?>');"> </span>
|
||||
<span class="icon-thumbs-down useCursorPointer" title="Mark as false-positive" role="button" tabindex="0" aria-label="Mark as false-positive" onClick="addSighting('1', '<?php echo h($object['id']); ?>', '<?php echo h($event['Event']['id']);?>', '<?php echo h($page); ?>');"> </span>
|
||||
<span class="icon-wrench useCursorPointer sightings_advanced_add" title="Advanced sightings" role="button" tabindex="0" aria-label="Advanced sightings" data-object-id="<?php echo h($object['id']); ?>" data-object-context="attribute"> </span>
|
||||
<span id="sightingCount_<?php echo h($object['id']); ?>" class="bold sightingsCounter_<?php echo h($object['id']); ?>" data-placement="top" data-toggle="popover" data-trigger="hover" data-content="<?php echo isset($sightingsData['data'][$object['id']]['html']) ? $sightingsData['data'][$object['id']]['html'] : ''; ?>">
|
||||
<?php
|
||||
$s = (!empty($sightingsData['data'][$object['id']]['sighting']['count']) ? $sightingsData['data'][$object['id']]['sighting']['count'] : 0);
|
||||
$f = (!empty($sightingsData['data'][$object['id']]['false-positive']['count']) ? $sightingsData['data'][$object['id']]['false-positive']['count'] : 0);
|
||||
$e = (!empty($sightingsData['data'][$object['id']]['expiration']['count']) ? $sightingsData['data'][$object['id']]['expiration']['count'] : 0);
|
||||
?>
|
||||
</span>
|
||||
<span id="ownSightingCount_<?php echo h($object['id']); ?>" class="bold sightingsCounter_<?php echo h($object['id']); ?>" data-placement="top" data-toggle="popover" data-trigger="hover" data-content="<?php echo isset($sightingsData['data'][$object['id']]['html']) ? $sightingsData['data'][$object['id']]['html'] : ''; ?>">
|
||||
<?php echo '(<span class="green">' . h($s) . '</span>/<span class="red">' . h($f) . '</span>/<span class="orange">' . h($e) . '</span>)'; ?>
|
||||
</span>
|
||||
</td>
|
||||
<td class="short">
|
||||
<?php
|
||||
if (!empty($temp)) {
|
||||
echo $this->element('sparkline', array('id' => $object['id'], 'csv' => $temp));
|
||||
}
|
||||
?>
|
||||
</td>
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
$sigDisplay = $object['value'];
|
||||
if ('attachment' == $object['type'] || 'malware-sample' == $object['type'] ) {
|
||||
if ($object['type'] == 'attachment' && isset($object['image'])) {
|
||||
$extension = explode('.', $object['value']);
|
||||
$extension = end($extension);
|
||||
$uri = 'data:image/' . strtolower(h($extension)) . ';base64,' . h($object['image']);
|
||||
echo '<img class="screenshot screenshot-collapsed useCursorPointer" src="' . $uri . '" title="' . h($object['value']) . '" />';
|
||||
} else {
|
||||
$filenameHash = explode('|', nl2br(h($object['value'])));
|
||||
if (strrpos($filenameHash[0], '\\')) {
|
||||
$filepath = substr($filenameHash[0], 0, strrpos($filenameHash[0], '\\'));
|
||||
$filename = substr($filenameHash[0], strrpos($filenameHash[0], '\\'));
|
||||
echo h($filepath);
|
||||
echo '<a href="' . $baseurl . '/attributes/download/' . h($object['id']) . '" class="' . $linkClass . '">' . h($filename) . '</a>';
|
||||
} else {
|
||||
echo '<a href="' . $baseurl . '/attributes/download/' . h($object['id']) . '" class="' . $linkClass . '">' . h($filenameHash[0]) . '</a>';
|
||||
}
|
||||
if (isset($filenameHash[1])) echo '<br />' . $filenameHash[1];
|
||||
}
|
||||
} else if (strpos($object['type'], '|') !== false) {
|
||||
$separator = in_array($object['type'], array('ip-dst|port', 'ip-src|port')) ? ':' : '<br />';
|
||||
$separator_pos = strpos('|', $object['value']);
|
||||
$final_value = h($object['value']);
|
||||
echo substr_replace(h($object['value']), $separator, $separator_pos, strlen($separator));
|
||||
} else if ('vulnerability' == $object['type']) {
|
||||
$cveUrl = (is_null(Configure::read('MISP.cveurl'))) ? "http://www.google.com/search?q=" : Configure::read('MISP.cveurl');
|
||||
echo $this->Html->link($sigDisplay, $cveUrl . $sigDisplay, array('target' => '_blank', 'class' => $linkClass));
|
||||
} else if ('link' == $object['type']) {
|
||||
echo $this->Html->link($sigDisplay, $sigDisplay, array('class' => $linkClass));
|
||||
} else if ('cortex' == $object['type']) {
|
||||
echo '<div class="cortex-json" data-cortex-json="' . h($object['value']) . '">Cortex object</div>';
|
||||
} else if ('text' == $object['type']) {
|
||||
if ($object['category'] == 'External analysis' && preg_match('/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}/i', $object['value'])) {
|
||||
echo '<a href="' . $baseurl . '/events/view/' . h($object['value']) . '" class="' . $linkClass . '">' . h($object['value']) . '</a>';
|
||||
} else {
|
||||
$sigDisplay = str_replace("\r", '', h($sigDisplay));
|
||||
$sigDisplay = str_replace(" ", ' ', $sigDisplay);
|
||||
echo nl2br($sigDisplay);
|
||||
}
|
||||
} else if ('hex' == $object['type']) {
|
||||
$sigDisplay = str_replace("\r", '', $sigDisplay);
|
||||
echo '<span class="hex-value" title="Hexadecimal representation">' . nl2br(h($sigDisplay)) . '</span> <span role="button" tabindex="0" aria-label="Switch to binary representation" class="icon-repeat hex-value-convert useCursorPointer" title="Switch to binary representation"></span>';
|
||||
} else {
|
||||
$sigDisplay = str_replace("\r", '', $sigDisplay);
|
||||
echo nl2br(h($sigDisplay));
|
||||
}
|
||||
if (isset($object['validationIssue'])) echo ' <span class="icon-warning-sign" title="Warning, this doesn\'t seem to be a legitimage ' . strtoupper(h($object['type'])) . ' value"> </span>';
|
||||
?>
|
|
@ -1,4 +1,4 @@
|
|||
<div style="width:100%;display:inline-block;">
|
||||
<div style="display:inline-block;">
|
||||
<?php
|
||||
$full = $isAclTagger && $tagAccess;
|
||||
foreach ($tags as $tag):
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
}
|
||||
$fieldCount = 8;
|
||||
if (Configure::read('Plugin.Sightings_enable') !== false) {
|
||||
$fieldCount += 2;
|
||||
if (!empty($event['Sighting'])) {
|
||||
foreach ($sightingsData['data'] as $aid => $data) {
|
||||
$sightingsData['data'][$aid]['html'] = '';
|
||||
|
@ -174,419 +175,28 @@
|
|||
<th class="actions">Actions</th>
|
||||
</tr>
|
||||
<?php
|
||||
foreach ($event['objects'] as $k => $object):
|
||||
$extra = '';
|
||||
$extra2 = '';
|
||||
$extra3 = '';
|
||||
$linkClass = 'white';
|
||||
$currentType = 'denyForm';
|
||||
if ($object['objectType'] == 0 ) {
|
||||
$currentType = 'Attribute';
|
||||
if ($object['hasChildren'] == 1) {
|
||||
$extra = 'highlight1';
|
||||
$extra3 = 'highlightBlueSides highlightBlueTop';
|
||||
} else {
|
||||
$linkClass = '';
|
||||
}
|
||||
if (!$mayModify) $currentType = 'ShadowAttribute';
|
||||
} else {
|
||||
if (isset($object['proposal_to_delete']) && $object['proposal_to_delete']) {
|
||||
$extra = 'highlight3';
|
||||
unset($object['type']);
|
||||
} else $extra = 'highlight2';
|
||||
|
||||
$elements = array(
|
||||
0 => 'attribute',
|
||||
1 => 'proposal',
|
||||
2 => 'proposal_delete',
|
||||
3 => 'object'
|
||||
);
|
||||
foreach ($event['objects'] as $k => $object) {
|
||||
$element_type = 0;
|
||||
if ($object['objectType'] == 1 && !empty($object['proposal_to_delete'])) {
|
||||
$element_type = 1;
|
||||
} else if ($object['objectType'] == 3) {
|
||||
$element_type = 2;
|
||||
}
|
||||
if ($object['objectType'] == 1) {
|
||||
$extra2 = '1';
|
||||
$extra3 = 'highlightBlueSides';
|
||||
if (isset($object['firstChild'])) {
|
||||
$extra3 .= ' highlightBlueTop';
|
||||
}
|
||||
if (isset($object['lastChild'])) {
|
||||
$extra3 .= ' highlightBlueBottom';
|
||||
}
|
||||
}
|
||||
if (isset($object['deleted']) && $object['deleted']) {
|
||||
$extra .= ' background-light-red';
|
||||
}
|
||||
$extra .= (isset($object['deleted']) && $object['deleted']) ? ' background-light-red' : '';
|
||||
?>
|
||||
<tr id = "<?php echo $currentType . '_' . $object['id'] . '_tr'; ?>" class="<?php echo $extra3; ?>">
|
||||
<?php if ($mayModify): ?>
|
||||
<td class="<?php echo $extra; ?>" style="width:10px;" data-position="<?php echo h($k); ?>">
|
||||
<?php if ($object['objectType'] == 0): ?>
|
||||
<input id = "select_<?php echo $object['id']; ?>" class="select_attribute row_checkbox" type="checkbox" data-id="<?php echo $object['id'];?>" />
|
||||
<?php else: ?>
|
||||
<input id = "select_proposal_<?php echo $object['id']; ?>" class="select_proposal row_checkbox" type="checkbox" data-id="<?php echo $object['id'];?>" />
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<?php endif;
|
||||
if (isset($object['proposal_to_delete']) && $object['proposal_to_delete']):
|
||||
for ($i = 0; $i < $fieldCount; $i++):
|
||||
?>
|
||||
<td class="<?php echo $extra; ?>" style="font-weight:bold;"><?php echo ($i == 0 ? 'DELETE' : ' '); ?></td>
|
||||
<?php
|
||||
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'; ?>">
|
||||
<?php
|
||||
if (isset($object['timestamp'])) echo date('Y-m-d', $object['timestamp']);
|
||||
else echo ' ';
|
||||
?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="short <?php echo $extra; ?>">
|
||||
<?php
|
||||
if ($object['objectType'] != 0) {
|
||||
if (isset($object['Org']['name'])) {
|
||||
$imgAbsolutePath = APP . WEBROOT_DIR . DS . 'img' . DS . 'orgs' . DS . h($object['Org']['name']) . '.png';
|
||||
if (file_exists($imgAbsolutePath)) echo $this->Html->image('orgs/' . h($object['Org']['name']) . '.png', array('alt' => h($object['Org']['name']), 'title' => h($object['Org']['name']), 'style' => 'width:24px; height:24px'));
|
||||
else echo h($object['Org']['name']);
|
||||
}
|
||||
} else { ?>
|
||||
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
<td class="short <?php echo $extra; ?>">
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_category_placeholder'; ?>" class = "inline-field-placeholder"></div>
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_category_solid'; ?>" class="inline-field-solid" ondblclick="activateField('<?php echo $currentType; ?>', '<?php echo $object['id']; ?>', 'category', <?php echo $event['Event']['id'];?>);">
|
||||
<?php echo h($object['category']); ?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="short <?php echo $extra; ?>">
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_type_placeholder'; ?>" class = "inline-field-placeholder"></div>
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_type_solid'; ?>" class="inline-field-solid" ondblclick="activateField('<?php echo $currentType; ?>', '<?php echo $object['id']; ?>', 'type', <?php echo $event['Event']['id'];?>);">
|
||||
<?php echo h($object['type']); ?>
|
||||
</div>
|
||||
</td>
|
||||
<td id="<?php echo h($currentType) . '_' . h($object['id']) . '_container'; ?>" class="showspaces <?php echo $extra; ?> limitedWidth shortish">
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_value_placeholder'; ?>" class = "inline-field-placeholder"></div>
|
||||
<?php
|
||||
if ('attachment' !== $object['type'] && 'malware-sample' !== $object['type']) $editable = ' ondblclick="activateField(\'' . $currentType . '\', \'' . $object['id'] . '\', \'value\', \'' . $event['Event']['id'] . '\');"';
|
||||
else $editable = '';
|
||||
?>
|
||||
<div id = "<?php echo $currentType; ?>_<?php echo $object['id']; ?>_value_solid" class="inline-field-solid" <?php echo $editable; ?>>
|
||||
<span <?php if (Configure::read('Plugin.Enrichment_hover_enable') && isset($modules) && isset($modules['hover_type'][$object['type']])) echo 'class="eventViewAttributeHover" data-object-type="' . h($currentType) . '" data-object-id="' . h($object['id']) . '"'?>>
|
||||
<?php
|
||||
$sigDisplay = $object['value'];
|
||||
if ('attachment' == $object['type'] || 'malware-sample' == $object['type'] ) {
|
||||
if ($object['type'] == 'attachment' && isset($object['image'])) {
|
||||
$extension = explode('.', $object['value']);
|
||||
$extension = end($extension);
|
||||
$uri = 'data:image/' . strtolower(h($extension)) . ';base64,' . h($object['image']);
|
||||
echo '<img class="screenshot screenshot-collapsed useCursorPointer" src="' . $uri . '" title="' . h($object['value']) . '" />';
|
||||
} else {
|
||||
$t = ($object['objectType'] == 0 ? 'attributes' : 'shadow_attributes');
|
||||
$filenameHash = explode('|', nl2br(h($object['value'])));
|
||||
if (strrpos($filenameHash[0], '\\')) {
|
||||
$filepath = substr($filenameHash[0], 0, strrpos($filenameHash[0], '\\'));
|
||||
$filename = substr($filenameHash[0], strrpos($filenameHash[0], '\\'));
|
||||
echo h($filepath);
|
||||
echo '<a href="' . $baseurl . '/' . h($t) . '/download/' . h($object['id']) . '" class="' . $linkClass . '">' . h($filename) . '</a>';
|
||||
} else {
|
||||
echo '<a href="' . $baseurl . '/' . h($t) . '/download/' . h($object['id']) . '" class="' . $linkClass . '">' . h($filenameHash[0]) . '</a>';
|
||||
}
|
||||
if (isset($filenameHash[1])) echo '<br />' . $filenameHash[1];
|
||||
}
|
||||
} else if (strpos($object['type'], '|') !== false) {
|
||||
$filenameHash = explode('|', $object['value']);
|
||||
echo h($filenameHash[0]);
|
||||
if (isset($filenameHash[1])) {
|
||||
$separator = '<br />';
|
||||
if (in_array($object['type'], array('ip-dst|port', 'ip-src|port'))) {
|
||||
$separator = ':';
|
||||
}
|
||||
echo $separator . h($filenameHash[1]);
|
||||
}
|
||||
} else if ('vulnerability' == $object['type']) {
|
||||
if (! is_null(Configure::read('MISP.cveurl'))) {
|
||||
$cveUrl = Configure::read('MISP.cveurl');
|
||||
} else {
|
||||
$cveUrl = "http://www.google.com/search?q=";
|
||||
}
|
||||
echo $this->Html->link($sigDisplay, $cveUrl . $sigDisplay, array('target' => '_blank', 'class' => $linkClass));
|
||||
} else if ('link' == $object['type']) {
|
||||
echo $this->Html->link($sigDisplay, $sigDisplay, array('class' => $linkClass));
|
||||
} else if ('cortex' == $object['type']) {
|
||||
echo '<div class="cortex-json" data-cortex-json="' . h($object['value']) . '">Cortex object</div>';
|
||||
} else if ('text' == $object['type']) {
|
||||
if ($object['category'] == 'External analysis' && preg_match('/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}/i', $object['value'])) {
|
||||
echo '<a href="' . $baseurl . '/events/view/' . h($object['value']) . '" class="' . $linkClass . '">' . h($object['value']) . '</a>';
|
||||
} else {
|
||||
$sigDisplay = str_replace("\r", '', h($sigDisplay));
|
||||
$sigDisplay = str_replace(" ", ' ', $sigDisplay);
|
||||
echo nl2br($sigDisplay);
|
||||
}
|
||||
} else if ('hex' == $object['type']) {
|
||||
$sigDisplay = str_replace("\r", '', $sigDisplay);
|
||||
echo '<span class="hex-value" title="Hexadecimal representation">' . nl2br(h($sigDisplay)) . '</span> <span role="button" tabindex="0" aria-label="Switch to binary representation" class="icon-repeat hex-value-convert useCursorPointer" title="Switch to binary representation"></span>';
|
||||
} else {
|
||||
$sigDisplay = str_replace("\r", '', $sigDisplay);
|
||||
echo nl2br(h($sigDisplay));
|
||||
}
|
||||
if (isset($object['validationIssue'])) echo ' <span class="icon-warning-sign" title="Warning, this doesn\'t seem to be a legitimage ' . strtoupper(h($object['type'])) . ' value"> </span>';
|
||||
?>
|
||||
</span>
|
||||
<?php
|
||||
if (isset($object['warnings'])) {
|
||||
$temp = '';
|
||||
$components = array(1 => 0, 2 => 1);
|
||||
$valueParts = explode('|', $object['value']);
|
||||
foreach ($components as $component => $valuePart) {
|
||||
if (isset($object['warnings'][$component]) && isset($valueParts[$valuePart])) {
|
||||
foreach ($object['warnings'][$component] as $warning) $temp .= '<span class=\'bold\'>' . h($valueParts[$valuePart]) . '</span>: <span class=\'red\'>' . h($warning) . '</span><br />';
|
||||
}
|
||||
}
|
||||
echo ' <span class="icon-warning-sign" data-placement="right" data-toggle="popover" data-content="' . h($temp) . '" data-trigger="hover"> </span>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="shortish <?php echo $extra; ?>">
|
||||
<?php
|
||||
if ($object['objectType'] == 0):
|
||||
?>
|
||||
<div class="attributeTagContainer">
|
||||
<?php echo $this->element('ajaxAttributeTags', array('attributeId' => $object['id'], 'attributeTags' => $object['AttributeTag'], 'tagAccess' => ($isSiteAdmin || $mayModify || $me['org_id'] == $event['Event']['org_id']) )); ?>
|
||||
</div>
|
||||
<?php
|
||||
else:
|
||||
?>
|
||||
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
</td>
|
||||
<td class="showspaces bitwider <?php echo $extra; ?>">
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_comment_placeholder'; ?>" class = "inline-field-placeholder"></div>
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_comment_solid'; ?>" class="inline-field-solid" ondblclick="activateField('<?php echo $currentType; ?>', '<?php echo $object['id']; ?>', 'comment', <?php echo $event['Event']['id'];?>);">
|
||||
<?php echo nl2br(h($object['comment'])); ?>
|
||||
</div>
|
||||
</td>
|
||||
<?php
|
||||
if ($mayChangeCorrelation && !$event['Event']['disable_correlation']):
|
||||
if ($object['objectType'] == 0):
|
||||
?>
|
||||
<td class="short <?php echo $extra; ?>" style="padding-top:3px;">
|
||||
<input id="correlation_toggle_<?php echo h($object['id']); ?>" class="correlation-toggle" type="checkbox" data-attribute-id="<?php echo h($object['id']); ?>" <?php echo $object['disable_correlation'] ? '' : 'checked'; ?>>
|
||||
</td>
|
||||
<?php
|
||||
else:
|
||||
?>
|
||||
<td class="short <?php echo $extra; ?>" style="padding-top:3px;"> </td>
|
||||
<?php
|
||||
endif;
|
||||
endif;
|
||||
?>
|
||||
<td class="shortish <?php echo $extra; ?>">
|
||||
<ul class="inline" style="margin:0px;">
|
||||
<?php
|
||||
if ($object['objectType'] == 0) {
|
||||
$relatedObject = 'Attribute';
|
||||
$otherColour = $object['hasChildren'] == 0 ? 'blue' : 'white';
|
||||
} else {
|
||||
$relatedObject = 'ShadowAttribute';
|
||||
$otherColour = 'white';
|
||||
}
|
||||
$relatedObject = $object['objectType'] == 0 ? 'Attribute' : 'ShadowAttribute';
|
||||
|
||||
if (isset($event['Related' . $relatedObject][$object['id']]) && (null != $event['Related' . $relatedObject][$object['id']])) {
|
||||
foreach ($event['Related' . $relatedObject][$object['id']] as $relatedAttribute) {
|
||||
$relatedData = array('Event info' => $relatedAttribute['info'], 'Correlating Value' => $relatedAttribute['value'], 'date' => isset($relatedAttribute['date']) ? $relatedAttribute['date'] : 'N/A');
|
||||
$popover = '';
|
||||
foreach ($relatedData as $k => $v) {
|
||||
$popover .= '<span class=\'bold black\'>' . h($k) . '</span>: <span class="blue">' . h($v) . '</span><br />';
|
||||
}
|
||||
echo '<li style="padding-right: 0px; padding-left:0px;" data-toggle="popover" data-content="' . h($popover) . '" data-trigger="hover"><span>';
|
||||
if ($relatedAttribute['org_id'] == $me['org_id']) {
|
||||
echo $this->Html->link($relatedAttribute['id'], array('controller' => 'events', 'action' => 'view', $relatedAttribute['id'], true, $event['Event']['id']), array ('class' => 'red'));
|
||||
} else {
|
||||
echo $this->Html->link($relatedAttribute['id'], array('controller' => 'events', 'action' => 'view', $relatedAttribute['id'], true, $event['Event']['id']), array ('class' => $otherColour));
|
||||
}
|
||||
echo "</span></li>";
|
||||
echo ' ';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</td>
|
||||
<td class="shortish <?php echo $extra; ?>">
|
||||
<ul class="inline" style="margin:0px;">
|
||||
<?php
|
||||
if (!empty($object['Feed'])):
|
||||
foreach ($object['Feed'] as $feed):
|
||||
$popover = '';
|
||||
foreach ($feed as $k => $v):
|
||||
if ($k == 'id') continue;
|
||||
$popover .= '<span class=\'bold black\'>' . Inflector::humanize(h($k)) . '</span>: <span class="blue">' . h($v) . '</span><br />';
|
||||
endforeach;
|
||||
?>
|
||||
<li style="padding-right: 0px; padding-left:0px;" data-toggle="popover" data-content="<?php echo h($popover);?>" data-trigger="hover"><span>
|
||||
<?php
|
||||
if ($isSiteAdmin):
|
||||
echo $this->Html->link($feed['id'], array('controller' => 'feeds', 'action' => 'previewIndex', $feed['id']), array('style' => 'margin-right:3px;'));
|
||||
else:
|
||||
?>
|
||||
<span style="margin-right:3px;"><?php echo h($feed['id']);?></span>
|
||||
<?php
|
||||
endif;
|
||||
endforeach;
|
||||
?>
|
||||
</li>
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
</ul>
|
||||
</td>
|
||||
<td class="short <?php echo $extra; ?>">
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_to_ids_placeholder'; ?>" class = "inline-field-placeholder"></div>
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_to_ids_solid'; ?>" class="inline-field-solid" ondblclick="activateField('<?php echo $currentType; ?>', '<?php echo $object['id']; ?>', 'to_ids', <?php echo $event['Event']['id'];?>);">
|
||||
<?php
|
||||
if ($object['to_ids']) echo 'Yes';
|
||||
else echo 'No';
|
||||
?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="shortish <?php echo $extra; ?>">
|
||||
<?php
|
||||
$turnRed = '';
|
||||
if ($object['objectType'] == 0 && $object['distribution'] == 0) $turnRed = 'style="color:red"';
|
||||
?>
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_distribution_placeholder'; ?>" class = "inline-field-placeholder"></div>
|
||||
<div id = "<?php echo $currentType . '_' . $object['id'] . '_distribution_solid'; ?>" <?php echo $turnRed; ?> class="inline-field-solid" ondblclick="activateField('<?php echo $currentType; ?>', '<?php echo $object['id']; ?>', 'distribution', <?php echo $event['Event']['id'];?>);">
|
||||
<?php
|
||||
if ($object['objectType'] == 0) {
|
||||
if ($object['distribution'] == 4):
|
||||
?>
|
||||
<a href="/sharing_groups/view/<?php echo h($object['sharing_group_id']); ?>"><?php echo h($object['SharingGroup']['name']);?></a>
|
||||
<?php
|
||||
else:
|
||||
echo h($shortDist[$object['distribution']]);
|
||||
endif;
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</td>
|
||||
<?php
|
||||
endif;
|
||||
if (Configure::read('Plugin.Sightings_enable') !== false):
|
||||
?>
|
||||
<td class="shortish <?php echo $extra;?>">
|
||||
<span id="sightingForm_<?php echo h($object['id']);?>">
|
||||
<?php
|
||||
if ($object['objectType'] == 0):
|
||||
echo $this->Form->create('Sighting', array('id' => 'Sighting_' . $object['id'], 'url' => '/sightings/add/' . $object['id'], 'style' => 'display:none;'));
|
||||
echo $this->Form->input('type', array('label' => false, 'id' => 'Sighting_' . $object['id'] . '_type'));
|
||||
echo $this->Form->end();
|
||||
?>
|
||||
</span>
|
||||
<?php
|
||||
$temp = array();
|
||||
if (isset($sightingsData['csv'][$object['id']])) {
|
||||
$temp = $sightingsData['csv'][$object['id']];
|
||||
}
|
||||
?>
|
||||
<span class="icon-thumbs-up useCursorPointer" title="Add sighting" role="button" tabindex="0" aria-label="Add sighting" onClick="addSighting('0', '<?php echo h($object['id']); ?>', '<?php echo h($event['Event']['id']);?>', '<?php echo h($page); ?>');"> </span>
|
||||
<span class="icon-thumbs-down useCursorPointer" title="Mark as false-positive" role="button" tabindex="0" aria-label="Mark as false-positive" onClick="addSighting('1', '<?php echo h($object['id']); ?>', '<?php echo h($event['Event']['id']);?>', '<?php echo h($page); ?>');"> </span>
|
||||
<span class="icon-wrench useCursorPointer sightings_advanced_add" title="Advanced sightings" role="button" tabindex="0" aria-label="Advanced sightings" data-object-id="<?php echo h($object['id']); ?>" data-object-context="attribute"> </span>
|
||||
<span id="sightingCount_<?php echo h($object['id']); ?>" class="bold sightingsCounter_<?php echo h($object['id']); ?>" data-placement="top" data-toggle="popover" data-trigger="hover" data-content="<?php echo isset($sightingsData['data'][$object['id']]['html']) ? $sightingsData['data'][$object['id']]['html'] : ''; ?>">
|
||||
<?php
|
||||
$s = (!empty($sightingsData['data'][$object['id']]['sighting']['count']) ? $sightingsData['data'][$object['id']]['sighting']['count'] : 0);
|
||||
$f = (!empty($sightingsData['data'][$object['id']]['false-positive']['count']) ? $sightingsData['data'][$object['id']]['false-positive']['count'] : 0);
|
||||
$e = (!empty($sightingsData['data'][$object['id']]['expiration']['count']) ? $sightingsData['data'][$object['id']]['expiration']['count'] : 0);
|
||||
?>
|
||||
</span>
|
||||
<span id="ownSightingCount_<?php echo h($object['id']); ?>" class="bold sightingsCounter_<?php echo h($object['id']); ?>" data-placement="top" data-toggle="popover" data-trigger="hover" data-content="<?php echo isset($sightingsData['data'][$object['id']]['html']) ? $sightingsData['data'][$object['id']]['html'] : ''; ?>">
|
||||
<?php echo '(<span class="green">' . h($s) . '</span>/<span class="red">' . h($f) . '</span>/<span class="orange">' . h($e) . '</span>)'; ?>
|
||||
</span>
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
</td>
|
||||
<td class="short <?php echo $extra; ?>">
|
||||
<?php
|
||||
if ($object['objectType'] == 0 && !empty($temp)) {
|
||||
echo $this->element('sparkline', array('id' => $object['id'], 'csv' => $temp));
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
<td class="short action-links <?php echo $extra;?>">
|
||||
<?php
|
||||
if ($object['objectType'] == 0) {
|
||||
if ($object['deleted']):
|
||||
if ($isSiteAdmin || $mayModify):
|
||||
?>
|
||||
<span class="icon-repeat useCursorPointer" title="Restore attribute" role="button" tabindex="0" aria-label="Restore attribute" onClick="deleteObject('attributes', 'restore', '<?php echo h($object['id']); ?>', '<?php echo h($event['Event']['id']); ?>');"></span>
|
||||
<span class="icon-trash useCursorPointer" title="Delete attribute" role="button" tabindex="0" aria-label="Permanently delete attribute" onClick="deleteObject('attributes', 'delete', '<?php echo h($object['id']) . '/true'; ?>', '<?php echo h($event['Event']['id']); ?>');"></span>
|
||||
<?php
|
||||
endif;
|
||||
else:
|
||||
if ($isSiteAdmin || !$mayModify):
|
||||
if (isset($modules) && isset($modules['types'][$object['type']])):
|
||||
?>
|
||||
<span class="icon-asterisk useCursorPointer" title="Query enrichment" role="button" tabindex="0" aria-label="Query enrichment" onClick="simplePopup('<?php echo $baseurl;?>/events/queryEnrichment/<?php echo h($object['id']);?>/ShadowAttribute');" title="Propose enrichment"> </span>
|
||||
<?php
|
||||
endif;
|
||||
if (isset($cortex_modules) && isset($cortex_modules['types'][$object['type']])):
|
||||
?>
|
||||
<span class="icon-eye-open useCursorPointer" title="Query Cortex" role="button" tabindex="0" aria-label="Query Cortex" onClick="simplePopup('<?php echo $baseurl;?>/events/queryEnrichment/<?php echo h($object['id']);?>/ShadowAttribute/Cortex');" title="Propose enrichment through Cortex"></span>
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
<a href="<?php echo $baseurl;?>/shadow_attributes/edit/<?php echo $object['id']; ?>" title="Propose Edit" class="icon-share useCursorPointer"></a>
|
||||
<span class="icon-trash useCursorPointer" title="Propose Deletion" role="button" tabindex="0" aria-label="Propose deletion" onClick="deleteObject('shadow_attributes', 'delete', '<?php echo h($object['id']); ?>', '<?php echo h($event['Event']['id']); ?>');"></span>
|
||||
<?php
|
||||
if ($isSiteAdmin):
|
||||
?>
|
||||
<span class="verticalSeparator"> </span>
|
||||
<?php endif;
|
||||
endif;
|
||||
if ($isSiteAdmin || $mayModify) {
|
||||
if (isset($modules) && isset($modules['types'][$object['type']])):
|
||||
?>
|
||||
<span class="icon-asterisk useCursorPointer" onClick="simplePopup('<?php echo $baseurl;?>/events/queryEnrichment/<?php echo h($object['id']);?>/Attribute');" title="Add enrichment" role="button" tabindex="0" aria-label="Add enrichment"> </span>
|
||||
<?php
|
||||
endif;
|
||||
if (isset($cortex_modules) && isset($cortex_modules['types'][$object['type']])):
|
||||
?>
|
||||
<span class="icon-eye-open useCursorPointer" onClick="simplePopup('<?php echo $baseurl;?>/events/queryEnrichment/<?php echo h($object['id']);?>/Attribute/Cortex');" title="Add enrichment" role="button" tabindex="0" aria-label="Add enrichment via Cortex">C</span>
|
||||
<?php
|
||||
endif;
|
||||
|
||||
?>
|
||||
<a href="<?php echo $baseurl;?>/attributes/edit/<?php echo $object['id']; ?>" title="Edit" class="icon-edit useCursorPointer"></a>
|
||||
<span class="icon-trash useCursorPointer" title="Delete attribute" role="button" tabindex="0" aria-label="Delete attribute" onClick="deleteObject('attributes', 'delete', '<?php echo h($object['id']); ?>', '<?php echo h($event['Event']['id']); ?>');"></span>
|
||||
<?php
|
||||
}
|
||||
endif;
|
||||
} else {
|
||||
if (($event['Orgc']['id'] == $me['org_id'] && $mayModify) || $isSiteAdmin) {
|
||||
echo $this->Form->create('Shadow_Attribute', array('id' => 'ShadowAttribute_' . $object['id'] . '_accept', 'url' => '/shadow_attributes/accept/' . $object['id'], 'style' => 'display:none;'));
|
||||
echo $this->Form->end();
|
||||
?>
|
||||
<span class="icon-ok useCursorPointer" title="Accept Proposal" role="button" tabindex="0" aria-label="Accept proposal" onClick="acceptObject('shadow_attributes', '<?php echo $object['id']; ?>', '<?php echo $event['Event']['id']; ?>');"></span>
|
||||
<?php
|
||||
}
|
||||
if (($event['Orgc']['id'] == $me['org_id'] && $mayModify) || $isSiteAdmin || ($object['org_id'] == $me['org_id'])) {
|
||||
?>
|
||||
<span class="icon-trash useCursorPointer" title="Discard proposal" role="button" tabindex="0" aria-label="Discard proposal" onClick="deleteObject('shadow_attributes', 'discard' ,'<?php echo $object['id']; ?>', '<?php echo $event['Event']['id']; ?>');"></span>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
endforeach;
|
||||
echo $this->element('/Events/View/row_' . $object['objectType'], array(
|
||||
'object' => $object,
|
||||
'k' => $k,
|
||||
'mayModify' => $mayModify,
|
||||
'mayChangeCorrelation' => $mayChangeCorrelation,
|
||||
'page' => $page,
|
||||
'fieldCount' => $fieldCount
|
||||
));
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
</div>
|
||||
|
|
|
@ -272,7 +272,6 @@ td.highlight1 {
|
|||
td.highlight2 {
|
||||
background-color: #747170 !important;
|
||||
color: #ffffff !important;
|
||||
|
||||
}
|
||||
|
||||
td.highlight3 {
|
||||
|
@ -1714,6 +1713,143 @@ table.table.table-striped tr.deleted_row td {
|
|||
background-color:#f4f4f4;
|
||||
}
|
||||
|
||||
tr.tableInsetOrangeFirst td:first-child {
|
||||
box-shadow:
|
||||
inset 0px 2px 0px 0px #f57900,
|
||||
inset 3px 0px 0px 0px #f57900;
|
||||
border-top:0px !important;
|
||||
}
|
||||
|
||||
tr.tableInsetOrangeFirst td {
|
||||
box-shadow:
|
||||
inset 0px 2px 0px 0px #f57900;
|
||||
border-top:0px !important;
|
||||
}
|
||||
|
||||
tr.tableInsetOrangeFirst td:last-child {
|
||||
box-shadow:
|
||||
inset 0px 2px 0px 0px #f57900,
|
||||
inset -2px 0px 0px 0px #f57900;
|
||||
border-top:0px !important;
|
||||
}
|
||||
|
||||
tr.tableInsetOrangeMiddle td:first-child {
|
||||
box-shadow:
|
||||
inset 3px 0px 0px 0px #f57900;
|
||||
border-top:0px !important;
|
||||
}
|
||||
|
||||
tr.tableInsetOrangeMiddle td:last-child {
|
||||
box-shadow:
|
||||
inset -3px 0px 0px 0px #f57900;
|
||||
border-top:0px !important;
|
||||
}
|
||||
|
||||
tr.tableInsetOrangeLast td:first-child {
|
||||
box-shadow:
|
||||
inset 0px -3px 0px 0px #f57900,
|
||||
inset 3px 0px 0px 0px #f57900;
|
||||
border-top:0px !important;
|
||||
}
|
||||
|
||||
tr.tableInsetOrangeLast td {
|
||||
box-shadow:
|
||||
inset 0px -3px 0px 0px #f57900;
|
||||
border-top:0px !important;
|
||||
}
|
||||
|
||||
tr.tableInsetOrangeLast td:last-child {
|
||||
box-shadow:
|
||||
inset 0px -3px 0px 0px #f57900,
|
||||
inset -3px 0px 0px 0px #f57900;
|
||||
border-top:0px !important;
|
||||
}
|
||||
|
||||
tr.tableInsetOrange td:first-child {
|
||||
box-shadow:
|
||||
inset 0px 2px 0px 0px #f57900,
|
||||
inset 0px -3px 0px 0px #f57900,
|
||||
inset 2px 0px 0px 0px #f57900;
|
||||
border-top:0px !important;
|
||||
}
|
||||
|
||||
tr.tableInsetOrange td {
|
||||
box-shadow:
|
||||
inset 0px 2px 0px 0px #f57900,
|
||||
inset 0px -3px 0px 0px #f57900;
|
||||
border-top:0px !important;
|
||||
}
|
||||
|
||||
tr.tableInsetOrange td:last-child {
|
||||
box-shadow:
|
||||
inset 0px 2px 0px 0px #f57900,
|
||||
inset 0px -3px 0px 0px #f57900,
|
||||
inset -2px 0px 0px 0px #f57900;
|
||||
border-top:0px !important;
|
||||
}
|
||||
|
||||
.tableHighlightBorder {
|
||||
border-radius: 3px !important;
|
||||
border-width: 3px;
|
||||
border-style: solid;
|
||||
}
|
||||
|
||||
.tableHighlightBorderTop {
|
||||
border-radius: 3px !important;
|
||||
border-width: 3px;
|
||||
border-style: solid;
|
||||
border-bottom: 0px;
|
||||
}
|
||||
|
||||
.tableHighlightBorderCenter {
|
||||
border-radius: 3px !important;
|
||||
border-width: 3px;
|
||||
border-style: solid;
|
||||
border-bottom: 0px;
|
||||
border-top: 0px;
|
||||
}
|
||||
|
||||
.tableHighlightBorderBottom {
|
||||
border-radius: 3px !important;
|
||||
border-width: 3px;
|
||||
border-style:solid;
|
||||
border-top: 0px;
|
||||
}
|
||||
|
||||
tr.tableHighlightBorderBottom td {
|
||||
border-top:0px !important;
|
||||
}
|
||||
|
||||
.borderRed {
|
||||
border-color:#cc0000;
|
||||
}
|
||||
|
||||
.borderOrange {
|
||||
border-color:#f57900;
|
||||
}
|
||||
|
||||
.borderBlue {
|
||||
border-color:#3465a4;
|
||||
}
|
||||
|
||||
tr.darkOrangeRow td, .darkOrangeElement {
|
||||
background-color: #ce5c00 !important;
|
||||
color: #ffffff;
|
||||
border-top:0px !important;
|
||||
}
|
||||
|
||||
tr.blueRow td, .blueElement {
|
||||
background-color: #3465a4 !important;
|
||||
color: #ffffff;
|
||||
border-top:0px !important;
|
||||
}
|
||||
|
||||
tr.redRow td, .redElement {
|
||||
background-color: #cc0000 !important;
|
||||
color: #ffffff;
|
||||
border-top:0px !important;
|
||||
}
|
||||
|
||||
@-webkit-keyframes rotation {
|
||||
from {-webkit-transform: rotate(0deg);}
|
||||
to {-webkit-transform: rotate(359deg);}
|
||||
|
|
Loading…
Reference in New Issue