'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 (intval($block) > 15) {
$block = '15';
}
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'), 'class' => 'invert_filter']).'';
} 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'), 'class' => 'invert_filter']).'';
} else {
$fullscreen['text'] = ''.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode'), 'class' => 'invert_filter']).'';
}
}
// 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_standard_header(
__('Agents/Modules'),
'images/module.png',
false,
'',
false,
(array) $updated_time,
[
[
'link' => '',
'label' => __('Monitoring'),
],
[
'link' => '',
'label' => __('Views'),
],
]
);
echo '';
echo '';
echo " ".$fullscreen['text'].' | ';
echo '
';
echo '
';
} 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 = '';
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 "".__('Agents').' / '.__('Modules').' | ';
if ($hor_offset > 0) {
$new_hor_offset = ($hor_offset - $block);
echo "".html_print_image(
'images/arrow_left_green.png',
true,
['title' => __('Previous modules')]
).' | ';
}
$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 "".html_print_image(
'images/arrow_right_green.png',
true,
['title' => __('More modules')]
).' | ';
}
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 "
".$alias['alias'].' | ';
// 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 "";
$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 ' | ';
$match = true;
}
}
if (!$match) {
echo ' | ';
}
}
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');