2013-03-20 18:41:35 +01:00
< ? php
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2010 Artica Soluciones Tecnologicas
// Please see http://pandorafms.org for full contribution list
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation for version 2.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
class Alerts {
private $correct_acl = false ;
private $default = true ;
private $free_search = '' ;
private $group = 0 ;
private $status = 'all' ;
private $standby = - 1 ;
private $alert_status_items = null ;
private $alert_standby_items = null ;
function __construct () {
$this -> alert_status_items = array (
'all_enabled' => __ ( 'All (Enabled)' ),
'all' => __ ( 'All' ),
'fired' => __ ( 'Fired' ),
'notfired' => __ ( 'Not fired' ),
'disabled' => __ ( 'Disabled' ));
$this -> alert_standby_items = array (
'-1' => __ ( 'All' ),
'1' => __ ( 'Standby on' ),
'0' => __ ( 'Standby off' ));
$system = System :: getInstance ();
if ( $system -> checkACL ( " LM " )) {
$this -> correct_acl = true ;
}
else {
$this -> correct_acl = false ;
}
}
private function alertsGetFilters () {
$system = System :: getInstance ();
$this -> free_search = $system -> getRequest ( 'free_search' , '' );
if ( $this -> free_search != '' ) {
$this -> default = false ;
}
$this -> status = $system -> getRequest ( 'status' , __ ( " Status " ));
if ( $this -> status === __ ( " Status " )) {
$this -> status = 'all' ;
}
else {
$this -> default = false ;
}
$this -> group = $system -> getRequest ( 'group' , __ ( " Group " ));
if ( $this -> group === __ ( " Group " )) {
$this -> group = 0 ;
}
else {
$this -> default = false ;
}
$this -> standby = $system -> getRequest ( 'standby' , __ ( 'Stand by' ));
if ( $this -> standby === __ ( 'Stand by' )) {
$this -> standby = - 1 ;
}
else {
$this -> default = false ;
}
}
public function ajax ( $parameter2 = false ) {
$system = System :: getInstance ();
if ( ! $this -> correct_acl ) {
return ;
}
else {
switch ( $parameter2 ) {
case 'xxxx' :
break ;
}
}
}
public function show () {
if ( ! $this -> correct_acl ) {
$this -> show_fail_acl ();
}
else {
$this -> alertsGetFilters ();
$this -> show_alerts ();
}
}
private function show_fail_acl () {
$ui = Ui :: getInstance ();
$ui -> createPage ();
2013-03-21 19:47:28 +01:00
$options [ 'type' ] = 'onStart' ;
$options [ 'title_text' ] = __ ( 'You don\'t have access to this page' );
$options [ 'content_text' ] = __ ( 'Access to this page is restricted to authorized users only, please contact system administrator if you need assistance. <br><br>Please know that all attempts to access this page are recorded in security logs of Pandora System Database' );
$ui -> addDialog ( $options );
2013-03-20 18:41:35 +01:00
$ui -> showPage ();
}
private function show_alerts () {
$ui = Ui :: getInstance ();
$ui -> createPage ();
$ui -> createDefaultHeader ( __ ( " PandoraFMS: Alerts " ));
$ui -> showFooter ( false );
$ui -> beginContent ();
$filter_title = sprintf ( __ ( 'Filter Alerts by %s' ),
$this -> filterAlertsGetString ());
$ui -> contentBeginCollapsible ( $filter_title );
$ui -> beginForm ();
$options = array (
'name' => 'page' ,
'type' => 'hidden' ,
'value' => 'alerts'
);
$ui -> formAddInput ( $options );
$system = System :: getInstance ();
$groups = users_get_groups_for_select (
$system -> getConfig ( 'id_user' ), " ER " , true , true , false , 'id_grupo' );
$options = array (
'name' => 'group' ,
'title' => __ ( 'Group' ),
'label' => __ ( 'Group' ),
'items' => $groups ,
'selected' => $this -> group
);
$ui -> formAddSelectBox ( $options );
$options = array (
'name' => 'free_search' ,
'value' => $this -> free_search ,
'placeholder' => __ ( 'Free search' )
);
$ui -> formAddInputSearch ( $options );
$options = array (
'name' => 'status' ,
'title' => __ ( 'Status' ),
'label' => __ ( 'Status' ),
'items' => $this -> alert_status_items ,
'selected' => $this -> status
);
$ui -> formAddSelectBox ( $options );
$options = array (
'name' => 'standby' ,
'title' => __ ( 'Stand by' ),
'label' => __ ( 'Stand by' ),
'items' => $this -> alert_standby_items ,
'selected' => $this -> standby
);
$ui -> formAddSelectBox ( $options );
$options = array (
'icon' => 'refresh' ,
'icon_pos' => 'right' ,
'text' => __ ( 'Apply Filter' )
);
$ui -> formAddSubmitButton ( $options );
$html = $ui -> getEndForm ();
$ui -> contentCollapsibleAddItem ( $html );
$ui -> contentEndCollapsible ();
$this -> listAlertsHtml ();
$ui -> endContent ();
$ui -> showPage ();
}
private function listAlertsHtml () {
$countAlerts = alerts_get_alerts ( $this -> group ,
$this -> free_search , $this -> status , $this -> standby , " LM " , true );
$alerts = alerts_get_alerts ( $this -> group ,
$this -> free_search , $this -> status , $this -> standby , " LM " );
$table = array ();
foreach ( $alerts as $alert ) {
if ( $alert [ 'alert_disabled' ]) {
$disabled_style = " <i style='color: grey;'>%s</i> " ;
}
else {
$disabled_style = " %s " ;
}
if ( $alert [ " times_fired " ] > 0 ) {
$status = STATUS_ALERT_FIRED ;
$title = __ ( 'Alert fired' ) . ' ' . $alert [ " times_fired " ] . ' ' . __ ( 'times' );
}
elseif ( $alert [ " disabled " ] > 0 ) {
$status = STATUS_ALERT_DISABLED ;
$title = __ ( 'Alert disabled' );
}
else {
$status = STATUS_ALERT_NOT_FIRED ;
$title = __ ( 'Alert not fired' );
}
$row = array ();
$row [ __ ( 'Agent' )] = sprintf ( $disabled_style ,
'<a href="">' . io_safe_output ( $alert [ 'agent_name' ])) . '</a>' ;
$row [ __ ( 'Module' )] = sprintf ( $disabled_style ,
io_safe_output ( $alert [ 'module_name' ]));
$row [ __ ( 'Template' )] = sprintf ( $disabled_style ,
io_safe_output ( $alert [ 'template_name' ]));
$row [ __ ( 'Last Fired' )] = sprintf ( $disabled_style ,
ui_print_timestamp ( $alert [ " last_fired " ], true ));
$row [ __ ( 'Status' )] = ui_print_status_image ( $status , $title , true );
$table [] = $row ;
}
$ui = UI :: getInstance ();
if ( empty ( $table )) {
$ui -> contentAddHtml ( '<p style="color: #ff0000;">' . __ ( 'No alerts' ) . '</p>' );
}
else {
$tableHTML = new Table ();
$tableHTML -> importFromHash ( $table );
$ui -> contentAddHtml ( $tableHTML -> getHTML ());
}
}
private function filterAlertsGetString () {
if ( $this -> default ) {
return __ ( " (Default) " );
}
else {
$status_text = $this -> alert_status_items [ $this -> status ];
$standby_text = $this -> alert_standby_items [ $this -> standby ];
$group_text = groups_get_name ( $this -> group , true );
return sprintf ( __ ( '(Status: %s - Standby: %s - Group: %s - Free Search: %s)' ),
$status_text , $standby_text , $group_text , $this -> free_search );
}
}
}
?>