diff --git a/pandora_console/operation/agentes/estado_generalagente.php b/pandora_console/operation/agentes/estado_generalagente.php index 5d2b9a82dd..6cdea6fa22 100755 --- a/pandora_console/operation/agentes/estado_generalagente.php +++ b/pandora_console/operation/agentes/estado_generalagente.php @@ -385,143 +385,59 @@ if ($last_incident != false) { // START: TABLE INTERFACES -$columns = array( - "id_agente_modulo", - "nombre", - "descripcion", - "ip_target" - ); -$filter = array( - "id_agente" => $id_agente, - "id_tipo_modulo" => (int)db_get_value("id_tipo", "ttipo_modulo", "nombre", "remote_snmp_proc"), - "disabled" => 0 - ); -$modules = agents_get_modules($id_agente, $columns, $filter, true, false); -$interfaces = array(); +$network_interfaces_by_agents = agents_get_network_interfaces(array($agent)); -if (!empty($modules)) { - foreach ($modules as $key => $module) { - // Trying to get the interface name from the module name - if (preg_match ("/_(.+)$/", (string)$module['nombre'], $matches)) { - if ($matches[1]) { - $interface_name = $matches[1]; - $interface_name_escaped = str_replace("/", "\/", $interface_name); - - if (!isset($interfaces[$interface_name]) - || (isset($interfaces[$interface_name]) - && preg_match ("/^ifOperStatus_$interface_name_escaped$/i", (string)$module['nombre'], $matches))) { - $interfaces[$interface_name] = $module; - } - - } - } - } - unset($modules); +$network_interfaces = array(); +if (!empty($network_interfaces_by_agents) && !empty($network_interfaces_by_agents[$id_agente])) { + $network_interfaces = $network_interfaces_by_agents[$id_agente]['interfaces']; +} + +if (!empty($network_interfaces)) { + $table_interface = new stdClass(); + $table_interface->id = 'agent_interface_info'; + $table_interface->class = 'databox'; + $table_interface->width = '100%'; + $table_interface->style = array(); + $table_interface->style['interface_status'] = 'width: 30px;'; + $table_interface->style['interface_graph'] = 'width: 20px;'; + $table_interface->head = array(); + $options = array( + "class" => "closed", + "style" => "vertical-align:middle; cursor:pointer;"); + $table_interface->head[0] = html_print_image("images/go.png", true, $options) . "  "; + $table_interface->head[0] .= '' . __('Interface information') .' (SNMP)'; + $table_interface->head_colspan = array(); + $table_interface->head_colspan[0] = 5; + $table_interface->data = array(); - if (!empty($interfaces)) { - - $table_interface = new stdClass(); - $table_interface->id = 'agent_interface_info'; - $table_interface->class = 'databox'; - $table_interface->width = '100%'; - $table_interface->style = array(); - $table_interface->style['interface_status'] = 'width: 30px;'; - $table_interface->style['interface_graph'] = 'width: 20px;'; - $table_interface->head = array(); - $options = array( - "class" => "closed", - "style" => "vertical-align:middle; cursor:pointer;"); - $table_interface->head[0] = html_print_image("images/go.png", true, $options) . "  "; - $table_interface->head[0] .= '' . __('Interface information') .' (SNMP)'; - $table_interface->head_colspan = array(); - $table_interface->head_colspan[0] = 5; - $table_interface->data = array(); - - foreach ($interfaces as $interface_name => $module) { - $interface_name_escaped = str_replace("/", "\/", $interface_name); - - $module_id = $module['id_agente_modulo']; - $db_status = modules_get_agentmodule_status($module_id); - $module_value = modules_get_last_value ($module_id); - modules_get_status($module_id, $db_status, $module_value, $status, $title); - $status = ui_print_status_image($status, $title, true); - - $ip_target = "--"; - // Trying to get something like an IP from the description - if (preg_match ("/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/", (string)$module['descripcion'], $matches) || - preg_match ("/(((?=(?>.*?(::))(?!.+\3)))\3?|([\dA-F]{1,4}(\3|:?)|\2))(?4){5}((?4){2}|(25[0-5]| - (2[0-4]|1\d|[1-9])?\d)(\.(?7)){3})/i", (string)$module['descripcion'], $matches)) { - if ($matches[0]) { - $ip_target = $matches[0]; - } - } - $mac = "--"; - // Trying to get something like a mac from the description - if (preg_match ("/([0-9a-f]{1,2}[\.:-]){5}([0-9a-f]{1,2})/i", (string)$module['descripcion'], $matches)) { - if ($matches[0]) { - $mac = $matches[0]; - } - } - - // Get the ifInOctets and ifOutOctets modules of the interface - $columns = array( - "id_agente_modulo", - "nombre" - ); - $interface_traffic_modules = agents_get_modules($id_agente, $columns, "nombre LIKE 'if%Octets_$interface_name'"); - if (!empty($interface_traffic_modules) && count($interface_traffic_modules) >= 2) { - $interface_traffic_modules_aux = array('in' => '', 'out' => ''); - foreach ($interface_traffic_modules as $interface_traffic_module) { - $interface_name_escaped = str_replace("/", "\/", $interface_name); - if (preg_match ("/^if(.+)Octets_$interface_name_escaped$/i", $interface_traffic_module['nombre'], $matches)) { - if (strtolower($matches[1]) == 'in') { - $interface_traffic_modules_aux['in'] = $interface_traffic_module['id_agente_modulo']; - } - elseif (strtolower($matches[1]) == 'out') { - $interface_traffic_modules_aux['out'] = $interface_traffic_module['id_agente_modulo']; - } - } - } - if (!empty($interface_traffic_modules_aux['in']) && !empty($interface_traffic_modules_aux['out'])) { - $interface_traffic_modules = $interface_traffic_modules_aux; - } - else { - $interface_traffic_modules = false; - } - } - else { - $interface_traffic_modules = false; - } - - if ($interface_traffic_modules != false) { - $params = array( - 'interface_name' => $interface_name, - 'agent_id' => $id_agente, - 'traffic_module_in' => $interface_traffic_modules_aux['in'], - 'traffic_module_out' => $interface_traffic_modules_aux['out'] - ); - $params_json = json_encode($params); - $params_encoded = base64_encode($params_json); - $win_handle = dechex(crc32($module_id.$interface_name)); - $graph_link = "" . - html_print_image("images/chart_curve.png", true, array("title" => __('Interface traffic'))) . ""; - } - else { - $graph_link = ""; - } - - $data = array(); - $data['interface_name'] = "" . $interface_name . ""; - $data['interface_status'] = $status; - $data['interface_graph'] = $graph_link; - $data['interface_ip'] = $ip_target; - $data['interface_mac'] = $mac; - $table_interface->data[] = $data; + foreach ($network_interfaces as $interface_name => $interface) { + if (!empty($interface['traffic'])) { + $params = array( + 'interface_name' => $interface_name, + 'agent_id' => $id_agente, + 'traffic_module_in' => $interface['traffic']['in'], + 'traffic_module_out' => $interface['traffic']['out'] + ); + $params_json = json_encode($params); + $params_encoded = base64_encode($params_json); + $win_handle = dechex(crc32($interface['status_module_id'].$interface_name)); + $graph_link = "" . + html_print_image("images/chart_curve.png", true, array("title" => __('Interface traffic'))) . ""; } + else { + $graph_link = ""; + } + + $data = array(); + $data['interface_name'] = "" . $interface_name . ""; + $data['interface_status'] = $interface['status_image']; + $data['interface_graph'] = $graph_link; + $data['interface_ip'] = $interface['ip']; + $data['interface_mac'] = $interface['mac']; + $table_interface->data[] = $data; } - // This javascript piece of code is used to make expandible the body of the table - ?> +?> -