diff --git a/html/includes/print-alerts.php b/html/includes/print-alerts.php index a8c90cd638..944fdec197 100644 --- a/html/includes/print-alerts.php +++ b/html/includes/print-alerts.php @@ -6,162 +6,63 @@ -
- 0) { - $results = $_POST['results']; -} else { - $results = 50; -} - -echo '
- - - - - - - - - '; - -echo (' -'); - -$rulei=1; -$count_query = "SELECT COUNT(alerts.id)"; -$full_query = "SELECT alerts.*, devices.hostname"; -$sql = ''; -$param = array(); -if(isset($device['device_id']) && $device['device_id'] > 0) { - $sql = 'AND `alerts`.`device_id`=?'; - $param = array($device['device_id']); -} -$query = " FROM `alerts` LEFT JOIN `devices` ON `alerts`.`device_id`=`devices`.`device_id` RIGHT JOIN alert_rules ON alerts.rule_id=alert_rules.id WHERE `state` IN (1,2,3,4) $sql ORDER BY `alerts`.`timestamp` DESC"; -$count_query = $count_query . $query; -$count = dbFetchCell($count_query,$param); -if(!isset($_POST['page_number']) && $_POST['page_number'] < 1) { - $page_number = 1; -} else { - $page_number = $_POST['page_number']; -} -$start = ($page_number - 1) * $results; -$full_query = $full_query . $query . " LIMIT $start,$results"; - -foreach( dbFetchRows($full_query, $param) as $alert ) { - $rule = dbFetchRow("SELECT * FROM alert_rules WHERE id = ? LIMIT 1", array($alert['rule_id'])); - $log = dbFetchCell("SELECT details FROM alert_log WHERE rule_id = ? AND device_id = ? ORDER BY id DESC LIMIT 1", array($alert['rule_id'],$alert['device_id'])); - $log_detail = json_decode(gzuncompress($log),true); - $fault_detail = ''; - foreach( $log_detail['rule'] as $tmp_alerts ) { - foreach ($tmp_alerts as $k=>$v) { - if( !empty($v) && $k != 'device_id' && (stristr($k,'id') || stristr($k,'desc')) && substr_count($k,'_') <= 1 ) { - $fault_detail .= $k.' => '.$v."\n "; - } - } - $fault_detail .= "\n"; - } - - $ico = "ok"; - $col = "green"; - $extra = ""; - if( (int) $alert['state'] === 0 ) { - $ico = "ok"; - $col = "green"; - } elseif( (int) $alert['state'] === 1 ) { - $ico = "volume-up"; - $col = "red"; - $extra = "danger"; - } elseif( (int) $alert['state'] === 2 ) { - $ico = "volume-off"; - $col = "#800080"; - $extra = "warning"; - } - $alert_checked = ''; - $orig_ico = $ico; - $orig_col = $col; - $orig_class = $extra; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo "\r\n"; -} -if($count % $results > 0) { - echo(' - - '); -} -echo '
#RuleHostnameTimestampSeverityAcknowledge
'); -if ($_SESSION['userlevel'] >= '10') { - echo(''); -} -echo ('
#".((int) $rulei++)."".htmlentities($rule['name'])."".$alert['hostname']."".($alert['timestamp'] ? $alert['timestamp'] : "N/A")."".$rule['severity']; - if($alert['state'] == 3) { - echo " +"; - } elseif($alert['state'] == 4) { - echo " -"; - } - echo ""; - if ($_SESSION['userlevel'] >= '10') { - $ack_ico = 'volume-up'; - $ack_col = 'success'; - if(in_array($alert['state'],array(2,3,4))) { - $ack_ico = 'volume-off'; - $ack_col = 'danger'; - } - echo ""; - } - echo "
'. generate_pagination($count,$results,$page_number) .'
- - - -
'; -?> +
+ + + + + + + + + + + + +
Status#RuleHostnameTimestampSeverityAcknowledge
+
diff --git a/html/includes/table/alerts.inc.php b/html/includes/table/alerts.inc.php new file mode 100644 index 0000000000..02f61484bb --- /dev/null +++ b/html/includes/table/alerts.inc.php @@ -0,0 +1,110 @@ + 0) { + $where .= ' AND `alerts`.`device_id`='.$_POST['device_id']; +} + +if (isset($searchPhrase) && !empty($searchPhrase)) { + $sql .= " AND (`timestamp` LIKE '%?%' OR `rule` LIKE '%?%' OR `name` LIKE '%?%' OR `hostname` LIKE '%?%')"; + $param[] = array($searchPhrase,$searchPhrase,$searchPhrase,$serchPhrase); +} + +$sql = " FROM `alerts` LEFT JOIN `devices` ON `alerts`.`device_id`=`devices`.`device_id` RIGHT JOIN alert_rules ON alerts.rule_id=alert_rules.id WHERE $where AND `state` IN (1,2,3,4) $sql"; + +$count_sql = "SELECT COUNT(`alerts`.`id`) $sql"; +$total = dbFetchCell($count_sql,$param); + +if (!isset($sort) || empty($sort)) { + $sort = 'timestamp DESC'; +} + +$sql .= " ORDER BY $sort"; + +if (isset($current)) { + $limit_low = ($current * $rowCount) - ($rowCount); + $limit_high = $rowCount; +} + +if ($rowCount != -1) { + $sql .= " LIMIT $limit_low,$limit_high"; +} + +$sql = "SELECT `alerts`.*, `devices`.`hostname` AS `hostname`,`alert_rules`.`rule` AS `rule`, `alert_rules`.`name` AS `name`, `alert_rules`.`severity` AS `severity` $sql"; + +$rulei = 0; +foreach (dbFetchRows($sql,$param) as $alert) { + $log = dbFetchCell("SELECT details FROM alert_log WHERE rule_id = ? AND device_id = ? ORDER BY id DESC LIMIT 1", array($alert['rule_id'],$alert['device_id'])); + $log_detail = json_decode(gzuncompress($log),true); + foreach ( $log_detail['rule'] as $tmp_alerts ) { + foreach ($tmp_alerts as $k=>$v) { + if (!empty($v) && $k != 'device_id' && (stristr($k,'id') || stristr($k,'desc')) && substr_count($k,'_') <= 1) { + $fault_detail .= $k.' => '.$v."\n "; + } + } + $fault_detail .= "\n"; + } + + $ico = "ok"; + $col = "green"; + $extra = ""; + $msg = ""; + if ( (int) $alert['state'] === 0 ) { + $ico = "ok"; + $col = "green"; + $extra = "success"; + $msg = "OK"; + } elseif ( (int) $alert['state'] === 1 || (int) $alert['state'] === 3 || (int) $alert['state'] === 4) { + $ico = "volume-up"; + $col = "red"; + $extra = "danger"; + $msg = "ALERT"; + if ( (int) $alert['state'] === 3) { + $msg = "WORSE"; + } elseif ( (int) $alert['state'] === 4) { + $msg = "BETTER"; + } + } elseif ( (int) $alert['state'] === 2) { + $ico = "volume-off"; + $col = "#800080"; + $extra = "warning"; + $msg = "MUTED"; + } + $alert_checked = ''; + $orig_ico = $ico; + $orig_col = $col; + $orig_class = $extra; + + $severity = $alert['severity']; + if ($alert['state'] == 3) { + $severity .= " +"; + } elseif ($alert['state'] == 4) { + $severity .= " -"; + } + + if ($_SESSION['userlevel'] >= '10') { + $ack_ico = 'volume-up'; + $ack_col = 'success'; + if(in_array($alert['state'],array(2,3,4))) { + $ack_ico = 'volume-off'; + $ack_col = 'danger'; + } + } + + $response[] = array('id'=>"#".$rulei++."", + 'rule'=>"".htmlentities($alert['name'])."", + 'hostname'=>"".$alert['hostname']."", + 'timestamp'=>($alert['timestamp'] ? $alert['timestamp'] : "N/A"), + 'severity'=>$severity, + 'ack_col'=>$ack_col, + 'state'=>$alert['state'], + 'alert_id'=>$alert['id'], + 'ack_ico'=>$ack_ico, + 'extra'=>$extra, + 'msg'=>$msg); + +} + +$output = array('current'=>$current,'rowCount'=>$rowCount,'rows'=>$response,'total'=>$total); +echo _json_encode($output);