From 8ef8f31f67278c4ee0c2bfd7879e60ac7ade794a Mon Sep 17 00:00:00 2001 From: fermin831 Date: Thu, 21 Jun 2018 19:27:33 +0200 Subject: [PATCH 1/5] Recover critical status the SNMPTrap on SNMP console actions --- pandora_console/include/functions_modules.php | 18 ++++++++++++++++++ .../operation/snmpconsole/snmp_view.php | 17 ++++++++++++----- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/pandora_console/include/functions_modules.php b/pandora_console/include/functions_modules.php index 0d1c208e16..a0979e4887 100755 --- a/pandora_console/include/functions_modules.php +++ b/pandora_console/include/functions_modules.php @@ -2741,4 +2741,22 @@ function get_module_realtime_link_graph ($module) { return $link_button; } + +/** + * @brief Force a module to adopt a determinated status. + * WARNING: Only use this function to modules that changes their status + * with some user action through the console + * @param int New status + * @param int Agent module to force new status + */ +function force_set_module_status ($status, $id_agent_module) { + return db_process_sql_update( 'tagente_estado', + array( + 'estado' => $status, + 'known_status' => $status, + 'last_known_status' => $status + ), + array('id_agente_modulo' => $id_agent_module) + ); +} ?> diff --git a/pandora_console/operation/snmpconsole/snmp_view.php b/pandora_console/operation/snmpconsole/snmp_view.php index 917cd8eee7..25dfd563ab 100755 --- a/pandora_console/operation/snmpconsole/snmp_view.php +++ b/pandora_console/operation/snmpconsole/snmp_view.php @@ -18,6 +18,7 @@ // Load global vars global $config; enterprise_include ("operation/snmpconsole/snmp_view.php"); +enterprise_include ("include/functions_snmp.php"); require_once("include/functions_agents.php"); require_once("include/functions_snmp.php"); @@ -97,18 +98,19 @@ else { if (isset ($_GET["delete"])) { $id_trap = (int) get_parameter_get ("delete", 0); if ($id_trap > 0 && check_acl ($config['id_user'], 0, "IM")) { - if($group_by){ - $sql_ids_traps = "SELECT id_trap FROM ttrap WHERE oid IN (SELECT oid FROM ttrap WHERE id_trap = ".$id_trap.") + $sql_ids_traps = "SELECT id_trap, source FROM ttrap WHERE oid IN (SELECT oid FROM ttrap WHERE id_trap = ".$id_trap.") AND source IN (SELECT source FROM ttrap WHERE id_trap = ".$id_trap.")"; $ids_traps = db_get_all_rows_sql($sql_ids_traps); foreach ($ids_traps as $key => $value) { $result = db_process_sql_delete('ttrap', array('id_trap' => $value['id_trap'])); + enterprise_hook('snmp_update_forwarded_modules', array($value)); } - } else { + $forward_info = db_get_row('ttrap', 'id_trap', $id_trap); $result = db_process_sql_delete('ttrap', array('id_trap' => $id_trap)); + enterprise_hook('snmp_update_forwarded_modules', array($forward_info)); ui_print_result_message ($result, __('Successfully deleted'), __('Could not be deleted')); @@ -129,7 +131,8 @@ if (isset ($_GET["check"])) { 'status' => 1, 'id_usuario' => $config["id_user"]); $result = db_process_sql_update('ttrap', $values, array('id_trap' => $id_trap)); - + enterprise_hook('snmp_update_forwarded_modules', array($id_trap)); + ui_print_result_message ($result, __('Successfully updated'), __('Could not be updated')); @@ -146,17 +149,20 @@ if (isset ($_POST["deletebt"])) { if (is_array ($trap_ids) && check_acl ($config['id_user'], 0, "IW")) { if($group_by){ foreach ($trap_ids as $key => $value) { - $sql_ids_traps = "SELECT id_trap FROM ttrap WHERE oid IN (SELECT oid FROM ttrap WHERE id_trap = ".$value.") + $sql_ids_traps = "SELECT id_trap, source FROM ttrap WHERE oid IN (SELECT oid FROM ttrap WHERE id_trap = ".$value.") AND source IN (SELECT source FROM ttrap WHERE id_trap = ".$value.")"; $ids_traps = db_get_all_rows_sql($sql_ids_traps); foreach ($ids_traps as $key2 => $value2) { $result = db_process_sql_delete('ttrap', array('id_trap' => $value2['id_trap'])); + enterprise_hook('snmp_update_forwarded_modules', array($value2)); } } } else { foreach ($trap_ids as $id_trap) { + $forward_info = db_get_row('ttrap', 'id_trap', $id_trap); db_process_sql_delete('ttrap', array('id_trap' => $id_trap)); + enterprise_hook('snmp_update_forwarded_modules', array($forward_info)); } } } @@ -173,6 +179,7 @@ if (isset ($_POST["updatebt"])) { foreach ($trap_ids as $id_trap) { $sql = sprintf ("UPDATE ttrap SET status = 1, id_usuario = '%s' WHERE id_trap = %d", $config["id_user"], $id_trap); db_process_sql ($sql); + enterprise_hook('snmp_update_forwarded_modules', array($id_trap)); } } else { From 6a53e924bb9f7170cfdc717ca3ee6360a8e6e5b9 Mon Sep 17 00:00:00 2001 From: fermin831 Date: Fri, 22 Jun 2018 13:28:39 +0200 Subject: [PATCH 2/5] Fixed agents display on GIS maps --- pandora_console/include/functions_gis.php | 26 ++++++------------- .../operation/gis_maps/public_console.php | 12 +++------ .../operation/gis_maps/render_view.php | 9 +++---- 3 files changed, 15 insertions(+), 32 deletions(-) diff --git a/pandora_console/include/functions_gis.php b/pandora_console/include/functions_gis.php index 9d941b35a1..d37a4a433e 100644 --- a/pandora_console/include/functions_gis.php +++ b/pandora_console/include/functions_gis.php @@ -446,37 +446,27 @@ function gis_add_agent_point($layerName, $pointName, $lat, $lon, $icon = null, $ * Get the agents in layer but not by group in layer. * * @param integer $idLayer Layer ID. - * @param array $fields Fields of row tagente to return. * * @return array The array rows of tagente of agents in the layer. */ -function gis_get_agents_layer($idLayer, $fields = null) { - - if ($fields === null) { - $select = '*'; - } - else { - $select = implode(',',$fields); - } - - $sql = "SELECT $select +function gis_get_agents_layer($idLayer) { + + $sql = "SELECT id_agente, nombre FROM tagente WHERE id_agente IN ( SELECT tagente_id_agente FROM tgis_map_layer_has_tagente WHERE tgis_map_layer_id_tmap_layer = $idLayer)"; $agents = db_get_all_rows_sql($sql); - + + $returned_agents = array(); if ($agents !== false) { foreach ($agents as $index => $agent) { - $agents[$index] = $agent['nombre']; + $returned_agents[$agent['id_agente']] = $agent['nombre']; } } - else { - return array(); - } - - return $agents; + + return $returned_agents; } function gis_add_point_path($layerName, $lat, $lon, $color, $manual = 1, $id) { diff --git a/pandora_console/operation/gis_maps/public_console.php b/pandora_console/operation/gis_maps/public_console.php index 725ce6e601..2d9d0e32b5 100755 --- a/pandora_console/operation/gis_maps/public_console.php +++ b/pandora_console/operation/gis_maps/public_console.php @@ -146,13 +146,10 @@ if ($layers != false) { $agentNamesByGroup = agents_get_group_agents($layer['tgrupo_id_grupo'], false, 'none', true, true, false); } - $agentNamesByLayer = gis_get_agents_layer($layer['id_tmap_layer'], - array('nombre')); - - - + $agentNamesByLayer = gis_get_agents_layer($layer['id_tmap_layer']); + $agentNames = array_unique($agentNamesByGroup + $agentNamesByLayer); - + foreach ($agentNames as $agentName) { $idAgent = agents_get_agent_id($agentName); $coords = gis_get_data_last_position_agent($idAgent); @@ -167,8 +164,7 @@ if ($layers != false) { gis_add_path($layer['layer_name'], $idAgent, $lastPosition); } } - - + $icon = gis_get_agent_icon_map($idAgent, true); $icon_size = getimagesize($icon); $icon_width = $icon_size[0]; diff --git a/pandora_console/operation/gis_maps/render_view.php b/pandora_console/operation/gis_maps/render_view.php index 9b4b8f65c8..1bcab74905 100644 --- a/pandora_console/operation/gis_maps/render_view.php +++ b/pandora_console/operation/gis_maps/render_view.php @@ -182,13 +182,10 @@ if ($layers != false) { $agentNamesByGroup = agents_get_group_agents($layer['tgrupo_id_grupo'], false, 'none', true, true, false); } - $agentNamesByLayer = gis_get_agents_layer($layer['id_tmap_layer'], - array('nombre')); - - - + $agentNamesByLayer = gis_get_agents_layer($layer['id_tmap_layer']); + $agentNames = array_unique($agentNamesByGroup + $agentNamesByLayer); - + foreach ($agentNames as $key => $agentName) { $idAgent = $key; $coords = gis_get_data_last_position_agent($idAgent); From 16cff75242dd8538bd84a9ac6662758b89883d42 Mon Sep 17 00:00:00 2001 From: fermin831 Date: Fri, 22 Jun 2018 13:29:36 +0200 Subject: [PATCH 3/5] Revert "Recover critical status the SNMPTrap on SNMP console actions" This reverts commit 8ef8f31f67278c4ee0c2bfd7879e60ac7ade794a. --- pandora_console/include/functions_modules.php | 18 ------------------ .../operation/snmpconsole/snmp_view.php | 17 +++++------------ 2 files changed, 5 insertions(+), 30 deletions(-) diff --git a/pandora_console/include/functions_modules.php b/pandora_console/include/functions_modules.php index a0979e4887..0d1c208e16 100755 --- a/pandora_console/include/functions_modules.php +++ b/pandora_console/include/functions_modules.php @@ -2741,22 +2741,4 @@ function get_module_realtime_link_graph ($module) { return $link_button; } - -/** - * @brief Force a module to adopt a determinated status. - * WARNING: Only use this function to modules that changes their status - * with some user action through the console - * @param int New status - * @param int Agent module to force new status - */ -function force_set_module_status ($status, $id_agent_module) { - return db_process_sql_update( 'tagente_estado', - array( - 'estado' => $status, - 'known_status' => $status, - 'last_known_status' => $status - ), - array('id_agente_modulo' => $id_agent_module) - ); -} ?> diff --git a/pandora_console/operation/snmpconsole/snmp_view.php b/pandora_console/operation/snmpconsole/snmp_view.php index 25dfd563ab..917cd8eee7 100755 --- a/pandora_console/operation/snmpconsole/snmp_view.php +++ b/pandora_console/operation/snmpconsole/snmp_view.php @@ -18,7 +18,6 @@ // Load global vars global $config; enterprise_include ("operation/snmpconsole/snmp_view.php"); -enterprise_include ("include/functions_snmp.php"); require_once("include/functions_agents.php"); require_once("include/functions_snmp.php"); @@ -98,19 +97,18 @@ else { if (isset ($_GET["delete"])) { $id_trap = (int) get_parameter_get ("delete", 0); if ($id_trap > 0 && check_acl ($config['id_user'], 0, "IM")) { + if($group_by){ - $sql_ids_traps = "SELECT id_trap, source FROM ttrap WHERE oid IN (SELECT oid FROM ttrap WHERE id_trap = ".$id_trap.") + $sql_ids_traps = "SELECT id_trap FROM ttrap WHERE oid IN (SELECT oid FROM ttrap WHERE id_trap = ".$id_trap.") AND source IN (SELECT source FROM ttrap WHERE id_trap = ".$id_trap.")"; $ids_traps = db_get_all_rows_sql($sql_ids_traps); foreach ($ids_traps as $key => $value) { $result = db_process_sql_delete('ttrap', array('id_trap' => $value['id_trap'])); - enterprise_hook('snmp_update_forwarded_modules', array($value)); } + } else { - $forward_info = db_get_row('ttrap', 'id_trap', $id_trap); $result = db_process_sql_delete('ttrap', array('id_trap' => $id_trap)); - enterprise_hook('snmp_update_forwarded_modules', array($forward_info)); ui_print_result_message ($result, __('Successfully deleted'), __('Could not be deleted')); @@ -131,8 +129,7 @@ if (isset ($_GET["check"])) { 'status' => 1, 'id_usuario' => $config["id_user"]); $result = db_process_sql_update('ttrap', $values, array('id_trap' => $id_trap)); - enterprise_hook('snmp_update_forwarded_modules', array($id_trap)); - + ui_print_result_message ($result, __('Successfully updated'), __('Could not be updated')); @@ -149,20 +146,17 @@ if (isset ($_POST["deletebt"])) { if (is_array ($trap_ids) && check_acl ($config['id_user'], 0, "IW")) { if($group_by){ foreach ($trap_ids as $key => $value) { - $sql_ids_traps = "SELECT id_trap, source FROM ttrap WHERE oid IN (SELECT oid FROM ttrap WHERE id_trap = ".$value.") + $sql_ids_traps = "SELECT id_trap FROM ttrap WHERE oid IN (SELECT oid FROM ttrap WHERE id_trap = ".$value.") AND source IN (SELECT source FROM ttrap WHERE id_trap = ".$value.")"; $ids_traps = db_get_all_rows_sql($sql_ids_traps); foreach ($ids_traps as $key2 => $value2) { $result = db_process_sql_delete('ttrap', array('id_trap' => $value2['id_trap'])); - enterprise_hook('snmp_update_forwarded_modules', array($value2)); } } } else { foreach ($trap_ids as $id_trap) { - $forward_info = db_get_row('ttrap', 'id_trap', $id_trap); db_process_sql_delete('ttrap', array('id_trap' => $id_trap)); - enterprise_hook('snmp_update_forwarded_modules', array($forward_info)); } } } @@ -179,7 +173,6 @@ if (isset ($_POST["updatebt"])) { foreach ($trap_ids as $id_trap) { $sql = sprintf ("UPDATE ttrap SET status = 1, id_usuario = '%s' WHERE id_trap = %d", $config["id_user"], $id_trap); db_process_sql ($sql); - enterprise_hook('snmp_update_forwarded_modules', array($id_trap)); } } else { From 2719cadc6127dc2d94d2469606dca2e75b286630 Mon Sep 17 00:00:00 2001 From: fermin831 Date: Fri, 22 Jun 2018 13:37:17 +0200 Subject: [PATCH 4/5] Revert "Fixed agents display on GIS maps" This reverts commit 6a53e924bb9f7170cfdc717ca3ee6360a8e6e5b9. --- pandora_console/include/functions_gis.php | 26 +++++++++++++------ .../operation/gis_maps/public_console.php | 12 ++++++--- .../operation/gis_maps/render_view.php | 9 ++++--- 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/pandora_console/include/functions_gis.php b/pandora_console/include/functions_gis.php index d37a4a433e..9d941b35a1 100644 --- a/pandora_console/include/functions_gis.php +++ b/pandora_console/include/functions_gis.php @@ -446,27 +446,37 @@ function gis_add_agent_point($layerName, $pointName, $lat, $lon, $icon = null, $ * Get the agents in layer but not by group in layer. * * @param integer $idLayer Layer ID. + * @param array $fields Fields of row tagente to return. * * @return array The array rows of tagente of agents in the layer. */ -function gis_get_agents_layer($idLayer) { - - $sql = "SELECT id_agente, nombre +function gis_get_agents_layer($idLayer, $fields = null) { + + if ($fields === null) { + $select = '*'; + } + else { + $select = implode(',',$fields); + } + + $sql = "SELECT $select FROM tagente WHERE id_agente IN ( SELECT tagente_id_agente FROM tgis_map_layer_has_tagente WHERE tgis_map_layer_id_tmap_layer = $idLayer)"; $agents = db_get_all_rows_sql($sql); - - $returned_agents = array(); + if ($agents !== false) { foreach ($agents as $index => $agent) { - $returned_agents[$agent['id_agente']] = $agent['nombre']; + $agents[$index] = $agent['nombre']; } } - - return $returned_agents; + else { + return array(); + } + + return $agents; } function gis_add_point_path($layerName, $lat, $lon, $color, $manual = 1, $id) { diff --git a/pandora_console/operation/gis_maps/public_console.php b/pandora_console/operation/gis_maps/public_console.php index 2d9d0e32b5..725ce6e601 100755 --- a/pandora_console/operation/gis_maps/public_console.php +++ b/pandora_console/operation/gis_maps/public_console.php @@ -146,10 +146,13 @@ if ($layers != false) { $agentNamesByGroup = agents_get_group_agents($layer['tgrupo_id_grupo'], false, 'none', true, true, false); } - $agentNamesByLayer = gis_get_agents_layer($layer['id_tmap_layer']); - + $agentNamesByLayer = gis_get_agents_layer($layer['id_tmap_layer'], + array('nombre')); + + + $agentNames = array_unique($agentNamesByGroup + $agentNamesByLayer); - + foreach ($agentNames as $agentName) { $idAgent = agents_get_agent_id($agentName); $coords = gis_get_data_last_position_agent($idAgent); @@ -164,7 +167,8 @@ if ($layers != false) { gis_add_path($layer['layer_name'], $idAgent, $lastPosition); } } - + + $icon = gis_get_agent_icon_map($idAgent, true); $icon_size = getimagesize($icon); $icon_width = $icon_size[0]; diff --git a/pandora_console/operation/gis_maps/render_view.php b/pandora_console/operation/gis_maps/render_view.php index 1bcab74905..9b4b8f65c8 100644 --- a/pandora_console/operation/gis_maps/render_view.php +++ b/pandora_console/operation/gis_maps/render_view.php @@ -182,10 +182,13 @@ if ($layers != false) { $agentNamesByGroup = agents_get_group_agents($layer['tgrupo_id_grupo'], false, 'none', true, true, false); } - $agentNamesByLayer = gis_get_agents_layer($layer['id_tmap_layer']); - + $agentNamesByLayer = gis_get_agents_layer($layer['id_tmap_layer'], + array('nombre')); + + + $agentNames = array_unique($agentNamesByGroup + $agentNamesByLayer); - + foreach ($agentNames as $key => $agentName) { $idAgent = $key; $coords = gis_get_data_last_position_agent($idAgent); From dcb73f844ee7bd1ee264571d4f889b752228c548 Mon Sep 17 00:00:00 2001 From: fermin831 Date: Fri, 22 Jun 2018 13:37:36 +0200 Subject: [PATCH 5/5] Revert "Revert "Recover critical status the SNMPTrap on SNMP console actions"" This reverts commit 16cff75242dd8538bd84a9ac6662758b89883d42. --- pandora_console/include/functions_modules.php | 18 ++++++++++++++++++ .../operation/snmpconsole/snmp_view.php | 17 ++++++++++++----- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/pandora_console/include/functions_modules.php b/pandora_console/include/functions_modules.php index 0d1c208e16..a0979e4887 100755 --- a/pandora_console/include/functions_modules.php +++ b/pandora_console/include/functions_modules.php @@ -2741,4 +2741,22 @@ function get_module_realtime_link_graph ($module) { return $link_button; } + +/** + * @brief Force a module to adopt a determinated status. + * WARNING: Only use this function to modules that changes their status + * with some user action through the console + * @param int New status + * @param int Agent module to force new status + */ +function force_set_module_status ($status, $id_agent_module) { + return db_process_sql_update( 'tagente_estado', + array( + 'estado' => $status, + 'known_status' => $status, + 'last_known_status' => $status + ), + array('id_agente_modulo' => $id_agent_module) + ); +} ?> diff --git a/pandora_console/operation/snmpconsole/snmp_view.php b/pandora_console/operation/snmpconsole/snmp_view.php index 917cd8eee7..25dfd563ab 100755 --- a/pandora_console/operation/snmpconsole/snmp_view.php +++ b/pandora_console/operation/snmpconsole/snmp_view.php @@ -18,6 +18,7 @@ // Load global vars global $config; enterprise_include ("operation/snmpconsole/snmp_view.php"); +enterprise_include ("include/functions_snmp.php"); require_once("include/functions_agents.php"); require_once("include/functions_snmp.php"); @@ -97,18 +98,19 @@ else { if (isset ($_GET["delete"])) { $id_trap = (int) get_parameter_get ("delete", 0); if ($id_trap > 0 && check_acl ($config['id_user'], 0, "IM")) { - if($group_by){ - $sql_ids_traps = "SELECT id_trap FROM ttrap WHERE oid IN (SELECT oid FROM ttrap WHERE id_trap = ".$id_trap.") + $sql_ids_traps = "SELECT id_trap, source FROM ttrap WHERE oid IN (SELECT oid FROM ttrap WHERE id_trap = ".$id_trap.") AND source IN (SELECT source FROM ttrap WHERE id_trap = ".$id_trap.")"; $ids_traps = db_get_all_rows_sql($sql_ids_traps); foreach ($ids_traps as $key => $value) { $result = db_process_sql_delete('ttrap', array('id_trap' => $value['id_trap'])); + enterprise_hook('snmp_update_forwarded_modules', array($value)); } - } else { + $forward_info = db_get_row('ttrap', 'id_trap', $id_trap); $result = db_process_sql_delete('ttrap', array('id_trap' => $id_trap)); + enterprise_hook('snmp_update_forwarded_modules', array($forward_info)); ui_print_result_message ($result, __('Successfully deleted'), __('Could not be deleted')); @@ -129,7 +131,8 @@ if (isset ($_GET["check"])) { 'status' => 1, 'id_usuario' => $config["id_user"]); $result = db_process_sql_update('ttrap', $values, array('id_trap' => $id_trap)); - + enterprise_hook('snmp_update_forwarded_modules', array($id_trap)); + ui_print_result_message ($result, __('Successfully updated'), __('Could not be updated')); @@ -146,17 +149,20 @@ if (isset ($_POST["deletebt"])) { if (is_array ($trap_ids) && check_acl ($config['id_user'], 0, "IW")) { if($group_by){ foreach ($trap_ids as $key => $value) { - $sql_ids_traps = "SELECT id_trap FROM ttrap WHERE oid IN (SELECT oid FROM ttrap WHERE id_trap = ".$value.") + $sql_ids_traps = "SELECT id_trap, source FROM ttrap WHERE oid IN (SELECT oid FROM ttrap WHERE id_trap = ".$value.") AND source IN (SELECT source FROM ttrap WHERE id_trap = ".$value.")"; $ids_traps = db_get_all_rows_sql($sql_ids_traps); foreach ($ids_traps as $key2 => $value2) { $result = db_process_sql_delete('ttrap', array('id_trap' => $value2['id_trap'])); + enterprise_hook('snmp_update_forwarded_modules', array($value2)); } } } else { foreach ($trap_ids as $id_trap) { + $forward_info = db_get_row('ttrap', 'id_trap', $id_trap); db_process_sql_delete('ttrap', array('id_trap' => $id_trap)); + enterprise_hook('snmp_update_forwarded_modules', array($forward_info)); } } } @@ -173,6 +179,7 @@ if (isset ($_POST["updatebt"])) { foreach ($trap_ids as $id_trap) { $sql = sprintf ("UPDATE ttrap SET status = 1, id_usuario = '%s' WHERE id_trap = %d", $config["id_user"], $id_trap); db_process_sql ($sql); + enterprise_hook('snmp_update_forwarded_modules', array($id_trap)); } } else {