"ANY(SELECT id_agente FROM tagente WHERE id_grupo = " . $group); db_process_sql_update('tagente_modulo', array("flag" => 1), $where); } else { db_pandora_audit("ACL Violation", "Trying to set flag for groups"); require ("general/noaccess.php"); exit; } } if ($config["realtimestats"] == 0) { $updated_info = __('Last update'). " : ". ui_print_timestamp (db_get_sql ("SELECT min(utimestamp) FROM tgroup_stat"), true); } else { // $updated_info = __("Updated at realtime"); $updated_info = ""; } $updated_time = $updated_info; $create_alert = (int)get_parameter ("create_alert",0); if($create_alert){ $template2 = get_parameter("template"); $module_action_threshold = get_parameter("module_action_threshold"); $id_alert = alerts_create_alert_agent_module ($create_alert, $template2); if ($id_alert !== false) { $action_select = get_parameter("action_select",0); if ($action_select != 0) { $values = array(); $values['fires_min'] = 0; $values['fires_max'] = 0; $values['module_action_threshold'] = (int)get_parameter ('module_action_threshold'); alerts_add_alert_agent_module_action ($id_alert, $action_select, $values); } } } $refr = get_parameter('refr', 30); // By default 30 seconds $show_modules = (bool) get_parameter ("show_modules",0); $group_id = get_parameter('group_id', 0); $offset = get_parameter('offset', 0); $hor_offset = get_parameter('hor_offset', 0); $block = 20; $groups = users_get_groups (); $filter_groups .= ''.__('Group').''; $filter_groups .= html_print_select_groups(false, "AR", true, 'group_id', $group_id, false, '', '', true, false, true, '', false , 'margin-right: 10px; margin-top: 5px;'); $check = ''.__('Show modules without alerts').''; $check .= html_print_checkbox('slides_ids[]', $d['id'], $show_modules, true, false, '', true); $comborefr = '
'; $comborefr .= ''.__('Refresh').''; $comborefr .= html_print_select ( array('30' => '30 '.__('seconds'), (string)SECONDS_1MINUTE => __('1 minute'), (string)SECONDS_2MINUTES => __('2 minutes'), (string)SECONDS_5MINUTES => __('5 minutes'), (string)SECONDS_10MINUTES => __('10 minutes')) , 'refr', (int)get_parameter('refr', 0), $script = 'this.form.submit()', '', 0, true, false, false, '', false, 'width: 100px; margin-right: 10px; margin-top: 5px;'); $comborefr .= "
"; if ($config["pure"] == 0) { $fullscreen['text'] = '' . html_print_image ("images/full_screen.png", true, array ("title" => __('Full screen mode'))) . ""; } else { $fullscreen['text'] = '' . html_print_image ("images/normal_screen.png", true, array ("title" => __('Back to normal mode'))) . ""; $config['refr'] = $refr; } $onheader = array('updated_time' => $updated_time, 'fullscreen' => $fullscreen, 'combo_groups' => $filter_groups); if ($config['pure'] == 1) { $onheader['combo_refr'] = $comborefr; } // Header ui_print_page_header (__("Agents/Alerts"), "images/op_alerts.png", false, "", false, $updated_time); // Old style table, we need a lot of special formatting,don't use table function // Prepare old-style table echo ''; echo ""; echo ""; echo ""; if ($config['pure'] == 1) echo ""; echo ""; echo ""; echo "
" . $filter_groups . "" . $check . "" . $comborefr . " " . __("Full screen") . "" . $fullscreen['text'] . "
"; if($show_modules){ if($group_id > 0){ $grupo = " AND tagente.id_grupo = $group_id"; } else { $grupo =''; } $offset_modules = get_parameter ("offset",0); $sql_count = "SELECT COUNT(tagente_modulo.nombre) FROM tagente_modulo INNER JOIN tagente ON tagente.id_agente = tagente_modulo.id_agente WHERE id_agente_modulo NOT IN (SELECT id_agent_module FROM talert_template_modules) $grupo"; $count_agent_module = db_get_all_rows_sql($sql_count); $sql = "SELECT tagente.alias, tagente_modulo.nombre, tagente_modulo.id_agente_modulo FROM tagente_modulo INNER JOIN tagente ON tagente.id_agente = tagente_modulo.id_agente WHERE id_agente_modulo NOT IN (SELECT id_agent_module FROM talert_template_modules) $grupo LIMIT 20 OFFSET $offset_modules"; $agent_modules = db_get_all_rows_sql($sql); ui_pagination ($count_agent_module[0]['COUNT(tagente_modulo.nombre)'], ui_get_url_refresh(),0,0,false,'offset',true,'', '',false,'alerts_modules'); $table->width = '100%'; $table->class = "databox data"; $table->id = "table_agent_module"; $table->data = array (); $table->head[0] = __('Agents'); $table->head[1] = __('Modules'); $table->head[2] = __('Actions'); $table->style[0]= 'width: 25%;'; $table->style[1]= 'width: 33%;'; $table->style[2]= 'width: 33%;'; foreach($agent_modules as $agent_module) { $data[0] = io_safe_output($agent_module['alias']); $data[1] = io_safe_output($agent_module['nombre']); $uniqid = $agent_module['id_agente_modulo']; $data[2] = "".html_print_image('images/add_mc.png', true).""; array_push ($table->data, $data); $table2->width = '100%'; $table2->id = "table_add_alert"; $table2->class = 'databox filters'; $table2->data = array (); // $data[0] = $table2->data[0][0] = __('Actions'); $groups_user = users_get_groups($config["id_user"]); if (!empty($groups_user)) { $groups = implode(',', array_keys($groups_user)); $sql = "SELECT id, name FROM talert_actions WHERE id_group IN ($groups)"; $actions = db_get_all_rows_sql($sql); } $table2->data[0][1] = html_print_select( index_array($actions, 'id', 'name'), 'action_select', '', '', __('Default action'), '0', true, '', true, '', false, 'width: 250px;'); $table2->data[0][1] .= ''; if (check_acl ($config['id_user'], 0, "LM")) { $table2->data[0][1] .= ''; $table2->data[0][1] .= html_print_image ('images/add.png', true); $table2->data[0][1] .= ''.__('Create Action').''; $table2->data[0][1] .= ''; } $table2->data[1][0] = __('Template'); $own_info = get_user_info ($config['id_user']); if ($own_info['is_admin'] || check_acl ($config['id_user'], 0, "PM")) $templates = alerts_get_alert_templates (false, array ('id', 'name')); else { $usr_groups = users_get_groups($config['id_user'], 'LW', true); $filter_groups = ''; $filter_groups = implode(',', array_keys($usr_groups)); $templates = alerts_get_alert_templates (array ('id_group IN (' . $filter_groups . ')'), array ('id', 'name')); } $table2->data[1][1] = html_print_select (index_array ($templates, 'id', 'name'), 'template', '', '', __('Select'), 0, true, false, true, '', false, 'width: 250px;'); $table2->data[1][1] .= ' '; if (check_acl ($config['id_user'], 0, "LM")) { $table2->data[1][1] .= ''; $table2->data[1][1] .= html_print_image ('images/add.png', true); $table2->data[1][1] .= ''.__('Create Template').''; $table2->data[1][1] .= ''; } $table2->data[2][0] = __('Threshold'); $table2->data[2][1] = html_print_input_text ('module_action_threshold', '0', '', 5, 7, true); $table2->data[2][1] .= ' ' . __('seconds') . ui_print_help_icon ('action_threshold', true); $content2 = '
'; $content2 .= html_print_table($table2,true); $content2 .= '
'; $content2 .= html_print_submit_button (__('Add alert'), 'add', false, 'class="sub wand"',true); $content2 .= html_print_input_hidden ('create_alert', $uniqid,true); $content2 .= '
'; $module_name = ui_print_truncate_text(io_safe_output($agent_module['nombre']), 40, false, true, false, '…', false); echo ''; } html_print_table($table); } else { $filter = array ('offset' => (int) $offset, 'limit' => (int) $config['block_size']); $filter_count = array(); if ($group_id > 0) { $filter['id_grupo'] = $group_id; $filter_count['id_grupo'] = $group_id; } // Get the id of all agents with alerts $sql = 'SELECT DISTINCT(id_agente) FROM tagente_modulo WHERE id_agente_modulo IN (SELECT id_agent_module FROM talert_template_modules)'; $agents_with_alerts_raw = db_get_all_rows_sql($sql); if ($agents_with_alerts_raw === false) { $agents_with_alerts_raw = array(); } $agents_with_alerts = array(); foreach ($agents_with_alerts_raw as $awar) { $agents_with_alerts[] = $awar['id_agente']; } $filter['id_agente'] = $agents_with_alerts; $filter_count['id_agente'] = $agents_with_alerts; $agents = agents_get_agents ($filter); $nagents = count(agents_get_agents ($filter_count)); if ($agents == false) { ui_print_info_message ( array('no_close'=>true, 'message'=> __('There are no agents with alerts') ) ); return; } $all_alerts = agents_get_alerts_simple (); if($config["pure"] == 1) { $block = count($all_alerts); } $templates = array(); $agent_alerts = array(); foreach ($all_alerts as $alert) { $templates[$alert['id_alert_template']] = ''; $agent_alerts[$alert['agent_name']][$alert['id_alert_template']][] = $alert; } // Prepare pagination ui_pagination ($nagents,false,0,0,false,'offset',true,'', '',array('count' => '', 'offset' => 'offset_param'),'alerts_agents'); echo ''; echo ""; if ($hor_offset > 0) { $new_hor_offset = $hor_offset-$block; echo ""; } $templates_raw = array(); if (!empty($templates)) { $sql = sprintf('SELECT id, name FROM talert_templates WHERE id IN (%s)',implode(',',array_keys($templates))); $templates_raw = db_get_all_rows_sql($sql); } if (empty($templates_raw)) $templates_raw = array(); $alerts = array(); $ntemplates = 0; foreach ($templates_raw as $temp) { if (isset($templates[$temp['id']]) && $templates[$temp['id']] == '') { $ntemplates++; if ($ntemplates <= $hor_offset || $ntemplates > ($hor_offset+$block)) { continue; } $templates[$temp['id']] = $temp['name']; } } foreach ($templates as $tid => $tname) { if ($tname == '') { continue; } echo '"; } if (($hor_offset + $block) < $ntemplates) { $new_hor_offset = $hor_offset+$block; echo ""; } foreach ($agents as $agent) { $alias = db_get_row ('tagente', 'id_agente', $agent['id_agente']); echo ''; // Name of the agent echo ''; // Alerts of the agent $anyfired = false; foreach ($templates as $tid => $tname) { if ($tname == '') { continue; } if (isset($agent_alerts[$agent['nombre']][$tid])) { foreach($agent_alerts[$agent['nombre']][$tid] as $alert) { if($alert["times_fired"] > 0) { $anyfired = true; } } $cellstyle = ''; if($anyfired) { $cellstyle = 'background:'.COL_ALERTFIRED.';'; } echo ''; } echo ''; } echo '
".__("Agents")." / ".__("Alert templates")." ". html_print_image("images/darrowleft.png",true, array('title' => __('Previous templates')))." '. io_safe_output($tname) . html_print_image('images/information_alerts.png', true, array('title' => io_safe_output($tname),'style' => 'margin-left:5px' )) ." ".html_print_image("images/darrowright.png",true, array('title' => __('More templates')))."
'.$alias['alias'].' '; $uniqid = uniqid(); echo "
"; echo count($agent_alerts[$agent['nombre']][$tid])." ".__('Alerts')." "; echo "".html_print_image('images/zoom.png', true).""; echo "
"; print_alerts_summary_modal_window($uniqid, $agent_alerts[$agent['nombre']][$tid]); } else { echo '
'; } echo '
'; } } // Print the modal window for the summary of each alerts group function print_alerts_summary_modal_window($id, $alerts) { $table->width = '98%'; $table->class = "databox"; $table->data = array (); $table->head[0] = __('Module'); $table->head[1] = __('Action'); $table->head[2] = __('Last fired'); $table->head[3] = __('Status'); foreach($alerts as $alert) { $data[0] = modules_get_agentmodule_name ($alert['id_agent_module']); $actions = alerts_get_alert_agent_module_actions ($alert['id']); $actionDefault = db_get_value_sql(" SELECT id_alert_action FROM talert_templates WHERE id = " . $alert['id_alert_template']); $actionText = ''; if (!empty($actions)) { $actionText = '
'; } else { if (!empty($actionDefault)) { $actionText = db_get_sql ("SELECT name FROM talert_actions WHERE id = $actionDefault") . " (" . __("Default") . ")"; } } $data[1] = $actionText; $data[2] = ui_print_timestamp ($alert["last_fired"], true); $status = STATUS_ALERT_NOT_FIRED; 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'); } $data[3] = ui_print_status_image($status, $title, true); array_push ($table->data, $data); } $content = html_print_table($table,true); $agent = modules_get_agentmodule_agent_alias($alerts[0]['id_agent_module']); $template = alerts_get_alert_template_name($alerts[0]['id_alert_template']); echo ''; } extensions_add_operation_menu_option(__("Agents/Alerts view"), 'estado', null, "v1r1","view"); extensions_add_main_function('mainAgentsAlerts'); ui_require_jquery_file('pandora'); ?>