false, 'count' => -1, 'delay' => 300, 'invert' => false, 'interval' => 300, ); foreach ($default_rules as $add_rule) { $extra = $default_extra; if (isset($add_rule['extra'])) { $extra = array_replace($extra, json_decode($add_rule['extra'], true)); } $qb = QueryBuilderParser::fromOld($add_rule['rule']); $insert = array( 'rule' => '', 'builder' => json_encode($qb), 'query' => $qb->toSql(), 'severity' => 'critical', 'extra' => json_encode($extra), 'disabled' => 0, 'name' => $add_rule['name'] ); dbInsert($insert, 'alert_rules'); } unset($qb); } require_once 'includes/html/modal/new_alert_rule.inc.php'; require_once 'includes/html/modal/delete_alert_rule.inc.php'; require_once 'includes/html/modal/alert_rule_collection.inc.php'; ?>
0) { $results = $_POST['results']; } else { $results = 50; } echo '
'; echo ''; $param = []; if (isset($device['device_id']) && $device['device_id'] > 0) { //device selected $global_rules = "SELECT ar1.* FROM alert_rules AS ar1 WHERE ar1.id NOT IN (SELECT agm1.rule_id FROM alert_group_map AS agm1 UNION DISTINCT SELECT adm1.rule_id FROM alert_device_map AS adm1)"; $device_rules = "SELECT ar2.* FROM alert_rules AS ar2 WHERE ar2.id IN (SELECT adm2.rule_id FROM alert_device_map AS adm2 WHERE adm2.device_id=?)"; $param[] = $device['device_id']; $device_group_rules = "SELECT ar3.* FROM alert_rules AS ar3 WHERE ar3.id IN (SELECT agm3.rule_id FROM alert_group_map AS agm3 LEFT JOIN device_group_device AS dgd3 ON agm3.group_id=dgd3.device_group_id WHERE dgd3.device_id=?)"; $param[] = $device['device_id']; $full_query = '('. $global_rules .') UNION DISTINCT ('. $device_rules .') UNION DISTINCT ('. $device_group_rules .')'; } else { // no device selected $full_query = 'SELECT alert_rules.* FROM alert_rules'; } $full_query .= ' ORDER BY id ASC'; $rule_list = dbFetchRows($full_query, $param); $count = count($rule_list); if (isset($_POST['page_number']) && $_POST['page_number'] > 0 && $_POST['page_number'] <= $count) { $page_number = $_POST['page_number']; } else { $page_number = 1; } $start = (($page_number - 1) * $results); $index = 0; foreach ($rule_list as $rule) { $index++; if ($index < $start) { continue; } if ($index > $start + $results) { break; } $sub = dbFetchRows('SELECT * FROM alerts WHERE rule_id = ? ORDER BY `state` DESC, `id` DESC LIMIT 1', array($rule['id'])); $ico = 'check'; $col = 'success'; $extra = ''; if (sizeof($sub) == 1) { $sub = $sub[0]; if ((int) $sub['state'] === 0) { $ico = 'check'; $col = 'success'; } elseif ((int) $sub['state'] === 1 || (int) $sub['state'] === 2) { $ico = 'exclamation'; $col = 'danger'; $extra = 'danger'; } } $alert_checked = ''; $orig_ico = $ico; $orig_col = $col; $orig_class = $extra; if ($rule['disabled']) { $ico = 'pause'; $col = ''; $extra = 'active'; } else { $alert_checked = 'checked'; } $rule_extra = json_decode($rule['extra'], true); $device_count = dbFetchCell('SELECT COUNT(*) FROM alert_device_map WHERE rule_id=?', [$rule['id']]); $group_count = dbFetchCell('SELECT COUNT(*) FROM alert_group_map WHERE rule_id=?', [$rule['id']]); if ($device_count && $group_count) { $popover_msg = 'Restricted rule'; $icon_indicator = 'fa fa-connectdevelop fa-fw text-primary'; } elseif ($device_count) { $popover_msg = 'Device restricted rule'; $icon_indicator = 'fa fa-server fa-fw text-primary'; } elseif ($group_count) { $popover_msg = 'Group restricted rule'; $icon_indicator = 'fa fa-th fa-fw text-primary'; } else { $popover_msg = 'Global alert rule'; $icon_indicator = 'fa fa-globe fa-fw text-success'; } echo ""; echo ""; echo ''; echo "'; echo ''; echo ""; } echo ''; echo ''; echo ''; echo "\r\n"; }//end foreach if (($count % $results) > 0) { echo ' '; } echo '
# Name Rule Severity Status Extra Enabled Action
'; if (Auth::user()->hasGlobalAdmin()) { echo ''; echo ' - OR - '; echo ''; } echo '
#".((int) $rule['id'])."
'.$rule['name'].'"; if ($rule_extra['invert'] === true) { echo 'Inverted '; } if (empty($rule['builder'])) { $rule_display = $rule['rule']; } elseif ($rule_extra['options']['override_query'] === 'on') { $rule_display = 'Custom SQL Query'; } else { $rule_display = QueryBuilderParser::fromJson($rule['builder'])->toSql(false); } echo ''.htmlentities($rule_display).''.$rule['severity'].' "; if ($rule_extra['mute'] === true) { echo "Max: '.$rule_extra['count'].'
Delay: '.$rule_extra['delay'].'
Interval: '.$rule_extra['interval'].'
'; if (Auth::user()->hasGlobalAdmin()) { echo ""; } echo ''; if (Auth::user()->hasGlobalAdmin()) { echo "
"; echo " "; echo ""; } echo '
'.generate_pagination($count, $results, $page_number).'
'; if ($count < 1) { if (Auth::user()->hasGlobalAdmin()) { echo '
' . csrf_field() . '

'; } } ?>