mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-28 16:24:54 +02:00
Merge branch 'ent-6085-Bandwidth-view-vista-de-interfaces' into 'develop'
Create interface views See merge request artica/pandorafms!4023
This commit is contained in:
commit
5b2c340163
@ -27,12 +27,28 @@ ob_clean();
|
|||||||
// * q
|
// * q
|
||||||
// * id_group
|
// * id_group
|
||||||
$search_agents = (bool) get_parameter('search_agents');
|
$search_agents = (bool) get_parameter('search_agents');
|
||||||
|
$get_agents_interfaces = (bool) get_parameter('get_agents_interfaces');
|
||||||
|
$id_agents = get_parameter('id_agents', []);
|
||||||
$get_agents_group = (bool) get_parameter('get_agents_group', false);
|
$get_agents_group = (bool) get_parameter('get_agents_group', false);
|
||||||
$force_local = (bool) get_parameter('force_local', false);
|
$force_local = (bool) get_parameter('force_local', false);
|
||||||
if (https_is_running()) {
|
if (https_is_running()) {
|
||||||
header('Content-type: application/json');
|
header('Content-type: application/json');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($get_agents_interfaces) {
|
||||||
|
$agents_interfaces = agents_get_network_interfaces($id_agents);
|
||||||
|
|
||||||
|
// Include alias per agent.
|
||||||
|
foreach ($agents_interfaces as $key => $value) {
|
||||||
|
$agent_alias = agents_get_alias($key);
|
||||||
|
$agents_interfaces[$key]['agent_alias'] = $agent_alias;
|
||||||
|
}
|
||||||
|
|
||||||
|
echo json_encode($agents_interfaces);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ($get_agents_group) {
|
if ($get_agents_group) {
|
||||||
$id_group = (int) get_parameter('id_group', -1);
|
$id_group = (int) get_parameter('id_group', -1);
|
||||||
$mode = (string) get_parameter('mode', 'json');
|
$mode = (string) get_parameter('mode', 'json');
|
||||||
|
741
pandora_console/operation/agentes/interface_view.functions.php
Normal file
741
pandora_console/operation/agentes/interface_view.functions.php
Normal file
@ -0,0 +1,741 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Pandora FMS - http://pandorafms.com
|
||||||
|
* ==================================================
|
||||||
|
* Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
||||||
|
* Please see http://pandorafms.org for full contribution list
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; version 2
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Print filters for interface view.
|
||||||
|
*
|
||||||
|
* @param string sec Section (type of filter will vary across sections).
|
||||||
|
*/
|
||||||
|
function print_filters($sec)
|
||||||
|
{
|
||||||
|
$table = new StdClass();
|
||||||
|
$table->width = '100%';
|
||||||
|
$table->cellspacing = 0;
|
||||||
|
$table->cellpadding = 0;
|
||||||
|
$table->class = 'databox filters';
|
||||||
|
|
||||||
|
if ($sec === 'view') {
|
||||||
|
$table->style[0] = 'font-weight: bold;';
|
||||||
|
$table->style[1] = 'font-weight: bold;';
|
||||||
|
$table->style[2] = 'font-weight: bold;';
|
||||||
|
$table->style[3] = 'font-weight: bold;';
|
||||||
|
$table->style[4] = 'font-weight: bold;';
|
||||||
|
|
||||||
|
$table->data[0][0] = __('Group');
|
||||||
|
$table->data[0][1] .= html_print_select_groups(
|
||||||
|
$config['id_user'],
|
||||||
|
'AR',
|
||||||
|
true,
|
||||||
|
'group_id',
|
||||||
|
$ag_group,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'0',
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
'id_grupo',
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
$table->data[0][2] = __('Recursion');
|
||||||
|
|
||||||
|
$table->data[0][2] .= html_print_input(
|
||||||
|
[
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'name' => 'recursion',
|
||||||
|
'return' => true,
|
||||||
|
'checked' => $recursion,
|
||||||
|
'value' => 1,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$table->data[1][0] = __('Agents');
|
||||||
|
|
||||||
|
if (empty($agents) === true || $agents == -1) {
|
||||||
|
$agents = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$table->data[1][1] = html_print_select(
|
||||||
|
[],
|
||||||
|
'selected_agents[]',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
0,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
'',
|
||||||
|
false,
|
||||||
|
'min-width: 180px; max-width: 200px;'
|
||||||
|
);
|
||||||
|
|
||||||
|
// Interfaces.
|
||||||
|
$table->data[1][3] = '<b>'.__('Interfaces').'</b>';
|
||||||
|
$table->data[1][4] = html_print_select(
|
||||||
|
[],
|
||||||
|
'selected_interfaces[]',
|
||||||
|
$selected_interfaces,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
0,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
'',
|
||||||
|
false,
|
||||||
|
'min-width: 180px; max-width: 200px;'
|
||||||
|
);
|
||||||
|
|
||||||
|
$filters = '<form method="post" action="'.ui_get_url_refresh(
|
||||||
|
[
|
||||||
|
'selected_agents' => $selected_agents,
|
||||||
|
'selected_interfaces' => $selected_interfaces,
|
||||||
|
'selected_group_id' => $selected_group_id,
|
||||||
|
]
|
||||||
|
).'">';
|
||||||
|
|
||||||
|
$filters .= html_print_table($table, true);
|
||||||
|
|
||||||
|
$filters .= "<div class='height_100p right'>".html_print_submit_button(
|
||||||
|
__('Show'),
|
||||||
|
'uptbutton',
|
||||||
|
false,
|
||||||
|
'class="sub search mgn_tp_0"',
|
||||||
|
true
|
||||||
|
).'</div>';
|
||||||
|
|
||||||
|
$filters .= '</form>';
|
||||||
|
} else {
|
||||||
|
$table->style[0] = 'font-weight: bold;';
|
||||||
|
|
||||||
|
$table->data[0][0] = '<b>'.__('Interfaces').'</b>';
|
||||||
|
$table->data[0][1] = html_print_select(
|
||||||
|
[],
|
||||||
|
'selected_interfaces[]',
|
||||||
|
$selected_interfaces,
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
0,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
'',
|
||||||
|
false,
|
||||||
|
'min-width: 180px; max-width: 200px;'
|
||||||
|
);
|
||||||
|
|
||||||
|
$filters = '<form method="post" action="'.ui_get_url_refresh(
|
||||||
|
[
|
||||||
|
'selected_agents' => $selected_agents,
|
||||||
|
'selected_interfaces' => $selected_interfaces,
|
||||||
|
'selected_group_id' => $selected_group_id,
|
||||||
|
]
|
||||||
|
).'">';
|
||||||
|
|
||||||
|
$filters .= html_print_table($table, true);
|
||||||
|
|
||||||
|
$filters .= "<div class='height_100p right'>".html_print_submit_button(
|
||||||
|
__('Show'),
|
||||||
|
'uptbutton',
|
||||||
|
false,
|
||||||
|
'class="sub search mgn_tp_0"',
|
||||||
|
true
|
||||||
|
).'</div>';
|
||||||
|
|
||||||
|
$filters .= '</form>';
|
||||||
|
}
|
||||||
|
|
||||||
|
ui_toggle(
|
||||||
|
$filters,
|
||||||
|
__('Interface filter'),
|
||||||
|
__('Interface filter'),
|
||||||
|
'ui_toggle_if_filter'
|
||||||
|
);
|
||||||
|
|
||||||
|
unset($table);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Print interfaces table.
|
||||||
|
*
|
||||||
|
* @param array data Array containing data of interfaces.
|
||||||
|
* @param array selected_agents Selected agents.
|
||||||
|
* @param array selected_interfaces Selected interfaces.
|
||||||
|
* @param string sort_field Field used to sort table.
|
||||||
|
* @param string sort Direction used to sort by field.
|
||||||
|
* @param int pagination_index Active page (used for pagination).
|
||||||
|
* @param string sec Active section of page.
|
||||||
|
*/
|
||||||
|
function print_table(
|
||||||
|
$data,
|
||||||
|
$selected_agents,
|
||||||
|
$selected_interfaces,
|
||||||
|
$sort_field,
|
||||||
|
$sort,
|
||||||
|
$pagination_index,
|
||||||
|
$sec
|
||||||
|
) {
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
$selected = true;
|
||||||
|
$select_if_name_up = false;
|
||||||
|
$select_if_name_down = false;
|
||||||
|
$select_if_speed_data_up = false;
|
||||||
|
$select_if_speed_data_down = false;
|
||||||
|
$select_if_in_octets_up = false;
|
||||||
|
$select_if_in_octets_down = false;
|
||||||
|
$select_if_out_octets_up = false;
|
||||||
|
$select_if_out_octets_down = false;
|
||||||
|
$select_if_usage_module_data_in_up = false;
|
||||||
|
$select_if_usage_module_data_in_down = false;
|
||||||
|
$select_if_usage_module_data_out_up = false;
|
||||||
|
$select_if_usage_module_data_out_down = false;
|
||||||
|
$select_if_last_data_up = false;
|
||||||
|
$select_if_last_data_down = false;
|
||||||
|
$order = null;
|
||||||
|
|
||||||
|
switch ($sort_field) {
|
||||||
|
case 'if_agent_name':
|
||||||
|
switch ($sort) {
|
||||||
|
case 'up':
|
||||||
|
$select_if_agent_name_up = $selected;
|
||||||
|
$order = [
|
||||||
|
'field' => 'if_agent_name',
|
||||||
|
'order' => 'ASC',
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'down':
|
||||||
|
default:
|
||||||
|
$select_if_agent_name_down = $selected;
|
||||||
|
$order = [
|
||||||
|
'field' => 'if_agent_name',
|
||||||
|
'order' => 'DESC',
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'if_name':
|
||||||
|
switch ($sort) {
|
||||||
|
case 'up':
|
||||||
|
$select_if_name_up = $selected;
|
||||||
|
$order = [
|
||||||
|
'field' => 'if_name',
|
||||||
|
'order' => 'ASC',
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'down':
|
||||||
|
default:
|
||||||
|
$select_if_name_down = $selected;
|
||||||
|
$order = [
|
||||||
|
'field' => 'if_name',
|
||||||
|
'order' => 'DESC',
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'if_speed_data':
|
||||||
|
switch ($sort) {
|
||||||
|
case 'up':
|
||||||
|
$select_if_speed_data_up = $selected;
|
||||||
|
$order = [
|
||||||
|
'field' => 'if_speed_data',
|
||||||
|
'order' => 'ASC',
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'down':
|
||||||
|
default:
|
||||||
|
$select_if_speed_data_down = $selected;
|
||||||
|
$order = [
|
||||||
|
'field' => 'if_speed_data',
|
||||||
|
'order' => 'DESC',
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'if_in_octets':
|
||||||
|
switch ($sort) {
|
||||||
|
case 'up':
|
||||||
|
$select_if_in_octets_up = $selected;
|
||||||
|
$order = [
|
||||||
|
'field' => 'if_in_octets',
|
||||||
|
'order' => 'ASC',
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'down':
|
||||||
|
default:
|
||||||
|
$select_if_in_octets_down = $selected;
|
||||||
|
$order = [
|
||||||
|
'field' => 'if_in_octets',
|
||||||
|
'order' => 'DESC',
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'if_out_octets':
|
||||||
|
switch ($sort) {
|
||||||
|
case 'up':
|
||||||
|
$select_if_out_octets_up = $selected;
|
||||||
|
$order = [
|
||||||
|
'field' => 'if_out_octets',
|
||||||
|
'order' => 'ASC',
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'down':
|
||||||
|
default:
|
||||||
|
$select_if_out_octets_down = $selected;
|
||||||
|
$order = [
|
||||||
|
'field' => 'if_out_octets',
|
||||||
|
'order' => 'DESC',
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'if_usage_module_data_in':
|
||||||
|
switch ($sort) {
|
||||||
|
case 'up':
|
||||||
|
$select_if_usage_module_data_in_up = $selected;
|
||||||
|
$order = [
|
||||||
|
'field' => 'if_usage_module_data_in',
|
||||||
|
'order' => 'ASC',
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'down':
|
||||||
|
default:
|
||||||
|
$select_if_usage_module_data_in_down = $selected;
|
||||||
|
$order = [
|
||||||
|
'field' => 'if_usage_module_data_in',
|
||||||
|
'order' => 'DESC',
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'if_usage_module_data_out':
|
||||||
|
switch ($sort) {
|
||||||
|
case 'up':
|
||||||
|
$select_if_usage_module_data_out_up = $selected;
|
||||||
|
$order = [
|
||||||
|
'field' => 'if_usage_module_data_out',
|
||||||
|
'order' => 'ASC',
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'down':
|
||||||
|
default:
|
||||||
|
$select_if_usage_module_data_out_down = $selected;
|
||||||
|
$order = [
|
||||||
|
'field' => 'if_usage_module_data_out',
|
||||||
|
'order' => 'DESC',
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'if_last_data':
|
||||||
|
switch ($sort) {
|
||||||
|
case 'up':
|
||||||
|
$select_if_last_data_up = $selected;
|
||||||
|
$order = [
|
||||||
|
'field' => 'if_last_data',
|
||||||
|
'order' => 'ASC',
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'down':
|
||||||
|
default:
|
||||||
|
$select_if_last_data_down = $selected;
|
||||||
|
$order = [
|
||||||
|
'field' => 'if_last_data',
|
||||||
|
'order' => 'DESC',
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
$select_if_agent_name = ($sec === 'view') ? true : false;
|
||||||
|
$select_if_name_up = ($sec === 'estado') ? true : false;
|
||||||
|
$select_if_name_down = false;
|
||||||
|
$select_if_speed_data_up = false;
|
||||||
|
$select_if_speed_data_down = false;
|
||||||
|
$select_if_in_octets_up = false;
|
||||||
|
$select_if_in_octets_down = false;
|
||||||
|
$select_if_out_octets_up = false;
|
||||||
|
$select_if_out_octets_down = false;
|
||||||
|
$select_if_usage_module_data_in_up = false;
|
||||||
|
$select_if_usage_module_data_in_down = false;
|
||||||
|
$select_if_usage_module_data_out_up = false;
|
||||||
|
$select_if_usage_module_data_out_down = false;
|
||||||
|
$select_if_last_data_up = false;
|
||||||
|
$select_if_last_data_down = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($sec === 'estado') {
|
||||||
|
$agent_id = (int) get_parameter('id_agente', 0);
|
||||||
|
|
||||||
|
$sort_url_page = 'ver_agente';
|
||||||
|
$sec = 'estado';
|
||||||
|
$query_params = '&id_agente='.$agent_id.'&tab=interface';
|
||||||
|
} else {
|
||||||
|
$sort_url_page = 'interface_view';
|
||||||
|
$sec = 'view';
|
||||||
|
$query_params = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build URLs to sort the table.
|
||||||
|
$url_if_agent_name = 'index.php?sec='.$sec.'&sec2=operation/agentes/'.$sort_url_page.$query_params;
|
||||||
|
$url_if_name = 'index.php?sec='.$sec.'&sec2=operation/agentes/'.$sort_url_page.$query_params;
|
||||||
|
$url_if_speed = 'index.php?sec='.$sec.'&sec2=operation/agentes/'.$sort_url_page.$query_params;
|
||||||
|
$url_if_in_octets = 'index.php?sec='.$sec.'&sec2=operation/agentes/'.$sort_url_page.$query_params;
|
||||||
|
$url_if_out_octets = 'index.php?sec='.$sec.'&sec2=operation/agentes/'.$sort_url_page.$query_params;
|
||||||
|
$url_if_bandwidth_usage_in = 'index.php?sec='.$sec.'&sec2=operation/agentes/'.$sort_url_page.$query_params;
|
||||||
|
$url_if_bandwidth_usage_out = 'index.php?sec='.$sec.'&sec2=operation/agentes/'.$sort_url_page.$query_params;
|
||||||
|
$last_data = 'index.php?sec='.$sec.'&sec2=operation/agentes/'.$sort_url_page.$query_params;
|
||||||
|
|
||||||
|
$selected_agents_query_str = '';
|
||||||
|
$selected_interfaces_query_str = '';
|
||||||
|
|
||||||
|
foreach ($selected_agents as $key => $agent) {
|
||||||
|
$selected_agents_query_str .= '&selected_agents['.$key.']='.$agent;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($selected_interfaces as $key => $interface) {
|
||||||
|
$selected_interfaces_query_str .= '&selected_interfaces['.$key.']='.$interface;
|
||||||
|
}
|
||||||
|
|
||||||
|
$url_if_agent_name .= $selected_agents_query_str.'&'.$selected_interfaces_query_str;
|
||||||
|
$url_if_name .= $selected_agents_query_str.'&'.$selected_interfaces_query_str;
|
||||||
|
$url_if_speed .= $selected_agents_query_str.'&'.$selected_interfaces_query_str;
|
||||||
|
$url_if_in_octets .= $selected_agents_query_str.'&'.$selected_interfaces_query_str;
|
||||||
|
$url_if_out_octets .= $selected_agents_query_str.'&'.$selected_interfaces_query_str;
|
||||||
|
$url_if_bandwidth_usage_in .= $selected_agents_query_str.'&'.$selected_interfaces_query_str;
|
||||||
|
$url_if_bandwidth_usage_out .= $selected_agents_query_str.'&'.$selected_interfaces_query_str;
|
||||||
|
$last_data .= $selected_agents_query_str.'&'.$selected_interfaces_query_str;
|
||||||
|
|
||||||
|
$url_if_agent_name .= '&recursion='.$recursion;
|
||||||
|
$url_if_name .= '&recursion='.$recursion;
|
||||||
|
$url_if_speed .= '&recursion='.$recursion;
|
||||||
|
$url_if_in_octets .= '&recursion='.$recursion;
|
||||||
|
$url_if_out_octets .= '&recursion='.$recursion;
|
||||||
|
$url_if_bandwidth_usage_in .= '&recursion='.$recursion;
|
||||||
|
$url_if_bandwidth_usage_out .= '&recursion='.$recursion;
|
||||||
|
$last_data .= '&recursion='.$recursion;
|
||||||
|
|
||||||
|
$url_if_agent_name .= '&sort_field=if_agent_name&sort=';
|
||||||
|
$url_if_name .= '&sort_field=if_name&sort=';
|
||||||
|
$url_if_speed .= '&sort_field=if_speed_data&sort=';
|
||||||
|
$url_if_in_octets .= '&sort_field=if_in_octets&sort=';
|
||||||
|
$url_if_out_octets .= '&sort_field=if_out_octets&sort=';
|
||||||
|
$url_if_bandwidth_usage_in .= '&sort_field=if_usage_module_data_in&sort=';
|
||||||
|
$url_if_bandwidth_usage_out .= '&sort_field=if_usage_module_data_out&sort=';
|
||||||
|
$last_data .= '&sort_field=if_last_data&sort=';
|
||||||
|
|
||||||
|
if (empty($data) === false) {
|
||||||
|
$table = new StdClass();
|
||||||
|
$table->cellpadding = 0;
|
||||||
|
$table->cellspacing = 0;
|
||||||
|
$table->width = '100%';
|
||||||
|
$table->class = 'info_table';
|
||||||
|
$table->head = [];
|
||||||
|
$table->data = [];
|
||||||
|
$table->size = [];
|
||||||
|
$table->align = [];
|
||||||
|
|
||||||
|
$show_fields = explode(',', $config['status_monitor_fields']);
|
||||||
|
|
||||||
|
if ($sec === 'view') {
|
||||||
|
$table->head[0] = __('Agent');
|
||||||
|
$table->head[0] .= ui_get_sorting_arrows(
|
||||||
|
$url_if_agent_name.'up',
|
||||||
|
$url_if_agent_name.'down',
|
||||||
|
$select_if_agent_name_up,
|
||||||
|
$select_if_agent_name_down
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$table->head[1] = __('IfName');
|
||||||
|
$table->head[1] .= ui_get_sorting_arrows(
|
||||||
|
$url_if_name.'up',
|
||||||
|
$url_if_name.'down',
|
||||||
|
$select_if_name_up,
|
||||||
|
$select_if_name_down
|
||||||
|
);
|
||||||
|
|
||||||
|
$table->head[2] = __('Status');
|
||||||
|
|
||||||
|
$table->head[3] = __('IfSpeed');
|
||||||
|
$table->head[3] .= ui_get_sorting_arrows(
|
||||||
|
$url_if_speed.'up',
|
||||||
|
$url_if_speed.'down',
|
||||||
|
$select_if_speed_data_up,
|
||||||
|
$select_if_speed_data_down
|
||||||
|
);
|
||||||
|
|
||||||
|
$table->head[4] = __('IfInOctets');
|
||||||
|
$table->head[4] .= ui_get_sorting_arrows(
|
||||||
|
$url_if_in_octets.'up',
|
||||||
|
$url_if_in_octets.'down',
|
||||||
|
$select_if_in_octets_up,
|
||||||
|
$select_if_in_octets_down
|
||||||
|
);
|
||||||
|
|
||||||
|
$table->head[5] = __('IfOutOctets');
|
||||||
|
$table->head[5] .= ui_get_sorting_arrows(
|
||||||
|
$url_if_out_octets.'up',
|
||||||
|
$url_if_out_octets.'down',
|
||||||
|
$select_if_out_octets_up,
|
||||||
|
$select_if_out_octets_down
|
||||||
|
);
|
||||||
|
|
||||||
|
$table->head[6] = __('% Bandwidth usage (in)');
|
||||||
|
$table->head[6] .= ui_get_sorting_arrows(
|
||||||
|
$url_if_bandwidth_usage_in.'up',
|
||||||
|
$url_if_bandwidth_usage_in.'down',
|
||||||
|
$select_if_usage_module_data_in_up,
|
||||||
|
$select_if_usage_module_data_in_down
|
||||||
|
);
|
||||||
|
|
||||||
|
$table->head[7] = __('% Bandwidth usage (out)');
|
||||||
|
$table->head[7] .= ui_get_sorting_arrows(
|
||||||
|
$url_if_bandwidth_usage_out.'up',
|
||||||
|
$url_if_bandwidth_usage_out.'down',
|
||||||
|
$select_if_usage_module_data_out_up,
|
||||||
|
$select_if_usage_module_data_out_down
|
||||||
|
);
|
||||||
|
|
||||||
|
$table->head[8] = __('Last data');
|
||||||
|
$table->head[8] .= ui_get_sorting_arrows(
|
||||||
|
$last_data.'up',
|
||||||
|
$last_data.'down',
|
||||||
|
$select_if_last_data_up,
|
||||||
|
$select_if_last_data_down
|
||||||
|
);
|
||||||
|
|
||||||
|
$loop_index = 0;
|
||||||
|
$table_data = [];
|
||||||
|
|
||||||
|
$interfaces_array = array_column($data, 'interfaces');
|
||||||
|
$agents = array_column($data, 'name');
|
||||||
|
|
||||||
|
$all_interfaces = [];
|
||||||
|
|
||||||
|
foreach ($data as $value) {
|
||||||
|
$agent_alias = agents_get_alias($value['name']);
|
||||||
|
|
||||||
|
foreach ($value['interfaces'] as $if_name => $interface) {
|
||||||
|
$interface['agent_id'] = $value['name'];
|
||||||
|
$interface['agent_alias'] = $agent_alias;
|
||||||
|
$interface['if_name'] = $if_name;
|
||||||
|
$all_interfaces[$if_name] = $interface;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($sec === 'estado'
|
||||||
|
&& is_array($selected_interfaces) === true
|
||||||
|
&& empty($selected_interfaces) === true
|
||||||
|
) {
|
||||||
|
$filtered_interfaces = $all_interfaces;
|
||||||
|
} else {
|
||||||
|
// Filter interfaces array.
|
||||||
|
$filtered_interfaces = array_filter(
|
||||||
|
$all_interfaces,
|
||||||
|
function ($interface) use ($selected_interfaces) {
|
||||||
|
return in_array(
|
||||||
|
$interface['status_module_id'],
|
||||||
|
$selected_interfaces
|
||||||
|
) === true;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
|
||||||
|
foreach ($filtered_interfaces as $if_name => $agent_interfaces) {
|
||||||
|
// Get usage modules.
|
||||||
|
$usage_module_in = db_get_row(
|
||||||
|
'tagente_modulo',
|
||||||
|
'nombre',
|
||||||
|
$if_name.'_inUsage'
|
||||||
|
);
|
||||||
|
$usage_module_out = db_get_row(
|
||||||
|
'tagente_modulo',
|
||||||
|
'nombre',
|
||||||
|
$if_name.'_outUsage'
|
||||||
|
);
|
||||||
|
|
||||||
|
$usage_module_id_in = $usage_module_in['id_agente_modulo'];
|
||||||
|
$usage_module_id_out = $usage_module_out['id_agente_modulo'];
|
||||||
|
$usage_module_description = $usage_module_in['descripcion'];
|
||||||
|
|
||||||
|
// Get usage modules data.
|
||||||
|
$usage_module_data_in = modules_get_previous_data(
|
||||||
|
$usage_module_id_in,
|
||||||
|
time()
|
||||||
|
);
|
||||||
|
|
||||||
|
$usage_module_data_out = modules_get_previous_data(
|
||||||
|
$usage_module_id_out,
|
||||||
|
time()
|
||||||
|
);
|
||||||
|
|
||||||
|
// Extract ifSpeed from description of usage module.
|
||||||
|
$if_speed_str = strstr($usage_module_description, 'Speed:');
|
||||||
|
$if_speed_str = substr($if_speed_str, 0, -1);
|
||||||
|
$if_speed_str = explode(':', $if_speed_str)[1];
|
||||||
|
|
||||||
|
$matches = [];
|
||||||
|
preg_match_all('/\d+/', $if_speed_str, $matches);
|
||||||
|
|
||||||
|
$if_speed_value = $matches[0][0];
|
||||||
|
|
||||||
|
// Transform ifSpeed unit.
|
||||||
|
$divisor = 1000;
|
||||||
|
$counter = 0;
|
||||||
|
while ($if_speed_value >= $divisor) {
|
||||||
|
if ($if_speed_value >= $divisor) {
|
||||||
|
$if_speed_value = ($if_speed_value / $divisor);
|
||||||
|
}
|
||||||
|
|
||||||
|
$counter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
$if_speed_unit = 'bps';
|
||||||
|
|
||||||
|
switch ($counter) {
|
||||||
|
case 1:
|
||||||
|
$if_speed_unit = 'Kbps';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
$if_speed_unit = 'Mbps';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
$if_speed_unit = 'Gbps';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
$if_speed_unit = 'Tbps';
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
$if_speed_unit = 'bps';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get in and out traffic.
|
||||||
|
$ifInOctets = modules_get_previous_data(
|
||||||
|
$agent_interfaces['traffic']['in'],
|
||||||
|
time()
|
||||||
|
);
|
||||||
|
$ifOutOctets = modules_get_previous_data(
|
||||||
|
$agent_interfaces['traffic']['out'],
|
||||||
|
time()
|
||||||
|
);
|
||||||
|
|
||||||
|
// Get last data timestamp.
|
||||||
|
$timestamps_array = array_merge(
|
||||||
|
array_column(ifInOctets, 'utimestamp'),
|
||||||
|
array_column(ifOutOctets, 'utimestamp')
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($sec === 'view') {
|
||||||
|
$table_data[$loop_index]['if_agent_name'] = '<a href="index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=main&id_agente='.$agent_interfaces['agent_id'].'">'.$agent_interfaces['agent_alias'].'</a>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$table_data[$loop_index]['if_name'] = $agent_interfaces['if_name'];
|
||||||
|
$table_data[$loop_index]['if_status_image'] = $agent_interfaces['status_image'];
|
||||||
|
$table_data[$loop_index]['if_speed_data'] = ($if_speed_value === null) ? __('N/A') : $if_speed_value.' '.$if_speed_unit;
|
||||||
|
$table_data[$loop_index]['if_in_octets'] = ($ifInOctets['datos'] === null) ? __('N/A') : $ifInOctets['datos'];
|
||||||
|
$table_data[$loop_index]['if_out_octets'] = ($ifOutOctets['datos'] === null) ? __('N/A') : $ifOutOctets['datos'];
|
||||||
|
$table_data[$loop_index]['if_usage_module_data_in'] = ($usage_module_data_in['datos'] === null) ? __('N/A') : $usage_module_data_in['datos'];
|
||||||
|
$table_data[$loop_index]['if_usage_module_data_out'] = ($usage_module_data_out['datos'] === null) ? __('N/A') : $usage_module_data_out['datos'];
|
||||||
|
$table_data[$loop_index]['if_last_data'] = human_time_comparation(
|
||||||
|
max(
|
||||||
|
$ifInOctets['utimestamp'],
|
||||||
|
$ifOutOctets['utimestamp']
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$loop_index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sort array of previously processed table values.
|
||||||
|
if ($sort === 'up') {
|
||||||
|
$res = usort(
|
||||||
|
$table_data,
|
||||||
|
function ($a, $b) use ($sort_field) {
|
||||||
|
if ($a[$sort_field] > $b[$sort_field]) {
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($sort === 'down') {
|
||||||
|
$res = usort(
|
||||||
|
$table_data,
|
||||||
|
function ($a, $b) use ($sort_field) {
|
||||||
|
if ($b[$sort_field] > $a[$sort_field]) {
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$sliced_table_data = array_slice(
|
||||||
|
$table_data,
|
||||||
|
$pagination_index,
|
||||||
|
$config['block_size']
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($sliced_table_data as $value) {
|
||||||
|
array_push($table->data, array_values($value));
|
||||||
|
}
|
||||||
|
|
||||||
|
html_print_table($table);
|
||||||
|
|
||||||
|
if (count($selected_interfaces) > $config['block_size']) {
|
||||||
|
ui_pagination(count($selected_interfaces), false, $pagination_index, 0, false, 'offset', true, 'pagination-bottom');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ui_print_info_message(['no_close' => true, 'message' => __('No search parameters')]);
|
||||||
|
}
|
||||||
|
}
|
259
pandora_console/operation/agentes/interface_view.php
Normal file
259
pandora_console/operation/agentes/interface_view.php
Normal file
@ -0,0 +1,259 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Pandora FMS - http://pandorafms.com
|
||||||
|
* ==================================================
|
||||||
|
* Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
||||||
|
* Please see http://pandorafms.org for full contribution list
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; version 2
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
check_login();
|
||||||
|
|
||||||
|
if (check_acl($config['id_user'], 0, 'AR') === false) {
|
||||||
|
db_pandora_audit(
|
||||||
|
'ACL Violation',
|
||||||
|
'Trying to access Agent Management'
|
||||||
|
);
|
||||||
|
include 'general/noaccess.php';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
require_once 'interface_view.functions.php';
|
||||||
|
require_once $config['homedir'].'/include/functions_agents.php';
|
||||||
|
|
||||||
|
$recursion = get_parameter_switch('recursion', false);
|
||||||
|
if ($recursion === false) {
|
||||||
|
$recursion = get_parameter('recursion', false);
|
||||||
|
}
|
||||||
|
|
||||||
|
$selected_agents = get_parameter('selected_agents', []);
|
||||||
|
$selected_interfaces = get_parameter('selected_interfaces', []);
|
||||||
|
$refr = (int) get_parameter('refr', 0);
|
||||||
|
$offset = (int) get_parameter('offset', 0);
|
||||||
|
$sort_field = get_parameter('sort_field');
|
||||||
|
$sort = get_parameter('sort', 'none');
|
||||||
|
$autosearch = false;
|
||||||
|
$sec = (string) get_parameter('sec', 'view');
|
||||||
|
$agent_id = (int) get_parameter('id_agente', 0);
|
||||||
|
|
||||||
|
if ($sec === 'view') {
|
||||||
|
ui_print_page_header(
|
||||||
|
__('Interface view').$subpage,
|
||||||
|
'',
|
||||||
|
false,
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$agent_filter = ['id_agente' => $agent_id];
|
||||||
|
|
||||||
|
// Autosearch if search parameters are different from those by default.
|
||||||
|
if (empty($selected_agents) === false || empty($selected_interfaces) === false
|
||||||
|
|| $sort_field !== '' || $sort !== 'none' || $sec === 'estado'
|
||||||
|
) {
|
||||||
|
$autosearch = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
print_filters($sec);
|
||||||
|
|
||||||
|
$result = false;
|
||||||
|
|
||||||
|
if ($autosearch === true) {
|
||||||
|
if ($sec === 'estado') {
|
||||||
|
$result = agents_get_network_interfaces(false, $agent_filter);
|
||||||
|
} else {
|
||||||
|
$result = agents_get_network_interfaces($selected_agents);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($result === false) {
|
||||||
|
$result = [];
|
||||||
|
} else {
|
||||||
|
ui_pagination(
|
||||||
|
count($selected_interfaces),
|
||||||
|
false,
|
||||||
|
$offset,
|
||||||
|
0,
|
||||||
|
false,
|
||||||
|
'offset',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print_table(
|
||||||
|
$result,
|
||||||
|
$selected_agents,
|
||||||
|
$selected_interfaces,
|
||||||
|
$sort_field,
|
||||||
|
$sort,
|
||||||
|
$offset,
|
||||||
|
$sec
|
||||||
|
);
|
||||||
|
|
||||||
|
?>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
var group_id = $("#group_id").val();
|
||||||
|
load_agents_selector(group_id);
|
||||||
|
|
||||||
|
var sec = "<?php echo $sec; ?>";
|
||||||
|
var agent_id = "<?php echo $agent_id; ?>";
|
||||||
|
|
||||||
|
if (sec === 'estado' && agent_id > 0) {
|
||||||
|
load_agent_interfaces_selector([agent_id]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$('#moduletype').click(function() {
|
||||||
|
jQuery.get (
|
||||||
|
"ajax.php",
|
||||||
|
{
|
||||||
|
"page": "general/subselect_data_module",
|
||||||
|
"module":$('#moduletype').val()
|
||||||
|
},
|
||||||
|
function (data, status) {
|
||||||
|
$("#datatypetittle").show ();
|
||||||
|
$("#datatypebox").hide ()
|
||||||
|
.empty ()
|
||||||
|
.append (data)
|
||||||
|
.show ();
|
||||||
|
},
|
||||||
|
"html"
|
||||||
|
);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
function toggle_full_value(id) {
|
||||||
|
text = $('#hidden_value_module_' + id).html();
|
||||||
|
old_text = $("#value_module_text_" + id).html();
|
||||||
|
|
||||||
|
$("#hidden_value_module_" + id).html(old_text);
|
||||||
|
|
||||||
|
$("#value_module_text_" + id).html(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
function load_agents_selector(group) {
|
||||||
|
|
||||||
|
jQuery.post ("ajax.php",
|
||||||
|
{
|
||||||
|
"page" : "operation/agentes/ver_agente",
|
||||||
|
"get_agents_group_json" : 1,
|
||||||
|
"id_group" : group,
|
||||||
|
"privilege" : "AW",
|
||||||
|
"keys_prefix" : "_",
|
||||||
|
"recursion" : $('#checkbox-recursion').is(':checked')
|
||||||
|
},
|
||||||
|
function (data, status) {
|
||||||
|
$("#selected_agents").html('');
|
||||||
|
jQuery.each (data, function (id, value) {
|
||||||
|
id = id.substring(1);
|
||||||
|
|
||||||
|
option = $("<option></option>")
|
||||||
|
.attr ("value", value["id_agente"])
|
||||||
|
.html (value["alias"]);
|
||||||
|
$("#id_agents").append (option);
|
||||||
|
$("#selected_agents").append (option);
|
||||||
|
});
|
||||||
|
|
||||||
|
var selected_agents = "<?php echo implode(',', $selected_agents); ?>";
|
||||||
|
|
||||||
|
$.each(selected_agents.split(","), function(i,e) {
|
||||||
|
$("#selected_agents option[value='" + e + "']").prop(
|
||||||
|
"selected",
|
||||||
|
true
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
load_agent_interfaces_selector($("#selected_agents").val());
|
||||||
|
},
|
||||||
|
"json"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$("#group_id").change(function() {
|
||||||
|
load_agents_selector(this.value);
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#checkbox-recursion").change (function () {
|
||||||
|
jQuery.post ("ajax.php",
|
||||||
|
{"page" : "operation/agentes/ver_agente",
|
||||||
|
"get_agents_group_json" : 1,
|
||||||
|
"id_group" : $("#group_id").val(),
|
||||||
|
"privilege" : "AW",
|
||||||
|
"keys_prefix" : "_",
|
||||||
|
"recursion" : $('#checkbox-recursion').is(':checked')
|
||||||
|
},
|
||||||
|
function (data, status) {
|
||||||
|
$("#selected_agents").html('');
|
||||||
|
$("#module").html('');
|
||||||
|
jQuery.each (data, function (id, value) {
|
||||||
|
id = id.substring(1);
|
||||||
|
|
||||||
|
option = $("<option></option>")
|
||||||
|
.attr ("value", value["id_agente"])
|
||||||
|
.html (value["alias"]);
|
||||||
|
$("#id_agents").append (option);
|
||||||
|
$("#selected_agents").append (option);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
"json"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#selected_agents").click (function() {
|
||||||
|
var selected_agents = $(this).val();
|
||||||
|
|
||||||
|
load_agent_interfaces_selector(selected_agents);
|
||||||
|
});
|
||||||
|
|
||||||
|
function load_agent_interfaces_selector(selected_agents) {
|
||||||
|
$("#selected_interfaces").empty();
|
||||||
|
jQuery.post ("ajax.php",
|
||||||
|
{
|
||||||
|
"page" : "include/ajax/agent",
|
||||||
|
"get_agents_interfaces" : 1,
|
||||||
|
"id_agents" : selected_agents
|
||||||
|
},
|
||||||
|
function (data, status) {
|
||||||
|
$("#module").html('');
|
||||||
|
|
||||||
|
if (data) {
|
||||||
|
Object.values(data).forEach(function(obj) {
|
||||||
|
for (const [key, value] of Object.entries(obj.interfaces)) {
|
||||||
|
option = $("<option></option>")
|
||||||
|
.attr ("value", value.status_module_id)
|
||||||
|
.html (key + ' (' + obj.agent_alias + ')');
|
||||||
|
$("#selected_interfaces").append(option);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var selected_interfaces =
|
||||||
|
"<?php echo implode(',', $selected_interfaces); ?>";
|
||||||
|
|
||||||
|
$.each(selected_interfaces.split(","), function(i,e) {
|
||||||
|
$("#selected_interfaces option[value='" + e + "']").prop(
|
||||||
|
"selected",
|
||||||
|
true
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
"json"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
@ -1319,7 +1319,30 @@ if ($tab == 'main') {
|
|||||||
$maintab['active'] = false;
|
$maintab['active'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Interfaces tab.
|
||||||
|
$agent_interfaces = agents_get_network_interfaces(
|
||||||
|
false,
|
||||||
|
['id_agente' => $id_agente]
|
||||||
|
);
|
||||||
|
|
||||||
|
$agent_interfaces_count = count($agent_interfaces[$id_agente]['interfaces']);
|
||||||
|
|
||||||
|
if ($agent_interfaces_count > 0) {
|
||||||
|
$interfacetab['text'] = '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agente.'&tab=interface">'.html_print_image(
|
||||||
|
'images/link.png',
|
||||||
|
true,
|
||||||
|
[
|
||||||
|
'title' => __('Interfaces'),
|
||||||
|
'class' => 'invert_filter',
|
||||||
|
]
|
||||||
|
).'</a>';
|
||||||
|
|
||||||
|
if ($tab == 'interface') {
|
||||||
|
$interfacetab['active'] = true;
|
||||||
|
} else {
|
||||||
|
$interfacetab['active'] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Alert tab.
|
// Alert tab.
|
||||||
$alerttab['text'] = '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agente.'&tab=alert">'.html_print_image(
|
$alerttab['text'] = '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agente.'&tab=alert">'.html_print_image(
|
||||||
@ -1600,6 +1623,7 @@ $onheader = [
|
|||||||
'manage' => $managetab,
|
'manage' => $managetab,
|
||||||
'main' => $maintab,
|
'main' => $maintab,
|
||||||
'alert' => $alerttab,
|
'alert' => $alerttab,
|
||||||
|
'interface' => $interfacetab,
|
||||||
'inventory' => $inventorytab,
|
'inventory' => $inventorytab,
|
||||||
'collection' => $collectiontab,
|
'collection' => $collectiontab,
|
||||||
'gis' => $gistab,
|
'gis' => $gistab,
|
||||||
@ -1718,6 +1742,10 @@ switch ($tab) {
|
|||||||
$tab_name = '';
|
$tab_name = '';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'interface':
|
||||||
|
$tab_name = 'Interfaces';
|
||||||
|
break;
|
||||||
|
|
||||||
case 'alert':
|
case 'alert':
|
||||||
$tab_name = 'Alerts';
|
$tab_name = 'Alerts';
|
||||||
break;
|
break;
|
||||||
@ -1848,6 +1876,10 @@ switch ($tab) {
|
|||||||
include 'datos_agente.php';
|
include 'datos_agente.php';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'interface':
|
||||||
|
include 'interface_view.php';
|
||||||
|
break;
|
||||||
|
|
||||||
case 'alert':
|
case 'alert':
|
||||||
include 'alerts_status.php';
|
include 'alerts_status.php';
|
||||||
break;
|
break;
|
||||||
|
@ -58,6 +58,9 @@ if (check_acl($config['id_user'], 0, 'AR')) {
|
|||||||
$sub2['operation/agentes/status_monitor']['text'] = __('Monitor detail');
|
$sub2['operation/agentes/status_monitor']['text'] = __('Monitor detail');
|
||||||
$sub2['operation/agentes/status_monitor']['refr'] = 0;
|
$sub2['operation/agentes/status_monitor']['refr'] = 0;
|
||||||
|
|
||||||
|
$sub2['operation/agentes/interface_view']['text'] = __('Interface view');
|
||||||
|
$sub2['operation/agentes/interface_view']['refr'] = 0;
|
||||||
|
|
||||||
enterprise_hook('tag_view_submenu');
|
enterprise_hook('tag_view_submenu');
|
||||||
|
|
||||||
$sub2['operation/agentes/alerts_status']['text'] = __('Alert detail');
|
$sub2['operation/agentes/alerts_status']['text'] = __('Alert detail');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user