'ANY(SELECT id_agente FROM tagente WHERE id_grupo = '.$group]; db_process_sql_update('tagente_modulo', ['flag' => 1], $where); } else { db_pandora_audit('ACL Violation', 'Trying to set flag for groups'); include '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 = []; $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 = (int) 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( [ '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, ['title' => __('Full screen mode')]).''; } else { $fullscreen['text'] = ''.html_print_image('images/normal_screen.png', true, ['title' => __('Back to normal mode')]).''; $config['refr'] = $refr; } $onheader = [ '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 = []; $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 = []; // $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, ['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(['id_group IN ('.$filter_groups.')'], ['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 = [ 'offset' => (int) $offset, 'limit' => (int) $config['block_size'], ]; $filter_count = []; 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 = []; } $agents_with_alerts = []; 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(['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 = []; $agent_alerts = []; 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, '', '', [ 'count' => '', 'offset' => 'offset_param', ], 'alerts_agents' ); echo ''; echo "'; if ($hor_offset > 0) { $new_hor_offset = ($hor_offset - $block); echo "'; } $templates_raw = []; 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 = []; } $alerts = []; $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, ['title' => __('Previous templates')]).' '.io_safe_output($tname).html_print_image('images/information_alerts.png', true, ['title' => io_safe_output($tname), 'style' => 'margin-left:5px' ]).' ".html_print_image('images/darrowright.png', true, ['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 '
'; ui_pagination( $nagents, false, 0, 0, false, 'offset', true, 'pagination-bottom', '', [ 'count' => '', 'offset' => 'offset_param', ], 'alerts_agents' ); } } // 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 = []; $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['internal_counter'].' '.__('time(s)'); } else if ($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'); ?>