From 41fbbb0018484ae3297c4c2278871c23f7b1f8a0 Mon Sep 17 00:00:00 2001 From: juanmanuelr Date: Mon, 16 Jan 2012 10:30:16 +0000 Subject: [PATCH] 2012-01-16 Juan Manuel Ramon * include/functions_api.php: New functions in Api update_network_module, update_plugin_module, update_data_module and update_snmp_module. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@5370 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_console/ChangeLog | 7 +- pandora_console/include/functions_api.php | 303 +++++++++++++++++++++- 2 files changed, 301 insertions(+), 9 deletions(-) diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index 39bfea7806..754515223e 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,9 @@ +2012-01-16 Juan Manuel Ramon + + * include/functions_api.php: New functions in Api + update_network_module, update_plugin_module, update_data_module and + update_snmp_module. + 2012-01-13 Ramon Novoa * include/functions_graph.php, @@ -43,7 +49,6 @@ set_delete_module_template, set_update_user, set_add_user_profile, set_create_module_template. ->>>>>>> .r5367 2012-01-12 Vanessa Gil * godmode/netflow/nf_edit.php diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index 514f5d055d..31cadb5945 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -759,7 +759,7 @@ function set_delete_agent($id, $thrash1, $thrast2, $thrash3) { * @param $thrash1 Don't use. * @param array $other it's array, $other as param is ;;; * ;;;;;;;; - * ;;;;;;; + * ;;;;;;; * ;;; in this order * and separator char (after text ; ) and separator (pass in param othermode as othermode=url_encode_separator_) * example: @@ -818,15 +818,72 @@ function set_create_network_module($id, $thrash1, $other, $thrash3) { } } +/** + * Update a network module in agent. And return a message with the result of the operation. + * + * @param string $id Name of the network module to update. + * @param $thrash1 Don't use. + * @param array $other it's array, $other as param is ; + * ;;;;;;;; + * ;;;;;;; + * ;;; in this order + * and separator char (after text ; ) and separator (pass in param othermode as othermode=url_encode_separator_) + * example: + * + * api.php?op=set&op2=update_network_module&id=example_module_name&other=44|0|2|10|15||16|18||7|0|127.0.0.1|0||0|300|30.00|0|0|0|latency%20ping%20modified%20by%20the%20Api&other_mode=url_encode_separator_| + * + * + * @param $thrash3 Don't use + */ +function set_update_network_module($module_name, $thrash1, $other, $thrash3){ - $plugin_user = (string) get_parameter ('plugin_user'); - if (get_parameter('id_module_component_type') == 7) - $plugin_pass = (int) get_parameter ('plugin_pass'); - else - $plugin_pass = (string) get_parameter ('plugin_pass'); - - $plugin_parameter = (string) get_parameter ('plugin_parameter'); + if ($module_name == ""){ + returnError('error_update_network_module', __('Error updating network module. Module name cannot be left blank.')); + return; + } + + $id_module = db_get_value ('id_agente_modulo', 'tagente_modulo', 'nombre', $module_name); + if (!$id_module){ + returnError('error_update_network_module', __('Error updating network module. Id_module doesn\'t exists.')); + return; + } + + // If we want to change the module to a new agent + if ($other['data'][0] != ""){ + $id_agent_old = db_get_value ('id_agente', 'tagente_modulo', 'id_agente_modulo', $id_module); + + if ($id_agent_old != $other['data'][0]){ + $id_module_exists = db_get_value_filter ('id_agente_modulo', 'tagente_modulo', array('nombre' => $module_name, 'id_agente' => $other['data'][0])); + + if ($id_module_exists){ + returnError('error_update_network_module', __('Error updating network module. Id_module exists in the new agent.')); + return; + } + } + } + + $network_module_fields = array('id_agente', 'disabled', 'id_module_group', 'min_warning', 'max_warning', 'str_warning', + 'min_critical', 'max_critical', 'str_critical', 'min_ff_event', 'history_data', 'ip_target', 'tcp_port', 'snmp_community', + 'snmp_oid', 'module_interval', 'post_process', 'min', 'max', 'custom_id', 'descripcion'); + + $values = array(); + $cont = 0; + foreach ($network_module_fields as $field){ + if ($other['data'][$cont] != ""){ + $values[$field] = $other['data'][$cont]; + } + + $cont++; + } + + $result_update = modules_update_agent_module($id_module, $values); + + if ($result_update < 0) + returnError('error_update_network_module', 'Error updating network module.'); + else + returnData('string', array('type' => 'string', 'data' => __('Network module updated.'))); +} /** * Create a plugin module in agent. And return the id_agent_module of new module. @@ -902,6 +959,73 @@ function set_create_plugin_module($id, $thrash1, $other, $thrash3) { } } +/** + * Update a plugin module in agent. And return the id_agent_module of new module. + * @param string $id Name of the plugin module to update. + * @param $thrash1 Don't use. + * @param array $other it's array, $other as param is ;; + * ;;;;;;;; + * ;;;;;;; + * ;;;;;;; in this order + * and separator char (after text ; ) and separator (pass in param othermode as othermode=url_encode_separator_) + * example: + * + * api.php?op=set&op2=update_plugin_module&id=example_plugin_name&other=44|0|2|0|0||0|0||0|0|127.0.0.1|0||0|300|0|0|0|0|plugin%20module%20from%20api|2|admin|pass|-p%20max&other_mode=url_encode_separator_| + * + * + * @param $thrash3 Don't use + */ +function set_update_plugin_module($module_name, $thrash1, $other, $thrash3){ + + if ($module_name == ""){ + returnError('error_update_plugin_module', __('Error updating plugin module. Module name cannot be left blank.')); + return; + } + + $id_module = db_get_value ('id_agente_modulo', 'tagente_modulo', 'nombre', $module_name); + + if (!$id_module){ + returnError('error_update_plugin_module', __('Error updating plugin module. Id_module doesn\'t exists.')); + return; + } + + // If we want to change the module to a new agent + if ($other['data'][0] != ""){ + $id_agent_old = db_get_value ('id_agente', 'tagente_modulo', 'id_agente_modulo', $id_module); + + if ($id_agent_old != $other['data'][0]){ + $id_module_exists = db_get_value_filter ('id_agente_modulo', 'tagente_modulo', array('nombre' => $module_name, 'id_agente' => $other['data'][0])); + + if ($id_module_exists){ + returnError('error_update_plugin_module', __('Error updating plugin module. Id_module exists in the new agent.')); + return; + } + } + } + + $plugin_module_fields = array('id_agente', 'disabled', 'id_module_group', 'min_warning', 'max_warning', 'str_warning', + 'min_critical', 'max_critical', 'str_critical', 'min_ff_event', 'history_data', 'ip_target', + 'tcp_port', 'snmp_community', 'snmp_oid', 'module_interval', 'post_process', 'min', 'max', + 'custom_id', 'descripcion', 'id_plugin', 'plugin_user', 'plugin_pass', 'plugin_parameter'); + + $values = array(); + $cont = 0; + foreach ($plugin_module_fields as $field){ + if ($other['data'][$cont] != ""){ + $values[$field] = $other['data'][$cont]; + } + + $cont++; + } + + $result_update = modules_update_agent_module($id_module, $values); + + if ($result_update < 0) + returnError('error_update_plugin_module', 'Error updating plugin module.'); + else + returnData('string', array('type' => 'string', 'data' => __('Plugin module updated.'))); +} + /** * Create a data module in agent. And return the id_agent_module of new module. * Note: Only adds database information, this function doesn't alter config file information. @@ -966,6 +1090,74 @@ function set_create_data_module($id, $thrash1, $other, $thrash3) { } } +/** + * Update a data module in agent. And return a message with the result of the operation. + * + * @param string $id Name of the data module to update. + * @param $thrash1 Don't use. + * @param array $other it's array, $other as param is ; + * ;;;;;;;; + * ;;;;;;; + * ;;; in this order + * and separator char (after text ; ) and separator (pass in param othermode as othermode=url_encode_separator_) + * example: + * + * api.php?op=set&op2=update_data_module&id=example_module_name&other=44|0|data%20module%20modified%20from%20API|6|0|0|50.00|300|10|15||16|18||0&other_mode=url_encode_separator_| + * + * + * @param $thrash3 Don't use + */ +function set_update_data_module($module_name, $thrash1, $other, $thrash3){ + + if ($module_name == ""){ + returnError('error_update_data_module', __('Error updating data module. Module name cannot be left blank.')); + return; + } + + $id_module = db_get_value ('id_agente_modulo', 'tagente_modulo', 'nombre', $module_name); + + if (!$id_module){ + returnError('error_update_data_module', __('Error updating data module. Id_module doesn\'t exists.')); + return; + } + + // If we want to change the module to a new agent + if ($other['data'][0] != ""){ + $id_agent_old = db_get_value ('id_agente', 'tagente_modulo', 'id_agente_modulo', $id_module); + + if ($id_agent_old != $other['data'][0]){ + $id_module_exists = db_get_value_filter ('id_agente_modulo', 'tagente_modulo', array('nombre' => $module_name, 'id_agente' => $other['data'][0])); + + if ($id_module_exists){ + returnError('error_update_data_module', __('Error updating data module. Id_module exists in the new agent.')); + return; + } + } + } + + $data_module_fields = array('id_agente', 'disabled', 'descripcion', 'id_module_group', 'min', 'max', + 'post_process', 'module_interval', 'min_warning', 'max_warning', 'str_warning', 'min_critical', 'max_critical', 'str_critical', + 'history_data'); + + $values = array(); + $cont = 0; + foreach ($data_module_fields as $field){ + if ($other['data'][$cont] != ""){ + $values[$field] = $other['data'][$cont]; + } + + $cont++; + } + + $result_update = modules_update_agent_module($id_module, $values); + + if ($result_update < 0) + returnError('error_update_data_module', 'Error updating data module.'); + else + returnData('string', array('type' => 'string', 'data' => __('Data module updated.'))); +} + + /** * Create a SNMP module in agent. And return the id_agent_module of new module. * @@ -1102,6 +1294,101 @@ function set_create_snmp_module($id, $thrash1, $other, $thrash3) { } } +/** + * Update a SNMP module in agent. And return a message with the result of the operation. + * + * @param string $id Name of agent to update the module. + * @param $thrash1 Don't use. + * @param array $other it's array, $other as param is ;; + * ;;;;;;;; + * ;;;;;;;; + * ;;;;;;;; + * ; in this order + * and separator char (after text ; ) and separator (pass in param othermode as othermode=url_encode_separator_) + * example: + * + * example (update snmp v: 3, snmp3_priv_method: AES, passw|authNoPriv|MD5|pepito_user|example_priv_passw) + * + * api.php?op=set&op2=update_snmp_module&id=example_snmp_module_name&other=44|0|6|20|25||26|30||15|1|127.0.0.1|60|3|public|.1.3.6.1.2.1.1.1.0|180|50.00|10|60|0|SNMP%20module%20modified%20by%20API|AES|example_priv_passw|authNoPriv|MD5|pepito_user|example_auth_passw&other_mode=url_encode_separator_| + * + * @param $thrash3 Don't use + */ +function set_update_snmp_module($module_name, $thrash1, $other, $thrash3) { + + if ($module_name == ""){ + returnError('error_update_snmp_module', __('Error updating SNMP module. Module name cannot be left blank.')); + return; + } + + $id_module = db_get_value ('id_agente_modulo', 'tagente_modulo', 'nombre', $module_name); + + if (!$id_module){ + returnError('error_update_snmp_module', __('Error updating SNMP module. Id_module doesn\'t exists.')); + return; + } + + // If we want to change the module to a new agent + if ($other['data'][0] != ""){ + $id_agent_old = db_get_value ('id_agente', 'tagente_modulo', 'id_agente_modulo', $id_module); + + if ($id_agent_old != $other['data'][0]){ + $id_module_exists = db_get_value_filter ('id_agente_modulo', 'tagente_modulo', array('nombre' => $module_name, 'id_agente' => $other['data'][0])); + + if ($id_module_exists){ + returnError('error_update_snmp_module', __('Error updating SNMP module. Id_module exists in the new agent.')); + return; + } + } + } + + # SNMP version 3 + if ($other['data'][13] == "3"){ + + if ($other['data'][22] != "AES" and $other['data'][22] != "DES"){ + returnError('error_create_snmp_module', __('Error in creation SNMP module. snmp3_priv_method doesn\'t exists. Set it to \'AES\' or \'DES\'. ')); + return; + } + + if ($other['data'][24] != "authNoPriv" and $other['data'][24] != "authPriv" and $other['data'][24] != "noAuthNoPriv"){ + returnError('error_create_snmp_module', __('Error in creation SNMP module. snmp3_sec_level doesn\'t exists. Set it to \'authNoPriv\' or \'authPriv\' or \'noAuthNoPriv\'. ')); + return; + } + + if ($other['data'][25] != "MD5" and $other['data'][25] != "SHA"){ + returnError('error_create_snmp_module', __('Error in creation SNMP module. snmp3_auth_method doesn\'t exists. Set it to \'MD5\' or \'SHA\'. ')); + return; + } + + $snmp_module_fields = array('id_agente', 'disabled', 'id_module_group', 'min_warning', 'max_warning', 'str_warning', + 'min_critical', 'max_critical', 'str_critical', 'min_ff_event', 'history_data', 'ip_target', 'tcp_port', 'tcp_send', + 'snmp_community', 'snmp_oid', 'module_interval', 'post_process', 'min', 'max', 'custom_id', 'descripcion', 'custom_string_1', + 'custom_string_2', 'custom_string_3', 'plugin_parameter', 'plugin_user', 'plugin_pass'); + + } + else { + $snmp_module_fields = array('id_agente', 'disabled', 'id_module_group', 'min_warning', 'max_warning', 'str_warning', + 'min_critical', 'max_critical', 'str_critical', 'min_ff_event', 'history_data', 'ip_target', 'tcp_port', 'tcp_send', + 'snmp_community', 'snmp_oid', 'module_interval', 'post_process', 'min', 'max', 'custom_id', 'descripcion'); + } + + $values = array(); + $cont = 0; + foreach ($snmp_module_fields as $field){ + if ($other['data'][$cont] != ""){ + $values[$field] = $other['data'][$cont]; + } + + $cont++; + } + + $result_update = modules_update_agent_module($id_module, $values); + + if ($result_update < 0) + returnError('error_update_snmp_module', 'Error updating SNMP module.'); + else + returnData('string', array('type' => 'string', 'data' => __('SNMP module updated.'))); +} + /** * Create new module template. *