mirror of https://github.com/MISP/MISP
new: [cleanup] Added admin tool to remove all published empty events
- part of the solution to the empty event sync issue introduced in 2.4.107 - skips the event blacklistingpull/4610/merge
parent
0bd0d7e090
commit
3bcaab013e
|
@ -96,6 +96,7 @@ class ACLComponent extends Component
|
|||
'create_dummy_event' => array(),
|
||||
'create_massive_dummy_events' => array(),
|
||||
'csv' => array('*'),
|
||||
'cullEmptyEvents' => array(),
|
||||
'delegation_index' => array('*'),
|
||||
'delete' => array('perm_add'),
|
||||
'deleteNode' => array('*'),
|
||||
|
|
|
@ -5875,4 +5875,34 @@ class EventsController extends AppController
|
|||
$this->redirect('/events/view/' . $eventId);
|
||||
}
|
||||
}
|
||||
|
||||
public function cullEmptyEvents()
|
||||
{
|
||||
$eventIds = $this->Event->find('list', array(
|
||||
'conditions' => array('Event.published' => 1),
|
||||
'fields' => array('Event.id', 'Event.uuid'),
|
||||
'recursive' => -1
|
||||
));
|
||||
$count = 0;
|
||||
$this->Event->skipBlacklist = true;
|
||||
foreach ($eventIds as $eventId => $eventUuid) {
|
||||
$result = $this->Event->Attribute->find('first', array(
|
||||
'conditions' => array('Attribute.event_id' => $eventId),
|
||||
'recursive' => -1,
|
||||
'fields' => array('Attribute.id', 'Attribute.event_id')
|
||||
));
|
||||
if (empty($result)) {
|
||||
$this->Event->delete($eventId);
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
$this->Event->skipBlacklist = null;
|
||||
$message = __('%s event(s) deleted.', $count);
|
||||
if ($this->_isRest()) {
|
||||
return $this->RestResponse->viewData($message, $this->response->type());
|
||||
} else {
|
||||
$this->Flash->success($message);
|
||||
$this->redirect($this->referer());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -479,7 +479,7 @@ class Event extends AppModel
|
|||
public function beforeDelete($cascade = true)
|
||||
{
|
||||
// blacklist the event UUID if the feature is enabled
|
||||
if (Configure::read('MISP.enableEventBlacklisting') !== false) {
|
||||
if (Configure::read('MISP.enableEventBlacklisting') !== false && empty($this->skipBlacklist)) {
|
||||
$this->EventBlacklist = ClassRegistry::init('EventBlacklist');
|
||||
$this->EventBlacklist->create();
|
||||
$orgc = $this->Orgc->find('first', array('conditions' => array('Orgc.id' => $this->data['Event']['orgc_id']), 'recursive' => -1, 'fields' => array('Orgc.name')));
|
||||
|
|
|
@ -369,6 +369,7 @@
|
|||
</div><br />
|
||||
<span class="btn btn-inverse" role="button" tabindex="0" aria-label="<?php echo __('Check for orphaned attribute');?>" title="<?php echo __('Check for orphaned attributes');?>" style="padding-top:1px;padding-bottom:1px;" onClick="checkOrphanedAttributes();"><?php echo __('Check for orphaned attributes');?></span><br /><br />
|
||||
<?php echo $this->Form->postButton(__('Remove orphaned attributes'), $baseurl . '/attributes/pruneOrphanedAttributes', $options = array('class' => 'btn btn-primary', 'style' => 'padding-top:1px;padding-bottom:1px;')); ?>
|
||||
<?php echo $this->Form->postButton(__('Remove published empty events'), $baseurl . '/events/cullEmptyEvents', $options = array('class' => 'btn btn-primary', 'style' => 'padding-top:1px;padding-bottom:1px;')); ?>
|
||||
<h3><?php echo __('Administrator On-demand Action');?></h3>
|
||||
<p><?php echo __('Click the following button to go to the Administrator On-demand Action page.');?></p>
|
||||
<span class="btn btn-inverse" style="padding-top:1px;padding-bottom:1px;" onClick="location.href = '<?php echo $baseurl; ?>/servers/ondemandAction/';"><?php echo __('Administrator On-demand Action');?></span>
|
||||
|
|
Loading…
Reference in New Issue