'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; $modulegroup = get_parameter('modulegroup', 0); $refr = (int) get_parameter('refresh', 0); // By default 30 seconds. $recursion = get_parameter('recursion', 0); $group_id = (int) get_parameter('group_id', 0); $offset = (int) get_parameter('offset', 0); $hor_offset = (int) get_parameter('hor_offset', 0); $block = $config['block_size']; if (get_parameter('modulegroup') != null) { $agents_id = (array) get_parameter('id_agents2', null); } $selection_a_m = (int) get_parameter('selection_agent_module'); $modules_selected = (array) get_parameter('module', 0); $update_item = (string) get_parameter('edit_item', ''); $save_serialize = (int) get_parameter('save_serialize', 0); $full_modules_selected = explode(';', get_parameter('full_modules_selected', 0)); $full_agents_id = explode(';', get_parameter('full_agents_id', 0)); // In full screen there is no pagination neither filters. if (( ($config['pure'] == 0 && $save_serialize) && $update_item == '' ) || ( ($config['pure'] == 1 && $save_serialize == 0) && $update_item == '' )) { $unserialize_modules_selected = unserialize_in_temp($config['id_user'].'_agent_module', true, 1); $unserialize_agents_id = unserialize_in_temp($config['id_user'].'_agents', true, 1); if ($unserialize_modules_selected) { $modules_selected = $unserialize_modules_selected; } if ($unserialize_agents_id) { $agents_id = $unserialize_agents_id; } } else { unserialize_in_temp($config['id_user'].'_agent_module', true, 1); unserialize_in_temp($config['id_user'].'_agents', true, 1); } if ($modules_selected[0]) { serialize_in_temp($modules_selected, $config['id_user'].'_agent_module', 1); } if ($agents_id[0] != -1) { serialize_in_temp($agents_id, $config['id_user'].'_agents', 1); } if ($config['pure'] == 0) { if ($modules_selected[0] && $agents_id[0]) { $full_modules = urlencode(implode(';', $modules_selected)); $full_agents = urlencode(implode(';', $agents_id)); $fullscreen['text'] = ''.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode')]).''; } else if ($full_modules_selected[0] && $full_agents_id[0]) { $full_modules = urlencode(implode(';', $full_modules_selected)); $full_agents = urlencode(implode(';', $full_agents_id)); $fullscreen['text'] = ''.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode')]).''; } else { $fullscreen['text'] = ''.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode')]).''; } } // Groups. $filter_groups_label = ''.__('Group').''; $filter_groups = html_print_select_groups(false, 'AR', true, 'group_id', $group_id, '', '', '', true, false, true, '', false, 'width: auto;'); $filter_recursion_label = ''.__('Recursion').''; $filter_recursion = html_print_checkbox('recursion', 1, 0, true).''; // Groups module. $filter_module_groups_label = ''.__('Module group').''; $filter_module_groups = html_print_select_from_sql( 'SELECT * FROM tmodule_group ORDER BY name', 'modulegroup', $modulegroup, '', __('All'), 0, true, false, true, false, 'width: auto;' ); // Agent. $agents = agents_get_group_agents($group_id); if ((empty($agents)) || $agents == -1) { $agents = []; } $filter_agents_label = ''.__('Agents').''; $filter_agents = html_print_select($agents, 'id_agents2[]', $agents_id, '', '', 0, true, true, true, '', false, 'min-width: 180px; max-width: 200px;'); // Type show. $selection = [ 0 => __('Show common modules'), 1 => __('Show all modules'), ]; $filter_type_show_label = ''.__('Show common modules').''; $filter_type_show = html_print_select($selection, 'selection_agent_module', $selection_a_m, '', '', 0, true, false, true, '', false, 'min-width: 180px;'); // Modules. $all_modules = select_modules_for_agent_group($group_id, $agents_id, $selection_a_m, false); $filter_modules_label = ''.__('Module').''; $filter_modules = html_print_select($all_modules, 'module[]', $modules_selected, '', '', 0, true, true, false, '', false, 'min-width: 180px; max-width: 200px;'); // Update. $filter_update = html_print_submit_button(__('Update item'), 'edit_item', false, 'class="sub upd"', true); $onheader = [ 'updated_time' => $updated_time, 'fullscreen' => $fullscreen, 'combo_module_groups' => $filter_module_groups, 'combo_groups' => $filter_groups, ]; /* * Old style table, we need a lot of special formatting,don't use table function. * Prepare old-style table. */ if ($config['pure'] == 0) { // Header. ui_print_page_header( __('Agents/Modules'), 'images/module_mc.png', false, '', false, $updated_time ); echo ''; echo ''; echo "'; echo ''; echo '
".$fullscreen['text'].'
'; } else { if ($full_agents_id[0]) { $full_modules = urlencode(implode(';', $full_modules_selected)); $full_agents = urlencode(implode(';', $full_agents_id)); $url = 'index.php?sec=view&sec2=extensions/agents_modules&pure=0&offset=$offset &group_id=$group_id&modulegroup=$modulegroup&refresh=$refr&full_modules_selected=$full_modules &full_agents_id=$full_agents&selection_agent_module=$selection_a_m'; } else { $url = 'index.php?sec=view&sec2=extensions/agents_modules&pure=0&offset=$offset&group_id=$group_id&modulegroup=$modulegroup&refresh=$refr'; } // Floating menu - Start. echo '
'; echo ''; echo '
'; // Floating menu - End. ui_require_jquery_file('countdown'); } if ($config['pure'] != 1) { $show_filters = '
'; $show_filters .= ''; $show_filters .= ''; $show_filters .= ''; $show_filters .= ''; $show_filters .= ''; $show_filters .= ''; $show_filters .= ''; $show_filters .= ''; $show_filters .= ''; $show_filters .= ''; $show_filters .= ''; $show_filters .= ''; $show_filters .= ''; $show_filters .= ''; $show_filters .= ''; $show_filters .= ''; $show_filters .= ''; $show_filters .= ''; $show_filters .= "'; $show_filters .= ''; $show_filters .= '
'.$filter_groups_label.''.$filter_groups.'   '.$filter_recursion_label.$filter_recursion.''.$filter_module_groups_label.''.$filter_module_groups.'
'.$filter_agents_label.''.$filter_agents.''.$filter_type_show_label.''.$filter_type_show.''.$filter_modules_label.''.$filter_modules.'
".$filter_update.'
'; $show_filters .= '
'; ui_toggle( $show_filters, __('Filters ').ui_print_help_tip(__('Secondary groups and agent subgroups will be taken into account.'), true) ); } if ($agents_id[0] != -1) { $agents = $agents_id; } else { if ($full_agents_id[0]) { $agents = $full_agents_id; } else { $agents = ''; $agents = agents_get_group_agents($group_id, ['disabled' => 0]); $agents = array_keys($agents); } } $filter_module_group = ['disabled' => 0]; if ($modulegroup > 0) { $filter_module_group['id_module_group'] = $modulegroup; } $count = 0; foreach ($agents as $agent) { // TODO TAGS agents_get_modules. $module = agents_get_modules( $agent, false, $filter_module_group, true, true ); if ($module == false) { unset($agents[$count]); } $count++; } $total_pagination = count($agents); if ($agents_id[0] != -1) { $all_modules = []; foreach ($modules_selected as $key => $value) { $name = modules_get_agentmodule_name($value); $sql = "SELECT id_agente_modulo FROM tagente_modulo WHERE nombre = '".$name."';"; $result_sql = db_get_all_rows_sql($sql); if (is_array($result_sql)) { foreach ($result_sql as $key => $value) { $all_modules[$value['id_agente_modulo']] = io_safe_output($name); } } } } else { if ($full_modules_selected[0]) { foreach ($full_modules_selected as $key => $value) { $name = modules_get_agentmodule_name($value); $sql = "SELECT id_agente_modulo FROM tagente_modulo WHERE nombre = '".$name."';"; $result_sql = db_get_all_rows_sql($sql); if (is_array($result_sql)) { foreach ($result_sql as $key => $value) { $all_modules[$value['id_agente_modulo']] = io_safe_output($name); } } } } else { // TODO TAGS agents_get_modules. $all_modules = agents_get_modules( $agents, false, $filter_module_group, true, true ); } } $modules_by_name = []; $name = ''; $cont = 0; foreach ($all_modules as $key => $module) { if ($module == $name) { $modules_by_name[($cont - 1)]['id'][] = $key; } else { $name = $module; $modules_by_name[$cont]['name'] = $name; $modules_by_name[$cont]['id'][] = $key; $cont ++; } } if ($config['pure'] == 1) { $block = count($modules_by_name); } if ($update_item == '') { $filter_groups = [ 'offset' => (int) $offset, 'limit' => (int) $config['block_size'], 'disabled' => 0, 'id_agente' => $agents, ]; } else { $filter_groups = [ 'offset' => 0, 'limit' => (int) $config['block_size'], 'disabled' => 0, 'id_agente' => $agents, ]; } if ($group_id > 0) { if ($recursion) { $filter_groups['id_grupo'] = array_merge( $group_id, groups_get_children_ids($group_id, true) ); } else { $filter_groups['id_grupo'] = $group_id; } } if (!empty($filter_groups['id_agente'])) { $agents = agents_get_agents($filter_groups); } $nagents = count($agents); if ($all_modules == false || $agents == false) { ui_print_info_message(['no_close' => true, 'message' => __('There are no agents with modules') ]); return; } echo ''; echo ''; echo "'; if ($hor_offset > 0) { $new_hor_offset = ($hor_offset - $block); echo "'; } $nmodules = 0; foreach ($modules_by_name as $module) { $nmodules++; if ($nmodules <= $hor_offset || $nmodules > ($hor_offset + $block)) { continue; } $text = ui_print_truncate_text(io_safe_output($module['name']), 'module_small'); echo ''; } if (($hor_offset + $block) < $nmodules) { $new_hor_offset = ($hor_offset + $block); echo "'; } echo ''; $filter_agents = [ 'offset' => (int) $offset, 'disabled' => 0, ]; if ($group_id > 0) { $filter_agents['id_grupo'] = $group_id; } // Prepare pagination. $url = 'index.php?extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&save_serialize=1&hor_offset='.$hor_offset.'&selection_a_m='.$selection_a_m; ui_pagination($total_pagination, $url); foreach ($agents as $agent) { // Get stats for this group. $agent_status = agents_get_status($agent['id_agente']); $alias = db_get_row('tagente', 'id_agente', $agent['id_agente']); if (empty($alias['alias'])) { $alias['alias'] = $agent['nombre']; } switch ($agent_status) { case 4: // Alert fired status. $rowcolor = 'group_view_alrm'; break; case 1: // Critical status. $rowcolor = 'group_view_crit'; break; case 2: // Warning status. $rowcolor = 'group_view_warn'; break; case 0: // Normal status. $rowcolor = 'group_view_ok'; break; case 3: case -1: default: // Unknown status. $rowcolor = 'group_view_unk'; break; } echo ""; echo "'; // TODO TAGS agents_get_modules. $agent_modules = agents_get_modules($agent['id_agente'], false, $filter_module_group, true, true); $nmodules = 0; foreach ($modules_by_name as $module) { $nmodules++; if ($nmodules <= $hor_offset || $nmodules > ($hor_offset + $block)) { continue; } $match = false; foreach ($module['id'] as $module_id) { if (!$match && array_key_exists($module_id, $agent_modules)) { $status = modules_get_agentmodule_status($module_id); echo "'; $match = true; } } if (!$match) { echo ''; } } echo ''; } echo '
".__('Agents').' / '.__('Modules').'".html_print_image( 'images/arrow_left_green.png', true, ['title' => __('Previous modules')] ).'
".html_print_image( 'images/arrow_right_green.png', true, ['title' => __('More modules')] ).'
".$alias['alias'].'"; $win_handle = dechex(crc32($module_id.$module['name'])); $graph_type = return_graphtype(modules_get_agentmodule_type($module_id)); $link = "winopeng_var('".'operation/agentes/stat_win.php?'."type=$graph_type&".'period='.SECONDS_1DAY.'&'.'id='.$module_id.'&'.'refresh='.SECONDS_10MINUTES."', 'day_".$win_handle."', 800, 480)"; echo ''; $module_last_value = modules_get_last_value($module_id); if (!is_numeric($module_last_value)) { $module_last_value = htmlspecialchars($module_last_value); } switch ($status) { case AGENT_MODULE_STATUS_NORMAL: ui_print_status_image('module_ok.png', $module_last_value, false); break; case AGENT_MODULE_STATUS_CRITICAL_BAD: ui_print_status_image('module_critical.png', $module_last_value, false); break; case AGENT_MODULE_STATUS_WARNING: ui_print_status_image('module_warning.png', $module_last_value, false); break; case AGENT_MODULE_STATUS_UNKNOWN: ui_print_status_image('module_unknown.png', $module_last_value, false); break; case AGENT_MODULE_STATUS_NORMAL_ALERT: case AGENT_MODULE_STATUS_WARNING_ALERT: case AGENT_MODULE_STATUS_CRITICAL_ALERT: ui_print_status_image('module_alertsfired.png', $module_last_value, false); break; case 4: ui_print_status_image('module_no_data.png', $module_last_value, false); break; } echo ''; echo '
'; $show_legend = "
"; $show_legend .= "
".__('Orange cell when the module has fired alerts').'
'; $show_legend .= "
".__('Red cell when the module has a critical status').'
'; $show_legend .= "
".__('Yellow cell when the module has a warning status').'
'; $show_legend .= "
".__('Green cell when the module has a normal status').'
'; $show_legend .= "
".__('Grey cell when the module has an unknown status').'
'; $show_legend .= "
".__("Cell turns blue when the module is in 'not initialize' status").'
'; $show_legend .= '
'; ui_toggle($show_legend, __('Legend')); $pure_var = $config['pure']; if ($pure_var) { $pure_var = 1; } else { $pure_var = 0; } } extensions_add_operation_menu_option(__('Agents/Modules view'), 'estado', 'agents_modules/icon_menu.png', 'v1r1', 'view'); extensions_add_main_function('mainAgentsModules');