From 8af72c1c9d5fb0f46592f9b55b9fff1ea49d2835 Mon Sep 17 00:00:00 2001 From: Daniel Barbero <daniel.barbero@artica.es> Date: Wed, 9 Oct 2019 17:26:06 +0200 Subject: [PATCH 01/16] add Remote CMD --- pandora_console/extras/mr/33.sql | 9 + .../pandoradb_migrate_6.0_to_7.0.mysql.sql | 8 +- .../general/subselect_data_module.php | 3 +- .../godmode/agentes/configurar_agente.php | 21 +- .../godmode/agentes/module_manager_editor.php | 311 ++++++++++++------ .../agentes/module_manager_editor_common.php | 81 +++-- .../agentes/module_manager_editor_network.php | 266 +++++++++++---- .../include/class/CredentialStore.class.php | 2 + .../operation/agentes/status_monitor.php | 9 +- pandora_console/pandoradb_data.sql | 12 +- 10 files changed, 533 insertions(+), 189 deletions(-) create mode 100644 pandora_console/extras/mr/33.sql diff --git a/pandora_console/extras/mr/33.sql b/pandora_console/extras/mr/33.sql new file mode 100644 index 0000000000..885132f68f --- /dev/null +++ b/pandora_console/extras/mr/33.sql @@ -0,0 +1,9 @@ +START TRANSACTION; + +INSERT INTO `ttipo_modulo` VALUES +(34,'remote_cmd', 10, 'Remote CMD command, numeric data', 'mod_remote_cmd.png'), +(35,'remote_cmd_proc', 10, 'Remote CMD command, boolean data', 'mod_remote_cmd_proc.png'), +(36,'remote_cmd_string', 10, 'Remote CMD command, alphanumeric data', 'mod_remote_cmd_string.png'), +(37,'remote_cmd_inc', 10, 'Remote CMD command, incremental data', 'mod_remote_cmd_inc.png'); + +COMMIT; \ No newline at end of file diff --git a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql index 6476e79e2b..30cff5136a 100644 --- a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql +++ b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql @@ -1654,7 +1654,12 @@ INSERT INTO tmodule VALUES (8, 'Wux module'); -- Table `ttipo_modulo` -- --------------------------------------------------------------------- -INSERT INTO ttipo_modulo VALUES (25,'web_analysis', 8, 'Web analysis data', 'module-wux.png'); +INSERT INTO `ttipo_modulo` VALUES +(25,'web_analysis', 8, 'Web analysis data', 'module-wux.png'), +(34,'remote_cmd', 10, 'Remote CMD command, numeric data', 'mod_remote_cmd.png'), +(35,'remote_cmd_proc', 10, 'Remote CMD command, boolean data', 'mod_remote_cmd_proc.png'), +(36,'remote_cmd_string', 10, 'Remote CMD command, alphanumeric data', 'mod_remote_cmd_string.png'), +(37,'remote_cmd_inc', 10, 'Remote CMD command, incremental data', 'mod_remote_cmd_inc.png'); -- --------------------------------------------------------------------- -- Table `tdashboard` @@ -2293,3 +2298,4 @@ CREATE TABLE `tdeployment_hosts` ( FOREIGN KEY (`target_agent_version_id`) REFERENCES `tagent_repository`(`id`) ON UPDATE CASCADE ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + diff --git a/pandora_console/general/subselect_data_module.php b/pandora_console/general/subselect_data_module.php index 416897ea15..fca56c692c 100644 --- a/pandora_console/general/subselect_data_module.php +++ b/pandora_console/general/subselect_data_module.php @@ -13,7 +13,8 @@ switch ($_GET['module']) { $sql = sprintf( 'SELECT id_tipo, descripcion FROM ttipo_modulo - WHERE categoria between 3 and 5 ' + WHERE categoria between 3 and 5 + OR categoria = 10 ' ); break; diff --git a/pandora_console/godmode/agentes/configurar_agente.php b/pandora_console/godmode/agentes/configurar_agente.php index 55116f940a..f6cf27a69e 100644 --- a/pandora_console/godmode/agentes/configurar_agente.php +++ b/pandora_console/godmode/agentes/configurar_agente.php @@ -1330,7 +1330,7 @@ if ($update_module || $create_module) { // Change double quotes by single. $snmp_oid = preg_replace('/"/', ''', $snmp_oid); - if (empty($snmp_oid)) { + if (empty($snmp_oid) === true) { // The user did not set any OID manually but did a SNMP walk. $snmp_oid = (string) get_parameter('select_snmp_oid'); } @@ -1339,18 +1339,31 @@ if ($update_module || $create_module) { // New support for snmp v3. $tcp_send = (string) get_parameter('snmp_version'); $plugin_user = (string) get_parameter('snmp3_auth_user'); - $plugin_pass = io_input_password((string) get_parameter('snmp3_auth_pass')); + $plugin_pass = io_input_password( + (string) get_parameter('snmp3_auth_pass') + ); $plugin_parameter = (string) get_parameter('snmp3_auth_method'); $custom_string_1 = (string) get_parameter('snmp3_privacy_method'); - $custom_string_2 = io_input_password((string) get_parameter('snmp3_privacy_pass')); + $custom_string_2 = io_input_password( + (string) get_parameter('snmp3_privacy_pass') + ); $custom_string_3 = (string) get_parameter('snmp3_security_level'); + } else if ($id_module_type >= 34 && $id_module_type <= 37) { + hd($_POST); + $tcp_send = (string) get_parameter('command_text'); + $custom_string_1 = (string) get_parameter( + 'command_credential_identifier' + ); + $custom_string_2 = (string) get_parameter('command_os'); } else { $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 = io_input_password((string) get_parameter('plugin_pass')); + $plugin_pass = io_input_password( + (string) get_parameter('plugin_pass') + ); } $plugin_parameter = (string) get_parameter('plugin_parameter'); diff --git a/pandora_console/godmode/agentes/module_manager_editor.php b/pandora_console/godmode/agentes/module_manager_editor.php index 13c313892a..bf51f2b0fe 100644 --- a/pandora_console/godmode/agentes/module_manager_editor.php +++ b/pandora_console/godmode/agentes/module_manager_editor.php @@ -1,16 +1,32 @@ <?php +/** + * Extension to manage a list of gateways and the node address where they should + * point to. + * + * @category Modules + * @package Pandora FMS + * @subpackage Community + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * Copyright (c) 2005-2019 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 for 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. + * ============================================================================ + */ -// Pandora FMS - http://pandorafms.com -// ================================================== -// Copyright (c) 2005-2010 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 for 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. require_once 'include/functions_network_components.php'; enterprise_include_once('include/functions_local_components.php'); @@ -19,18 +35,27 @@ if (is_ajax()) { $snmp_walk = (bool) get_parameter('snmp_walk'); $get_module_component = (bool) get_parameter('get_module_component'); $get_module_components = (bool) get_parameter('get_module_components'); - $get_module_local_components = (bool) get_parameter('get_module_local_components'); - $get_module_local_component = (bool) get_parameter('get_module_local_component'); + $get_module_local_components = (bool) get_parameter( + 'get_module_local_components' + ); + $get_module_local_component = (bool) get_parameter( + 'get_module_local_component' + ); if ($get_module_component) { $id_component = (int) get_parameter('id_module_component'); $component = db_get_row('tnetwork_component', 'id_nc', $id_component); - $component['throw_unknown_events'] = network_components_is_disable_type_event($id_component, EVENTS_GOING_UNKNOWN); + $component['throw_unknown_events'] = network_components_is_disable_type_event( + $id_component, + EVENTS_GOING_UNKNOWN + ); // Decrypt passwords in the component. - $component['plugin_pass'] = io_output_password($component['plugin_pass']); + $component['plugin_pass'] = io_output_password( + $component['plugin_pass'] + ); $component['str_warning'] = io_safe_output($component['str_warning']); $component['str_critical'] = io_safe_output($component['str_critical']); @@ -83,33 +108,29 @@ if (is_ajax()) { $component = db_get_row('tlocal_component', 'id', $id_component); foreach ($component as $index => $element) { - $component[$index] = html_entity_decode($element, ENT_QUOTES, 'UTF-8'); + $component[$index] = html_entity_decode( + $element, + ENT_QUOTES, + 'UTF-8' + ); } - $typeName = local_components_parse_module_extract_value('module_type', $component['data']); + $typeName = local_components_parse_module_extract_value( + 'module_type', + $component['data'] + ); - switch ($config['dbtype']) { - case 'mysql': - $component['type'] = db_get_value_sql( - ' - SELECT id_tipo - FROM ttipo_modulo - WHERE nombre LIKE "'.$typeName.'"' - ); - break; + $component['type'] = db_get_value_sql( + ' + SELECT id_tipo + FROM ttipo_modulo + WHERE nombre LIKE "'.$typeName.'"' + ); - case 'postgresql': - case 'oracle': - $component['type'] = db_get_value_sql( - ' - SELECT id_tipo - FROM ttipo_modulo - WHERE nombre LIKE \''.$typeName.'\'' - ); - break; - } - - $component['throw_unknown_events'] = !local_components_is_disable_type_event($id_component, EVENTS_GOING_UNKNOWN); + $component['throw_unknown_events'] = !local_components_is_disable_type_event( + $id_component, + EVENTS_GOING_UNKNOWN + ); echo io_json_mb_encode($component); return; @@ -136,7 +157,9 @@ if (is_ajax()) { $snmp3_auth_method = get_parameter('snmp3_auth_method'); $snmp3_auth_pass = io_safe_output(get_parameter('snmp3_auth_pass')); $snmp3_privacy_method = get_parameter('snmp3_privacy_method'); - $snmp3_privacy_pass = io_safe_output(get_parameter('snmp3_privacy_pass')); + $snmp3_privacy_pass = io_safe_output( + get_parameter('snmp3_privacy_pass') + ); $snmp_port = get_parameter('snmp_port'); $snmpwalk = get_snmpwalk( @@ -177,7 +200,7 @@ require_once 'include/functions_exportserver.php'; require_once $config['homedir'].'/include/functions_modules.php'; require_once $config['homedir'].'/include/functions_agents.php'; -// Reading a module +// Reading a module. if ($id_agent_module) { $module = modules_get_agentmodule($id_agent_module); $moduletype = $module['id_modulo']; @@ -202,19 +225,25 @@ if ($id_agent_module) { $snmp_community = $module['snmp_community']; $snmp_oid = $module['snmp_oid']; - // New support for snmp v3 + // New support for snmp v3. $snmp_version = $module['tcp_send']; $snmp3_auth_user = $module['plugin_user']; $snmp3_auth_pass = io_output_password($module['plugin_pass']); - // Auth method could be MD5 or SHA + // Auth method could be MD5 or SHA. $snmp3_auth_method = $module['plugin_parameter']; - // Privacy method could be DES or AES + // Privacy method could be DES or AES. $snmp3_privacy_method = $module['custom_string_1']; $snmp3_privacy_pass = io_output_password($module['custom_string_2']); - // Security level Could be noAuthNoPriv | authNoPriv | authPriv + // For Remote cmd fields are reused: + // tcp_send, custom_string_1, custom_string_2. + $command_text = $module['tcp_send']; + $command_credential_identifier = $module['custom_string_1']; + $command_os = $module['custom_string_2']; + + // Security level Could be noAuthNoPriv | authNoPriv | authPriv. $snmp3_security_level = $module['custom_string_3']; $ip_target = $module['ip_target']; @@ -265,39 +294,39 @@ if ($id_agent_module) { $id_category = $module['id_category']; $cron_interval = explode(' ', $module['cron_interval']); - if (isset($cron_interval[4])) { + if (isset($cron_interval[4]) === true) { $minute_from = $cron_interval[0]; $minute = explode('-', $minute_from); $minute_from = $minute[0]; - if (isset($minute[1])) { + if (isset($minute[1]) === true) { $minute_to = $minute[1]; } $hour_from = $cron_interval[1]; $h = explode('-', $hour_from); $hour_from = $h[0]; - if (isset($h[1])) { + if (isset($h[1]) === true) { $hour_to = $h[1]; } $mday_from = $cron_interval[2]; $md = explode('-', $mday_from); $mday_from = $md[0]; - if (isset($md[1])) { + if (isset($md[1]) === true) { $mday_to = $md[1]; } $month_from = $cron_interval[3]; $m = explode('-', $month_from); $month_from = $m[0]; - if (isset($m[1])) { + if (isset($m[1]) === true) { $month_to = $m[1]; } $wday_from = $cron_interval[4]; $wd = explode('-', $wday_from); $wday_from = $wd[0]; - if (isset($wd[1])) { + if (isset($wd[1]) === true) { $wday_to = $wd[1]; } } else { @@ -315,14 +344,17 @@ if ($id_agent_module) { } $module_macros = null; - if (isset($module['module_macros'])) { - $module_macros = json_decode(base64_decode($module['module_macros']), true); + if (isset($module['module_macros']) === true) { + $module_macros = json_decode( + base64_decode($module['module_macros']), + true + ); } } else { - if (!isset($moduletype)) { + if (isset($moduletype) === false) { $moduletype = (string) get_parameter('moduletype'); - // Clean up specific network modules fields + // Clean up specific network modules fields. $name = ''; $description = ''; $id_module_group = 1; @@ -374,7 +406,7 @@ if ($id_agent_module) { $str_critical = ''; $ff_event = 0; - // New support for snmp v3 + // New support for snmp v3. $snmp_version = 1; $snmp3_auth_user = ''; $snmp3_auth_pass = ''; @@ -383,6 +415,11 @@ if ($id_agent_module) { $snmp3_privacy_pass = ''; $snmp3_security_level = ''; + // For Remote CMD. + $command_text = ''; + $command_credential_identifier = ''; + $command_os = ''; + $critical_instructions = ''; $warning_instructions = ''; $unknown_instructions = ''; @@ -418,7 +455,9 @@ if ($id_agent_module) { } } -$is_function_policies = enterprise_include_once('include/functions_policies.php'); +$is_function_policies = enterprise_include_once( + 'include/functions_policies.php' +); if ($is_function_policies !== ENTERPRISE_NOT_HOOK) { $relink_policy = get_parameter('relink_policy', 0); @@ -428,19 +467,32 @@ if ($is_function_policies !== ENTERPRISE_NOT_HOOK) { $policy_info = policies_info_module_policy($id_agent_module); $policy_id = $policy_info['id_policy']; - if ($relink_policy && policies_get_policy_queue_status($policy_id) == STATUS_IN_QUEUE_APPLYING) { - ui_print_error_message(__('This policy is applying and cannot be modified')); + if ($relink_policy + && policies_get_policy_queue_status($policy_id) == STATUS_IN_QUEUE_APPLYING + ) { + ui_print_error_message( + __('This policy is applying and cannot be modified') + ); } else { $result = policies_relink_module($id_agent_module); - ui_print_result_message($result, __('Module will be linked in the next application')); + ui_print_result_message( + $result, + __('Module will be linked in the next application') + ); - db_pandora_audit('Agent management', 'Re-link module '.$id_agent_module); + db_pandora_audit( + 'Agent management', + 'Re-link module '.$id_agent_module + ); } } if ($unlink_policy) { $result = policies_unlink_module($id_agent_module); - ui_print_result_message($result, __('Module will be unlinked in the next application')); + ui_print_result_message( + $result, + __('Module will be unlinked in the next application') + ); db_pandora_audit('Agent management', 'Unlink module '.$id_agent_module); } @@ -452,7 +504,7 @@ $remote_conf = false; if ($__code_from !== 'policies') { // Only check in the module editor. - // Check ACL tags + // Check ACL tags. $tag_acl = true; // If edit a existing module. @@ -479,12 +531,12 @@ switch ($moduletype) { $remote_conf = false; if (enterprise_installed()) { enterprise_include_once('include/functions_config_agents.php'); - $remote_conf = enterprise_hook('config_agents_has_remote_configuration', [$id_agente]); + $remote_conf = enterprise_hook( + 'config_agents_has_remote_configuration', + [$id_agente] + ); } - /* - Categories is an array containing the allowed module types - (generic_data, generic_string, etc) from ttipo_modulo (field categoria) */ $categories = [ 0, 1, @@ -503,12 +555,16 @@ switch ($moduletype) { 'config_agents_get_module_from_conf', [ $id_agente, - io_safe_output(modules_get_agentmodule_name($id_agent_module)), + io_safe_output( + modules_get_agentmodule_name($id_agent_module) + ), ] ); } - enterprise_include('godmode/agentes/module_manager_editor_data.php'); + enterprise_include( + 'godmode/agentes/module_manager_editor_data.php' + ); } break; @@ -519,6 +575,7 @@ switch ($moduletype) { 3, 4, 5, + 10, ]; include 'module_manager_editor_common.php'; include 'module_manager_editor_network.php'; @@ -562,9 +619,12 @@ switch ($moduletype) { include 'module_manager_editor_wmi.php'; break; - // WARNING: type 7 is reserved on enterprise + // WARNING: type 7 is reserved on enterprise. default: - if (enterprise_include('godmode/agentes/module_manager_editor.php') === ENTERPRISE_NOT_HOOK) { + if (enterprise_include( + 'godmode/agentes/module_manager_editor.php' + ) === ENTERPRISE_NOT_HOOK + ) { ui_print_error_message(sprintf(__('Invalid module type'))); return; } @@ -580,7 +640,7 @@ if ($config['enterprise_installed'] && $id_agent_module) { echo '<h3 id="message" class="error invisible"></h3>'; -// TODO: Change to the ui_print_error system +// TODO: Change to the ui_print_error system. echo '<form method="post" id="module_form">'; ui_toggle( @@ -602,12 +662,18 @@ ui_toggle( if ($moduletype != 13) { ui_toggle( - html_print_table($table_new_relations, true).html_print_table($table_relations, true), + html_print_table( + $table_new_relations, + true + ).html_print_table( + $table_relations, + true + ), __('Module relations') ); } -// Submit +// Submit. echo '<div class="action-buttons" style="width: '.$table_simple->width.'">'; if ($id_agent_module) { html_print_submit_button( @@ -659,38 +725,84 @@ ui_require_javascript_file('pandora_modules'); <script language="javascript"> /* <![CDATA[ */ var no_name_lang =` -<?php echo ui_print_info_message(['no_close' => true, 'message' => __('No module name provided') ]); ?> +<?php +echo ui_print_info_message( + [ + 'no_close' => true, + 'message' => __('No module name provided'), + ] +); +?> `; var no_target_lang =` -<?php echo ui_print_info_message(['no_close' => true, 'message' => __('No target IP provided') ]); ?> +<?php +echo ui_print_info_message( + [ + 'no_close' => true, + 'message' => __('No target IP provided'), + ] +); +?> `; var no_oid_lang =` -<?php echo ui_print_info_message(['no_close' => true, 'message' => __('No SNMP OID provided') ]); ?> +<?php +echo ui_print_info_message( + [ + 'no_close' => true, + 'message' => __('No SNMP OID provided'), + ] +); +?> `; var no_prediction_module_lang =` -<?php echo ui_print_info_message(['no_close' => true, 'message' => __('No module to predict') ]); ?> +<?php +echo ui_print_info_message( + [ + 'no_close' => true, + 'message' => __('No module to predict'), + ] +); +?> `; var no_plugin_lang =` -<?php echo ui_print_info_message(['no_close' => true, 'message' => __('No plug-in provided') ]); ?> +<?php +echo ui_print_info_message( + [ + 'no_close' => true, + 'message' => __('No plug-in provided'), + ] +); +?> `; var no_execute_test_from =` -<?php echo ui_print_info_message(['no_close' => true, 'message' => __('No server provided') ]); ?> +<?php +echo ui_print_info_message( + [ + 'no_close' => true, + 'message' => __('No server provided'), + ] +); +?> `; $(document).ready (function () { configure_modules_form (); $("#module_form").submit(function() { - if (typeof(check_remote_conf) != 'undefined') { + if (typeof(check_remote_conf) != 'undefined') { if (check_remote_conf) { - //Check the name + //Check the name. name = $("#text-name").val(); remote_config = $("#textarea_configuration_data").val(); - - regexp_name = new RegExp('module_name\\s*' + name.replace(/([^0-9A-Za-z_])/g, "\\$1") +"\n"); - + + regexp_name = new RegExp( + 'module_name\\s*' + name.replace(/([^0-9A-Za-z_])/g, + "\\$1" + ) +"\n" + ); + regexp_plugin = new RegExp('^module_plugin\\s*'); - + if (remote_config == '' || remote_config.match(regexp_name) || remote_config.match(regexp_plugin) || $("#id_module_type").val()==100 || @@ -698,15 +810,15 @@ $(document).ready (function () { return true; } else { - alert("<?php echo __('Error, The field name and name in module_name in data configuration are different.'); ?>"); + alert ("<?php echo __('Error, The field name and name in module_name in data configuration are different.'); ?>"); return false; } } } - + return true; }); - + function checkKeepaliveModule() { // keepalive modules have id = 100 if ($("#id_module_type").val()==100 || @@ -720,11 +832,10 @@ $(document).ready (function () { $("#simple-configuration_data").show(); } } - } - + checkKeepaliveModule(); - + $("#id_module_type").change (function () { checkKeepaliveModule(); }); @@ -741,11 +852,15 @@ function handleFileSelect() { err_msg_2 = "<?php echo __('Couldn`t find the fileinput element.'); ?>"; err_msg_3 = "<?php echo __('This browser doesn`t seem to support the files property of file inputs.'); ?>"; err_msg_4 = "<?php echo __('Please select a file before clicking Load'); ?>"; - - if (!window.File || !window.FileReader || !window.FileList || !window.Blob) { + + if (!window.File || + !window.FileReader || + !window.FileList || + !window.Blob + ) { $('#mssg_error_div').append(err_msg_1); return; - } + } input = document.getElementById('file-file_html_text'); @@ -756,7 +871,7 @@ function handleFileSelect() { $('#mssg_error_div').append(err_msg_3); } else if (!input.files[0]) { - $('#mssg_error_div').append(err_msg_4); + $('#mssg_error_div').append(err_msg_4); } else { file = input.files[0]; @@ -767,7 +882,9 @@ function handleFileSelect() { } function receivedText() { - document.getElementById('textarea_custom_string_1').appendChild(document.createTextNode(fr.result)); -} + document + .getElementById('textarea_custom_string_1') + .appendChild(document.createTextNode(fr.result)); +} /* ]]> */ </script> diff --git a/pandora_console/godmode/agentes/module_manager_editor_common.php b/pandora_console/godmode/agentes/module_manager_editor_common.php index 5a4653fc29..08f930c95f 100644 --- a/pandora_console/godmode/agentes/module_manager_editor_common.php +++ b/pandora_console/godmode/agentes/module_manager_editor_common.php @@ -132,7 +132,7 @@ function add_component_selection($id_network_component_type) require_once 'include/functions_network_components.php'; enterprise_include_once('include/functions_policies.php'); -// If code comes from policies disable export select +// If code comes from policies disable export select. global $__code_from; $disabledBecauseInPolicy = false; @@ -209,8 +209,7 @@ $table_simple->data[0][1] = html_print_input_text_extended( $largeClassDisabledBecauseInPolicy, true ); -// $table_simple->data[0][1] = html_print_input_text ('name', -// io_safe_output($name), '', 45, 100, true, $disabledBecauseInPolicy); + if (!empty($id_agent_module) && isset($id_agente)) { $table_simple->data[0][1] .= ' <b>'.__('ID').'</b> '.$id_agent_module.' '; @@ -237,7 +236,13 @@ if ($policy_link != 0) { } $table_simple->data[0][2] = __('Disabled'); -$table_simple->data[0][2] .= html_print_checkbox('disabled', 1, $disabled, true, $disabled_enable); +$table_simple->data[0][2] .= html_print_checkbox( + 'disabled', + 1, + $disabled, + true, + $disabled_enable +); $table_simple->data[0][3] = __('Module group'); $table_simple->data[0][3] .= html_print_select_from_sql( 'SELECT id_mg, name FROM tmodule_group ORDER BY name', @@ -260,12 +265,18 @@ if ((isset($id_agent_module) && $id_agent_module) || $id_policy_module != 0) { $in_policy = strstr($page, 'policy_modules'); if (!$in_policy) { - // Cannot select the current module to be itself parent - $module_parent_filter = $id_agent_module ? ['tagente_modulo.id_agente_modulo' => "<>$id_agent_module"] : ''; + // Cannot select the current module to be itself parent. + $module_parent_filter = ($id_agent_module) ? ['tagente_modulo.id_agente_modulo' => "<>$id_agent_module"] : ''; $table_simple->data[1][0] = __('Module parent'); - $modules_can_be_parent = agents_get_modules($id_agente, false, $module_parent_filter); - // If the user cannot have access to parent module, only print the name - if ($parent_module_id != 0 && !in_array($parent_module_id, array_keys($modules_can_be_parent))) { + $modules_can_be_parent = agents_get_modules( + $id_agente, + false, + $module_parent_filter + ); + // If the user cannot have access to parent module, only print the name. + if ($parent_module_id != 0 + && !in_array($parent_module_id, array_keys($modules_can_be_parent)) + ) { $table_simple->data[1][1] = db_get_value( 'nombre', 'tagente_modulo', @@ -305,7 +316,11 @@ if (!$edit) { } $table_simple->data[2][1] = '<em>'.modules_get_moduletype_description($id_module_type).' ('.$type_names_hash[$id_module_type].')</em>'; - $table_simple->data[2][1] .= html_print_input_hidden('type_names', base64_encode(io_json_mb_encode($type_names_hash)), true); + $table_simple->data[2][1] .= html_print_input_hidden( + 'type_names', + base64_encode(io_json_mb_encode($type_names_hash)), + true + ); } else { if (isset($id_module_type)) { $idModuleType = $id_module_type; @@ -313,12 +328,13 @@ if (!$edit) { $idModuleType = ''; } - // Removed web analysis and log4x from select + // Removed web analysis and log4x from select. $sql = sprintf( - 'SELECT id_tipo, descripcion, nombre + 'SELECT id_tipo, descripcion, nombre, categoria FROM ttipo_modulo - WHERE categoria IN (%s) AND id_tipo NOT IN (24, 25) - ORDER BY descripcion', + WHERE categoria IN (%s) + AND id_tipo NOT IN (24, 25) + ORDER BY id_tipo ASC', implode(',', $categories) ); @@ -326,7 +342,9 @@ if (!$edit) { $type_names_hash = []; $type_description_hash = []; - if (isset($type_names) && is_array($type_names)) { + if (isset($type_names) === true + && is_array($type_names) === true + ) { foreach ($type_names as $tn) { $type_names_hash[$tn['id_tipo']] = $tn['nombre']; $type_description_hash[$tn['id_tipo']] = $tn['descripcion']; @@ -342,7 +360,7 @@ if (!$edit) { 0, true, false, - true, + false, '', false, false, @@ -350,8 +368,12 @@ if (!$edit) { 100 ); - // Store the relation between id and name of the types on a hidden field - $table_simple->data[2][1] .= html_print_input_hidden('type_names', base64_encode(io_json_mb_encode($type_names_hash)), true); + // Store the relation between id and name of the types on a hidden field. + $table_simple->data[2][1] .= html_print_input_hidden( + 'type_names', + base64_encode(io_json_mb_encode($type_names_hash)), + true + ); } if ($edit_module) { @@ -380,15 +402,32 @@ if ($edit_module) { $help_header = 'webserver_module_tab'; } - $table_simple->data[2][0] = __('Type').' '.ui_print_help_icon($help_header, true); + $table_simple->data[2][0] = __('Type').' '; + $table_simple->data[2][0] .= ui_print_help_icon($help_header, true); } if ($disabledBecauseInPolicy) { - $table_simple->data[2][3] .= html_print_input_hidden('id_module_group', $id_module_group, true); + $table_simple->data[2][3] .= html_print_input_hidden( + 'id_module_group', + $id_module_group, + true + ); } $table_simple->data[3][0] = __('Dynamic Threshold Interval'); -$table_simple->data[3][1] = html_print_extended_select_for_time('dynamic_interval', $dynamic_interval, '', 'None', '0', 10, true, 'width:150px', false, $classdisabledBecauseInPolicy, $disabledBecauseInPolicy); +$table_simple->data[3][1] = html_print_extended_select_for_time( + 'dynamic_interval', + $dynamic_interval, + '', + 'None', + '0', + 10, + true, + 'width:150px', + false, + $classdisabledBecauseInPolicy, + $disabledBecauseInPolicy +); $table_simple->data[3][1] .= '<a onclick=advanced_option_dynamic()>'.html_print_image('images/cog.png', true, ['title' => __('Advanced options Dynamic Threshold')]).'</a>'; if ($in_policy) { $table_simple->cellclass[2][2] = 'hide_dinamic'; diff --git a/pandora_console/godmode/agentes/module_manager_editor_network.php b/pandora_console/godmode/agentes/module_manager_editor_network.php index c0a6181a8e..76bbf50c47 100644 --- a/pandora_console/godmode/agentes/module_manager_editor_network.php +++ b/pandora_console/godmode/agentes/module_manager_editor_network.php @@ -1,30 +1,50 @@ <?php +/** + * Extension to manage a list of gateways and the node address where they should + * point to. + * + * @category Extensions + * @package Pandora FMS + * @subpackage Community + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * Copyright (c) 2005-2019 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 for 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. + * ============================================================================ + */ -// Pandora FMS - http://pandorafms.com -// ================================================== -// Copyright (c) 2005-2009 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 for 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; require_once $config['homedir'].'/include/functions_snmp_browser.php'; -$snmp_browser_path = is_metaconsole() ? '../../' : ''; +$snmp_browser_path = (is_metaconsole()) ? '../../' : ''; $snmp_browser_path .= 'include/javascript/pandora_snmp_browser.js'; -echo "<script type='text/javascript' src='$snmp_browser_path'></script>"; -// This line does not run with the dinamic loader editor in policies. -// ui_require_javascript_file ('pandora_snmp_browser'); -// WARNING REPEAT input hidden errors in console -// Save some variables for javascript functions -// html_print_input_hidden ('ajax_url', ui_get_full_url("ajax.php"), false); -// html_print_input_hidden ('search_matches_translation', __("Search matches"), false); -// Define a custom action to save the OID selected in the SNMP browser to the form -html_print_input_hidden('custom_action', urlencode(base64_encode(' <a href="javascript:setOID()"><img src="'.ui_get_full_url('images').'/input_filter.disabled.png" title="'.__('Use this OID').'" style="vertical-align: middle;"></img></a>')), false); +echo "<script type='text/javascript' src='".$snmp_browser_path."'></script>"; + +// Define a custom action to save the OID selected +// in the SNMP browser to the form. +html_print_input_hidden( + 'custom_action', + urlencode( + base64_encode( + ' <a href="javascript:setOID()"><img src="'.ui_get_full_url('images').'/input_filter.disabled.png" title="'.__('Use this OID').'" style="vertical-align: middle;"></img></a>' + ) + ), + false +); $isFunctionPolicies = enterprise_include_once('include/functions_policies.php'); @@ -50,17 +70,15 @@ if (strstr($page, 'policy_modules') === false) { define('ID_NETWORK_COMPONENT_TYPE', 2); if (empty($update_module_id)) { - // Function in module_manager_editor_common.php + // Function in module_manager_editor_common.php. add_component_selection(ID_NETWORK_COMPONENT_TYPE); -} else { - // TODO: Print network component if available } $extra_title = __('Network server module'); $data = []; $data[0] = __('Target IP'); -// show agent_for defect; +// Show agent_for defect. if ($page == 'enterprise/godmode/policies/policy_modules') { if ($ip_target != 'auto' && $ip_target != '') { $custom_ip_target = $ip_target; @@ -100,7 +118,7 @@ if ($page == 'enterprise/godmode/policies/policy_modules') { $data[1] = html_print_input_text('ip_target', $ip_target, '', 15, 60, true); } -// In ICMP modules, port is not configurable +// In ICMP modules, port is not configurable. if ($id_module_type >= 6 && $id_module_type <= 7) { $data[2] = ''; $data[3] = ''; @@ -148,7 +166,15 @@ if (!$adopt) { $classdisabledBecauseInPolicy ); } else { - $data[1] = html_print_input_text('snmp_community', $snmp_community, '', 15, 60, true, false); + $data[1] = html_print_input_text( + 'snmp_community', + $snmp_community, + '', + 15, + 60, + true, + false + ); } $data[2] = _('SNMP version'); @@ -213,8 +239,27 @@ $data[1] .= html_print_input_text( $classdisabledBecauseInPolicy ); $data[1] .= '<span class="invisible" id="oid">'; -$data[1] .= html_print_select([], 'select_snmp_oid', $snmp_oid, '', '', 0, true, false, false, '', $disabledBecauseInPolicy); -$data[1] .= html_print_image('images/edit.png', true, ['class' => 'invisible clickable', 'id' => 'edit_oid']); +$data[1] .= html_print_select( + [], + 'select_snmp_oid', + $snmp_oid, + '', + '', + 0, + true, + false, + false, + '', + $disabledBecauseInPolicy +); +$data[1] .= html_print_image( + 'images/edit.png', + true, + [ + 'class' => 'invisible clickable', + 'id' => 'edit_oid', + ] +); $data[1] .= '</span>'; $data[1] .= '</span><span class="right" style="width: 50%; text-align: right">'; $data[1] .= html_print_button( @@ -231,42 +276,50 @@ $table_simple->colspan['snmp_2'][1] = 3; push_table_simple($data, 'snmp_2'); -// Advanced stuff +// Advanced stuff. $data = []; $data[0] = __('TCP send'); -$data[1] = html_print_textarea('tcp_send', 2, 65, $tcp_send, $disabledTextBecauseInPolicy, true, $largeclassdisabledBecauseInPolicy); +$data[1] = html_print_textarea( + 'tcp_send', + 2, + 65, + $tcp_send, + $disabledTextBecauseInPolicy, + true, + $largeclassdisabledBecauseInPolicy +); $table_simple->colspan['tcp_send'][1] = 3; push_table_simple($data, 'tcp_send'); $data[0] = __('TCP receive'); -$data[1] = html_print_textarea('tcp_rcv', 2, 65, $tcp_rcv, $disabledTextBecauseInPolicy, true, $largeclassdisabledBecauseInPolicy); +$data[1] = html_print_textarea( + 'tcp_rcv', + 2, + 65, + $tcp_rcv, + $disabledTextBecauseInPolicy, + true, + $largeclassdisabledBecauseInPolicy +); $table_simple->colspan['tcp_receive'][1] = 3; push_table_simple($data, 'tcp_receive'); if ($id_module_type < 8 || $id_module_type > 11) { - // NOT TCP + // NOT TCP. $table_simple->rowstyle['tcp_send'] = 'display: none;'; $table_simple->rowstyle['tcp_receive'] = 'display: none;'; } if ($id_module_type < 15 || $id_module_type > 18) { - // NOT SNMP + // NOT SNMP. $table_simple->rowstyle['snmp_1'] = 'display: none'; $table_simple->rowstyle['snmp_2'] = 'display: none'; } -// For a policy -if (!isset($id_agent_module)) { - $snmp3_auth_user = ''; - $snmp3_auth_pass = ''; - $snmp_version = 1; - $snmp3_privacy_method = ''; - $snmp3_privacy_pass = ''; - $snmp3_auth_method = ''; - $snmp3_security_level = ''; -} else if ($id_agent_module === false) { +// For a policy. +if (isset($id_agent_module) === false || $id_agent_module === false) { $snmp3_auth_user = ''; $snmp3_auth_pass = ''; $snmp_version = 1; @@ -274,6 +327,9 @@ if (!isset($id_agent_module)) { $snmp3_privacy_pass = ''; $snmp3_auth_method = ''; $snmp3_security_level = ''; + $command_text = ''; + $command_os = 'inherited'; + $command_credential_identifier = ''; } $data = []; @@ -333,7 +389,22 @@ push_table_simple($data, 'field_snmpv3_row2'); $data = []; $data[0] = __('Auth method'); -$data[1] = html_print_select(['MD5' => __('MD5'), 'SHA' => __('SHA')], 'snmp3_auth_method', $snmp3_auth_method, '', '', '', true, false, false, '', $disabledBecauseInPolicy); +$data[1] = html_print_select( + [ + 'MD5' => __('MD5'), + 'SHA' => __('SHA'), + ], + 'snmp3_auth_method', + $snmp3_auth_method, + '', + '', + '', + true, + false, + false, + '', + $disabledBecauseInPolicy +); $data[2] = __('Security level'); $data[3] = html_print_select( [ @@ -358,13 +429,84 @@ if ($snmp_version != 3) { push_table_simple($data, 'field_snmpv3_row3'); +$data = []; +$data[0] = __('Command'); +$data[1] = html_print_input_text_extended( + 'command_text', + $command_text, + 'command_text', + '', + 100, + 10000, + $disabledBecauseInPolicy, + '', + $largeClassDisabledBecauseInPolicy, + true +); +$table_simple->colspan['row-cmd-row-1'][1] = 3; +push_table_simple($data, 'row-cmd-row-1'); + +require_once $config['homedir'].'/include/class/CredentialStore.class.php'; +$array_credential_identifier = CredentialStore::getKeys(); + +$data[0] = __('Credential identifier'); +$data[1] = html_print_select( + $array_credential_identifier, + 'command_credential_identifier', + $command_credential_identifier, + '', + __('None'), + '', + true, + false, + false, + '', + $disabledBecauseInPolicy +); + +$array_os = [ + 'inherited' => __('Inherited'), + 'linux' => __('Linux'), + 'windows' => __('Windows'), +]; + +$data[2] = __('Target OS'); +$data[3] = html_print_select( + $array_os, + 'command_os', + $command_os, + '', + '', + '', + true, + false, + false, + '', + $disabledBecauseInPolicy +); + +push_table_simple($data, 'row-cmd-row-2'); + +if ($id_module_type !== 34 + && $id_module_type !== 35 + && $id_module_type !== 36 + && $id_module_type !== 37 +) { + $table_simple->rowstyle['row-cmd-row-1'] = 'display: none;'; + $table_simple->rowstyle['row-cmd-row-2'] = 'display: none;'; +} + snmp_browser_print_container(false, '100%', '60%', 'none'); ?> <script type="text/javascript"> $(document).ready (function () { $("#id_module_type").change(function (){ - if ((this.value == "17") || (this.value == "18") || (this.value == "16") || (this.value == "15")) { + if ((this.value == "17") || + (this.value == "18") || + (this.value == "16") || + (this.value == "15") + ) { if ($("#snmp_version").val() == "3"){ $("#simple-field_snmpv3_row1").attr("style", ""); $("#simple-field_snmpv3_row2").attr("style", ""); @@ -379,6 +521,18 @@ $(document).ready (function () { $("input[name=active_snmp_v3]").val(0); $("input[name=snmp_community]").removeAttr('disabled'); } + + if((this.value == "34") || + (this.value == "35") || + (this.value == "36") || + (this.value == "37") + ) { + $("#simple-row-cmd-row-1").attr("style", ""); + $("#simple-row-cmd-row-2").attr("style", ""); + } else { + $("#simple-row-cmd-row-1").css("display", "none"); + $("#simple-row-cmd-row-2").css("display", "none"); + } }); $("#snmp_version").change(function () { @@ -397,27 +551,28 @@ $(document).ready (function () { $("input[name=snmp_community]").removeAttr('disabled'); } }); - + $("#select_snmp_oid").click ( function () { $(this).css ("width", "auto"); $(this).css ("min-width", "180px"); }); - + $("#select_snmp_oid").blur (function () { $(this).css ("width", "180px"); }); - + $("#id_module_type").click ( function () { $(this).css ("width", "auto"); $(this).css ("min-width", "180px"); - }); - + } + ); + $("#id_module_type").blur (function () { $(this).css ("width", "180px"); }); - + // Keep elements in the form and the SNMP browser synced $('#text-ip_target').keyup(function() { $('#text-target_ip').val($(this).val()); @@ -433,13 +588,12 @@ $(document).ready (function () { }); $('#snmp_version').change(function() { $('#snmp_browser_version').val($(this).val()); - // Display or collapse the SNMP browser's v3 options checkSNMPVersion (); }); $('#snmp_browser_version').change(function() { $('#snmp_version').val($(this).val()); - + // Display or collapse the SNMP v3 options in the main window if ($(this).val() == "3") { $("#simple-field_snmpv3_row1").attr("style", ""); @@ -498,10 +652,10 @@ $(document).ready (function () { } $('#ip_target').change(function() { if($(this).val() == 'custom') { - $("#text-custom_ip_target").show(); + $("#text-custom_ip_target").show(); } else{ - $("#text-custom_ip_target").hide(); + $("#text-custom_ip_target").hide(); } }); }); diff --git a/pandora_console/include/class/CredentialStore.class.php b/pandora_console/include/class/CredentialStore.class.php index 188950d92a..b453318c4b 100644 --- a/pandora_console/include/class/CredentialStore.class.php +++ b/pandora_console/include/class/CredentialStore.class.php @@ -403,6 +403,8 @@ class CredentialStore extends Wizard { global $config; + $filter = []; + if ($product !== false) { $filter['product'] = $product; } diff --git a/pandora_console/operation/agentes/status_monitor.php b/pandora_console/operation/agentes/status_monitor.php index 0f7257663a..f9a313062b 100644 --- a/pandora_console/operation/agentes/status_monitor.php +++ b/pandora_console/operation/agentes/status_monitor.php @@ -1716,10 +1716,9 @@ if (!empty($result)) { } } -// End Build List Result -// +// End Build List Result. echo "<div id='monitor_details_window'></div>"; -// strict user hidden +// Strict user hidden. echo '<div id="strict_hidden" style="display:none;">'; html_print_input_text('strict_user_hidden', $strict_user); echo '</div>'; @@ -1756,8 +1755,8 @@ $('#moduletype').click(function() { ); return false; - }); - +}); + $('#ag_group').change (function () { strict_user = $('#text-strict_user_hidden').val(); diff --git a/pandora_console/pandoradb_data.sql b/pandora_console/pandoradb_data.sql index 686f4aa487..ee8d1a5041 100644 --- a/pandora_console/pandoradb_data.sql +++ b/pandora_console/pandoradb_data.sql @@ -268,7 +268,7 @@ INSERT INTO `torigen` VALUES -- -- Identifiers 30 and 31 are reserved for Enterprise data types -INSERT INTO `ttipo_modulo` VALUES +INSERT INTO `ttipo_modulo` VALUES (1,'generic_data',0,'Generic numeric','mod_data.png'), (2,'generic_proc',1,'Generic boolean','mod_proc.png'), (3,'generic_data_string',2,'Generic string','mod_string.png'), @@ -283,15 +283,19 @@ INSERT INTO `ttipo_modulo` VALUES (15,'remote_snmp',3,'Remote SNMP network agent, numeric data','mod_snmp_data.png'), (16,'remote_snmp_inc',3,'Remote SNMP network agent, incremental data','mod_snmp_inc.png'), (17,'remote_snmp_string',5,'Remote SNMP network agent, alphanumeric data','mod_snmp_string.png'), -(18,'remote_snmp_proc',4,'Remote SNMP network agent, boolean data','mod_snmp_proc.png'), -(21,'async_proc', 7, 'Asyncronous proc data', 'mod_async_proc.png'), -(22,'async_data', 6, 'Asyncronous numeric data', 'mod_async_data.png'), +(18,'remote_snmp_proc',4,'Remote SNMP network agent, boolean data','mod_snmp_proc.png'), +(21,'async_proc', 7, 'Asyncronous proc data', 'mod_async_proc.png'), +(22,'async_data', 6, 'Asyncronous numeric data', 'mod_async_data.png'), (23,'async_string', 8, 'Asyncronous string data', 'mod_async_string.png'), (25,'web_analysis', 8, 'Web analysis data', 'module-wux.png'), (30,'web_data',9,'Remote HTTP module to check latency','mod_web_data.png'), (31,'web_proc',9,'Remote HTTP module to check server response','mod_web_proc.png'), (32,'web_content_data',9,'Remote HTTP module to retrieve numeric data','mod_web_data.png'), (33,'web_content_string',9,'Remote HTTP module to retrieve string data','mod_web_data.png'), +(34,'remote_cmd', 10, 'Remote CMD command, numeric data', 'mod_remote_cmd.png'), +(35,'remote_cmd_proc', 10, 'Remote CMD command, boolean data', 'mod_remote_cmd_proc.png'), +(36,'remote_cmd_string', 10, 'Remote CMD command, alphanumeric data', 'mod_remote_cmd_string.png'), +(37,'remote_cmd_inc', 10, 'Remote CMD command, incremental data', 'mod_remote_cmd_inc.png'), (100,'keep_alive',-1,'KeepAlive','mod_keepalive.png'); -- From 40076b0a55dd5cb92bc01128c9e7073567a1f65e Mon Sep 17 00:00:00 2001 From: Daniel Barbero <daniel.barbero@artica.es> Date: Wed, 9 Oct 2019 17:33:06 +0200 Subject: [PATCH 02/16] remove debug --- pandora_console/godmode/agentes/configurar_agente.php | 1 - 1 file changed, 1 deletion(-) diff --git a/pandora_console/godmode/agentes/configurar_agente.php b/pandora_console/godmode/agentes/configurar_agente.php index f6cf27a69e..664b173748 100644 --- a/pandora_console/godmode/agentes/configurar_agente.php +++ b/pandora_console/godmode/agentes/configurar_agente.php @@ -1350,7 +1350,6 @@ if ($update_module || $create_module) { ); $custom_string_3 = (string) get_parameter('snmp3_security_level'); } else if ($id_module_type >= 34 && $id_module_type <= 37) { - hd($_POST); $tcp_send = (string) get_parameter('command_text'); $custom_string_1 = (string) get_parameter( 'command_credential_identifier' From 9cb2a0e1a19ba53abd103c36f6ba35ac30654861 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Wed, 9 Oct 2019 19:13:11 +0200 Subject: [PATCH 03/16] NetworkServer enterprise improvement --- pandora_server/lib/PandoraFMS/Core.pm | 61 +++++++++++++++++++ .../lib/PandoraFMS/NetworkServer.pm | 29 +++++++-- 2 files changed, 86 insertions(+), 4 deletions(-) diff --git a/pandora_server/lib/PandoraFMS/Core.pm b/pandora_server/lib/PandoraFMS/Core.pm index ef8a9c18bf..a528cfa4d8 100644 --- a/pandora_server/lib/PandoraFMS/Core.pm +++ b/pandora_server/lib/PandoraFMS/Core.pm @@ -202,6 +202,7 @@ our @EXPORT = qw( pandora_get_module_phone_tags pandora_get_module_email_tags pandora_get_os + pandora_get_os_by_id pandora_input_password pandora_is_master pandora_mark_agent_for_alert_update @@ -5722,6 +5723,66 @@ sub pandora_get_os ($$) { return 10; } +######################################################################## +# SUB pandora_get_os_by_id (integer) +# Returns a chain with the name associated to target id_os. +######################################################################## +sub pandora_get_os_by_id ($$) { + my ($dbh, $os_id) = @_; + + if (! defined($os_id) || !is_numeric($os_id)) { + # Other OS + return 'Other'; + } + + if ($os_id eq 9) { + return 'Windows'; + } + if ($os_id eq 7 ) { + return 'Cisco'; + } + if ($os_id eq 2 ) { + return 'Solaris'; + } + if ($os_id eq 3 ) { + return 'AIX'; + } + if ($os_id eq 5) { + return 'HP-UX'; + } + if ($os_id eq 8 ) { + return 'Apple'; + } + if ($os_id eq 1 ) { + return 'Linux'; + } + if ($os_id eq 1) { + return 'Enterasys'; + } + if ($os_id eq 3) { + return 'Octopods'; + } + if ($os_id eq 4) { + return 'embedded'; + } + if ($os_id eq 5) { + return 'android'; + } + if ($os_id eq 4 ) { + return 'BSD'; + } + + # Search for a custom OS + my $os_name = get_db_value ($dbh, 'SELECT name FROM tconfig_os WHERE id_os = ?', $os_id); + if (defined ($os_name)) { + return $os_name; + } + + # Other OS + return 'Other'; +} + + ######################################################################## # Load module macros (a base 64 encoded JSON document) into the macro # hash. diff --git a/pandora_server/lib/PandoraFMS/NetworkServer.pm b/pandora_server/lib/PandoraFMS/NetworkServer.pm index 72ff78d975..a6944c2fa6 100644 --- a/pandora_server/lib/PandoraFMS/NetworkServer.pm +++ b/pandora_server/lib/PandoraFMS/NetworkServer.pm @@ -102,8 +102,8 @@ sub data_producer ($) { WHERE server_name = ? AND tagente_modulo.id_agente = tagente.id_agente AND tagente.disabled = 0 - AND tagente_modulo.id_tipo_modulo > 5 - AND tagente_modulo.id_tipo_modulo < 19 ' + AND ((tagente_modulo.id_tipo_modulo > 5 AND tagente_modulo.id_tipo_modulo < 19 ) + OR (tagente_modulo.id_tipo_modulo > 33 AND tagente_modulo.id_tipo_modulo < 38 )) ' . (defined ($network_filter) ? $network_filter : ' ') . 'AND tagente_modulo.disabled = 0 AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo @@ -116,8 +116,8 @@ sub data_producer ($) { AND tagente_modulo.id_agente = tagente.id_agente AND tagente.disabled = 0 AND tagente_modulo.disabled = 0 - AND tagente_modulo.id_tipo_modulo > 5 - AND tagente_modulo.id_tipo_modulo < 19 ' + AND ((tagente_modulo.id_tipo_modulo > 5 AND tagente_modulo.id_tipo_modulo < 19 ) + OR (tagente_modulo.id_tipo_modulo > 33 AND tagente_modulo.id_tipo_modulo < 38 )) ' . (defined ($network_filter) ? $network_filter : ' ') . 'AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo AND (tagente_modulo.flag = 1 OR ((tagente_estado.last_execution_try + tagente_estado.current_interval) < UNIX_TIMESTAMP())) @@ -468,6 +468,11 @@ sub exec_network_module ($$$$) { my $tcp_rcv = $module->{'tcp_rcv'}; my $timeout = $module->{'max_timeout'}; my $retries = $module->{'max_retries'}; + my $target_os = $module->{'custom_integer_1'}; + + if (!defined($target_os) || "$target_os" eq '0') { + $target_os = $agent_row->{'id_os'}; + } # Use the agent address by default if (! defined($ip_target) || $ip_target eq '' || $ip_target eq 'auto') { @@ -545,6 +550,22 @@ sub exec_network_module ($$$$) { $module_result = 1; } } + + # ------------------------------------------------------- + # CMD Module + # ------------------------------------------------------- + elsif (($id_tipo_modulo == 34) + || ($id_tipo_modulo == 35) + || ($id_tipo_modulo == 36) + || ($id_tipo_modulo == 37)) { # CMD Module + $module_data = enterprise_hook('remote_execution_module',[$pa_config, $dbh, $module, $target_os, $ip_target]); + if (!defined($module_data) || "$module_data" eq "") { + $module_result = 1; + } else { + # Success. + $module_result = 0; + } + } } # Write data section From 6bf377269061600c2a360f26c4c6cdc40e268391 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Wed, 9 Oct 2019 19:20:58 +0200 Subject: [PATCH 04/16] remote cmd => remote execution --- pandora_console/extras/mr/33.sql | 8 ++++---- .../pandoradb_migrate_6.0_to_7.0.mysql.sql | 8 ++++---- pandora_console/images/mod_remote_cmd.png | Bin 0 -> 1509 bytes pandora_console/images/mod_remote_cmd_inc.png | Bin 0 -> 1430 bytes pandora_console/images/mod_remote_cmd_proc.png | Bin 0 -> 1486 bytes pandora_console/images/mod_remote_cmd_string.png | Bin 0 -> 1457 bytes pandora_console/pandoradb_data.sql | 8 ++++---- 7 files changed, 12 insertions(+), 12 deletions(-) create mode 100644 pandora_console/images/mod_remote_cmd.png create mode 100644 pandora_console/images/mod_remote_cmd_inc.png create mode 100644 pandora_console/images/mod_remote_cmd_proc.png create mode 100644 pandora_console/images/mod_remote_cmd_string.png diff --git a/pandora_console/extras/mr/33.sql b/pandora_console/extras/mr/33.sql index 885132f68f..eeca8ed5d7 100644 --- a/pandora_console/extras/mr/33.sql +++ b/pandora_console/extras/mr/33.sql @@ -1,9 +1,9 @@ START TRANSACTION; INSERT INTO `ttipo_modulo` VALUES -(34,'remote_cmd', 10, 'Remote CMD command, numeric data', 'mod_remote_cmd.png'), -(35,'remote_cmd_proc', 10, 'Remote CMD command, boolean data', 'mod_remote_cmd_proc.png'), -(36,'remote_cmd_string', 10, 'Remote CMD command, alphanumeric data', 'mod_remote_cmd_string.png'), -(37,'remote_cmd_inc', 10, 'Remote CMD command, incremental data', 'mod_remote_cmd_inc.png'); +(34,'remote_cmd', 10, 'Remote execution, numeric data', 'mod_remote_cmd.png'), +(35,'remote_cmd_proc', 10, 'Remote execution, boolean data', 'mod_remote_cmd_proc.png'), +(36,'remote_cmd_string', 10, 'Remote execution, alphanumeric data', 'mod_remote_cmd_string.png'), +(37,'remote_cmd_inc', 10, 'Remote execution, incremental data', 'mod_remote_cmd_inc.png'); COMMIT; \ No newline at end of file diff --git a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql index 30cff5136a..0b309cfd84 100644 --- a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql +++ b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql @@ -1656,10 +1656,10 @@ INSERT INTO tmodule VALUES (8, 'Wux module'); INSERT INTO `ttipo_modulo` VALUES (25,'web_analysis', 8, 'Web analysis data', 'module-wux.png'), -(34,'remote_cmd', 10, 'Remote CMD command, numeric data', 'mod_remote_cmd.png'), -(35,'remote_cmd_proc', 10, 'Remote CMD command, boolean data', 'mod_remote_cmd_proc.png'), -(36,'remote_cmd_string', 10, 'Remote CMD command, alphanumeric data', 'mod_remote_cmd_string.png'), -(37,'remote_cmd_inc', 10, 'Remote CMD command, incremental data', 'mod_remote_cmd_inc.png'); +(34,'remote_cmd', 10, 'Remote execution, numeric data', 'mod_remote_cmd.png'), +(35,'remote_cmd_proc', 10, 'Remote execution, boolean data', 'mod_remote_cmd_proc.png'), +(36,'remote_cmd_string', 10, 'Remote execution, alphanumeric data', 'mod_remote_cmd_string.png'), +(37,'remote_cmd_inc', 10, 'Remote execution, incremental data', 'mod_remote_cmd_inc.png'); -- --------------------------------------------------------------------- -- Table `tdashboard` diff --git a/pandora_console/images/mod_remote_cmd.png b/pandora_console/images/mod_remote_cmd.png new file mode 100644 index 0000000000000000000000000000000000000000..3ac473209e0a936a97e4cc7e9bd94cae68ddf339 GIT binary patch literal 1509 zcmeAS@N?(olHy`uVBq!ia0vp^MnEjU!3HElqIG(Jlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6H#24<Dakcg59UmvUF{9L_6kQ%*;+ybC(1_m4Zih{)C?9>v4 zq}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7`WhYyvDB0U7*i={n4aiL` zNmQuF&B-gas<2f8n`;GRgM{^!6u?SKvTc<hj*9RNP;kyKN>wn`GuBNuFf>#!Gt)CP zF*P$Y)KM@pFf`IP03tJ8LlY}gGb<x=1t?Gg+E$d3W)<Y(2DJ;wvsKC{DJihh*Do(G z*DE*H%P&gTH?*|01esxEqzhD`TU?n}l31aeSF8*(!6mggxhS)sBr`ux0c2ugQhsTP ztrF0s5HI8wz>Uo-h6WQb!1OB;3-k^33_xCjDfIQluQWFouDZA+C>7yetOgf{R2HP_ z2c;J0mlh=hBQ8xDWL1Hcb5UwyNq$jCetr%t6azByOY(~|@(UE4gUu8)d=ry1^FRWc zU>&}`R-SpqC5d^-sh%#jN<cI8GBZ=GoSaPz%`99kT#Xzp3=Lf^oy;B0oSdDFU7Rh= z%*~BWV0vBhlS^|`^GaZPQxJMBaq0ynhTH<6%`T}$nPsUdZbkXI3SduLW#V>=8BX({ zdQ)(_#T=(zeV}9XK~ako)i5Do`T;TF2^YwLC;iksV0teCChQKkrC|&VOyQm`jv*Dd z?u702jt&&5uWXy7bMU%OnxOE1#?F&ZgoI_ATPGa#6^K=4<t@2Tl0ALbEWXmhi;gWk zO|5A<Pns=KdeRJ?oo-EHQEGYewfuq2&e~eL`F2ZH#reM9DL!xe{m;4MwdWVET4lm_ zICGmMU%Rqc&L1riuBr9BM+)QJk~ZG>eKF(9xyK(*q_IV<on|G$(^O?}Frk3&vStQb z2>aT`eT|=<7F7!V*8DKvp}NLp_U9$sbAN44Ir6l~H~GYl3s)TUrWcz?^?Ek1jb&nJ z|HI>Txii7{PuD?7`{ui;5B%AMdfobW-F>I^@oZYKmRNTi``)<qQ#@48<OD~)6J|CL zwU8H7`p0H+{LkG5Iu7d(MQ*vSyh%s@$m7D3&p*$UJCnAV|K>V_89Z}@Wvw4~Ja5&> zd}@)*a^cj3_znNJX>2O!oAsev;e7Ft^E~HbiW#=e`+9Yg@rpS+p8c<gDfzr`!}N{C z^L2Vp7ToIDb>(G=8{7T)%s$dhFSO@9PdzdDLBFHw8s~`X2iT8XV_xcLU-4I}%0Avk zx#FVH-njR=dd6Ajbe@DbDP9noGjF-%m&Q5EO~0id%%5cRvZ+ITgX)D&J&FGF9=q>u zE0GX?9~p32Nh(2odgWTnHS(Tpg{-#{AM~>~t^aa7YwIrGKLr*wSKogZ-5`8rLB*{0 zyzRUFtGgE6iQt*0#GtrOgTd#uSJ1;Xx|~L*VqTuyuaT1?dpX^)#8ci_Vx9em{%_&^ zAAI&sOl!|(n!v23dqR`h^OgLzV#k>eCv9eZV!ce$v4q>I{o$4W-?A)^JvINgoq?HQ Xs_0$Ob*0;uf(l+wS3j3^P6<r_KZiEp literal 0 HcmV?d00001 diff --git a/pandora_console/images/mod_remote_cmd_inc.png b/pandora_console/images/mod_remote_cmd_inc.png new file mode 100644 index 0000000000000000000000000000000000000000..2c66bd1cca6cd8a749e0ea6f8d9cf0541e346e1a GIT binary patch literal 1430 zcmeAS@N?(olHy`uVBq!ia0vp^MnEjU!3HElqIG(Jlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6H#24<Dakcg59UmvUF{9L_6kQ%*;+ybC(1_m4Zih{)C?9>v4 zq}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7`WhYyvDB0U7*i={n4aiL` zNmQuF&B-gas<2f8n`;GRgM{^!6u?SKvTc<hj*9RNP;kyKN>wn`GuBNuFf>#!Gt)CP zF*P$Y)KM@pFf`IP03tJ8LlY}gGb<x=1t?Gg+E$d3W)<Y(2DJ;wvsKC{DJihh*Do(G z*DE*H%P&gTH?*|01esxEqzhD`TU?n}l31aeSF8*(!6mggxhS)sBr`ux0c2ugQhsTP ztrF0s5HI8wz>Uo-h6WQb!1OB;3-k^33_xCjDfIQluQWFouDZA+C>7yetOgf{R2HP_ z2c;J0mlh=hBQ8xDWL1Hcb5UwyNq$jCetr%t6azByOY(~|@(UE4gUu8)d=ry1^FRWc zU>&}`R-SpqC5d^-sh%#jN<cI8GBZ=GoSaPz%`9A<U5y+q3=Lf^oy;B0oSdDFU7Rh= z%*~BWV0vBhlS^|`^GaZPQxJMxaOwpmhTH<6%`T}$nPsUdZbkXI3SduLW#V>=BTn<6 zdQ)(_#R;cgeV}9XK~ako)i5Do`T;TF2^YwLC;iksV0teCCTzxx4TcO1OdOsrjv*Dd z?u704b_x`!+ow`8QBH4X%QJh0Wx?GqbyzQ55_8$Cr^}l)TX$=kv+h|%3l>&OwplkG z%-H#4LC3=8#uc^f=elR_nP=bq>A-Qz_w%aX@4RpO{N8V#zjg7m*bQF@eyrNNPw-jA z>9ozQ_TDN295P?4_BwYTReJ3ku=?t+xqioOJ&wIC+r3~NqjdmVS!1=r<nzzXAMhWx zV@$Gfxhnap+wN&$hs6Hk89vKIJ9-*+2`{;v>AW;3@=}3oCxh6NgrF>W`F$tvU6FX4 zuqjZ@&Qfsy{ram}Tgy(Y3tJteH~q3q#@48%0UArp&8I%qlvD^l@Tm4sUp}MWHv861 z4Rx&N7MX|&Mozold~iX^=9?w#YLibU7K_jDk?9r|pY}-hJV#{E>5J=J3q&T?fB55? zk-pKwszuzXx~<%1so}F$a|NSPw=~rdznIVQdea$eHGe$1d}Q)cOTouecI%nWK07Z? zevj+wfb$KLw;nOudY?(|8rN^BC&x?g{V-M9aq-a~g}!2o_YKAh2k-xO;4H34n>Vp) zuid2tmVRFW<AahKoVmR-r;EkCe4Mng!l7*Y?bw{{x2Jq!wOX)a*6y^;JALh31LM?t zJXv16yC>$M5!04EB|~rRC7u6Uzb!b|x=g+5j6lkh`|Q2Ok5Z;r#o6qs2$fUU+??nl sw_sZ9vhoLPjfeifdjH-2WIF>h!=H*h^CYvLcz{YuPgg&ebxsLQ05&@h1^@s6 literal 0 HcmV?d00001 diff --git a/pandora_console/images/mod_remote_cmd_proc.png b/pandora_console/images/mod_remote_cmd_proc.png new file mode 100644 index 0000000000000000000000000000000000000000..fb09f29e99b70af2363fe735c4bd76f83a0cab4f GIT binary patch literal 1486 zcmeAS@N?(olHy`uVBq!ia0vp^MnEjU!3HElqIG(Jlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6H#24<Dakcg59UmvUF{9L_6kQ%*;+ybC(1_m4Zih{)C?9>v4 zq}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7`WhYyvDB0U7*i={n4aiL` zNmQuF&B-gas<2f8n`;GRgM{^!6u?SKvTc<hj*9RNP;kyKN>wn`GuBNuFf>#!Gt)CP zF*P$Y)KM@pFf`IP03tJ8LlY}gGb<x=1t?Gg+E$d3W)<Y(2DJ;wvsKC{DJihh*Do(G z*DE*H%P&gTH?*|01esxEqzhD`TU?n}l31aeSF8*(!6mggxhS)sBr`ux0c2ugQhsTP ztrF0s5HI8wz>Uo-h6WQb!1OB;3-k^33_xCjDfIQluQWFouDZA+C>7yetOgf{R2HP_ z2c;J0mlh=hBQ8xDWL1Hcb5UwyNq$jCetr%t6azByOY(~|@(UE4gUu8)d=ry1^FRWc zU>&}`R-SpqC5d^-sh%#jN<cI8GBZ=GoSaPz%`DsuT#Xzp3=Lf^oy;B0oSdDFU7Rh= z%*~BWV0vBhlS^|`^GaZPQ-FF+OpRQPjSWD0EwSnaC5GGrpv^9+MVV!(DQ-pixe8!U zTV>*Oi>oVcw?Oo!U~vn?AFggV_38s1qYsK&q^O1o0n-nN2~W5{4m|0n<^j`t5insp z9duP;U|@3aba4!+xOFGYFk2~5Anv=<1-HD7oxUAESr2w!HFdk}#bW5X%i)6ALj?}a zo|WfJJVj3|^O$9l>2%;xSM%j}4uaCRt!HlzIO5F8yy%{}f%LOOX|X1aD$Iw^oU1m@ z-#4>z_iKs%<EN?>+C?WgC<ts3e4M{AV$Gf?g@*+{GEAgocihdps^zfxrVKwD^L|N* z{rC4X6>`ThT|aR9f&7D-oiTBTf9ZV@{-C&9!pOgR<MK4|6L*5S{gxLCE_q~dnqg<m zxxn?;?d>+sQDg8paeP5ft)tE4eTk1ACvV7Pvy+_=piy%7ZP|8@d=n|Jl_5r@Un*?8 zbi`(h%y;`dMWkV+!p{XODn#}i`o$b5zG3~L*pOvxi&njQ?xC`%VsD(cd+hbMN7ft6 z;F&bJ^KRkM&x^c|S?JAVoa6F}`~E@ORXURvcUNe>sa*GCZs+-Yy#x1rWGnp^6+W8z z|2^wxkGRgQXSSrTJY~Ibr=<3}605lrPkw(cqon8)Ss=4VCr9&x`Znn)DYL)$KD;`w z_F~_I-f1ttR>c=gxOwzSVtK(Kw@segUNRlgx~*|@Jx|i)oHI99T3^cAn!|Wdv0dym zXNlU!70S===q~=1lKt7()Az;ZUa@_bj$h3xo&V)wfyMpz-!*@*@0wF#${(v2KL47D z?{8y8vr-k!W4h;LFD|^_p_l3O@6pH0H`>2#O_jOrz}0$4@`xn+t;QV&*BI7tEeK>; zcecX(_L=*cPKAAYlwUuPPP|>yH~-jt0q#R3{QuY#cIUr(|6TW@JtG^#&7Qjw^WOf; P0hO?xu6{1-oD!M<Mh-Hg literal 0 HcmV?d00001 diff --git a/pandora_console/images/mod_remote_cmd_string.png b/pandora_console/images/mod_remote_cmd_string.png new file mode 100644 index 0000000000000000000000000000000000000000..daba72cecfb521ca544b818582238944674f2338 GIT binary patch literal 1457 zcmeAS@N?(olHy`uVBq!ia0vp^MnEjU!3HElqIG(Jlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6H#24<Dakcg59UmvUF{9L_6kQ%*;+ybC(1_m4Zih{)C?9>v4 zq}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7`WhYyvDB0U7*i={n4aiL` zNmQuF&B-gas<2f8n`;GRgM{^!6u?SKvTc<hj*9RNP;kyKN>wn`GuBNuFf>#!Gt)CP zF*P$Y)KM@pFf`IP03tJ8LlY}gGb<x=1t?Gg+E$d3W)<Y(2DJ;wvsKC{DJihh*Do(G z*DE*H%P&gTH?*|01esxEqzhD`TU?n}l31aeSF8*(!6mggxhS)sBr`ux0c2ugQhsTP ztrF0s5HI8wz>Uo-h6WQb!1OB;3-k^33_xCjDfIQluQWFouDZA+C>7yetOgf{R2HP_ z2c;J0mlh=hBQ8xDWL1Hcb5UwyNq$jCetr%t6azByOY(~|@(UE4gUu8)d=ry1^FRWc zU>&}`R-SpqC5d^-sh%#jN<cI8GBZ=GOiYbjjg1YAU5y+q4Gmo_oy;B0oSdDFU7Rh= z%*~BWV0vBhlS^|`^GaZPQxJMhaOwpmhTH<6%`T}$nPsUdZbkXI3SduLW#V>=Ax`t4 zdQ)(_#R#WfeV}9XK~ako)i5Do`T;TF2^YwLC;iksV0teCChQ-TdS4kBn3O$T978H@ z-3i<8?NlgGzfY-T;t|#98o$|{in0vX26ElG)pR0sI+xUyWmzjdPqalvMJW|<a9z^9 zaO9|A@kz&tPVCHqzhmxnumAMtV(>yMi+As8>+jUQd-waVUF_zYQ~oi(+{L)@_S-(Y zZx#M3LNDXFk321UYcADmyZE9;`RxS}I%e5hXZiB>oK2hEzJu+2L-7ON56l+Ryp~Qg zc-LIV!}m$Z^;m}9vnRh;jqYVStiSHxoMQ2Mm!pZ))u*3-p5!~s$kfn~COO6EJmc&y zp;Jva^Ozktu$8gUYVP!@Ua51xI4x9Ao$PtFHEna`rwW_B-<DsqQDjZH#BonCrH0q$ z{4euBQ3L(6p;JtlC#F_jd|T!%*1h!gArF;H=l^B02|E=eC793oI3qxHsciZchHpxh zN766&&vY#)5jfxa-tgRy-cz&0{Tk{Qbn#4HF?YxFXuTO`m5M#BTYgPiTJQ9jIW0zO z`f1*&-;Z;Byz{M6yhh<h+_t?r@hfFrV_x5z$b7I@>=FCMrwND71-)jtpt(f!8`l@v z7vGm~H{6$CI2qd``{=gVm*5w>8nuJ8rv8fJNk1r`6z{g+6t_>qrZuw<_&ew7?z!YX z(<g2Am#V#XfosD~o|H(H2rs^yU=Xt3X133IsXtr8pY+{o_s!bex{$H+_~XP51M6EY z7Qx3DbeI=pbEqx9I6p$r%J}pH%ca3P|K4-^c=-p1p=!-9hWkt%@BRP&{ipg%B!OWO W%XuTMc{4IWg{Y^ipUXO@geCy&IwD&D literal 0 HcmV?d00001 diff --git a/pandora_console/pandoradb_data.sql b/pandora_console/pandoradb_data.sql index ee8d1a5041..b29c0972ef 100644 --- a/pandora_console/pandoradb_data.sql +++ b/pandora_console/pandoradb_data.sql @@ -292,10 +292,10 @@ INSERT INTO `ttipo_modulo` VALUES (31,'web_proc',9,'Remote HTTP module to check server response','mod_web_proc.png'), (32,'web_content_data',9,'Remote HTTP module to retrieve numeric data','mod_web_data.png'), (33,'web_content_string',9,'Remote HTTP module to retrieve string data','mod_web_data.png'), -(34,'remote_cmd', 10, 'Remote CMD command, numeric data', 'mod_remote_cmd.png'), -(35,'remote_cmd_proc', 10, 'Remote CMD command, boolean data', 'mod_remote_cmd_proc.png'), -(36,'remote_cmd_string', 10, 'Remote CMD command, alphanumeric data', 'mod_remote_cmd_string.png'), -(37,'remote_cmd_inc', 10, 'Remote CMD command, incremental data', 'mod_remote_cmd_inc.png'), +(34,'remote_cmd', 10, 'Remote execution, numeric data', 'mod_remote_cmd.png'), +(35,'remote_cmd_proc', 10, 'Remote execution, boolean data', 'mod_remote_cmd_proc.png'), +(36,'remote_cmd_string', 10, 'Remote execution, alphanumeric data', 'mod_remote_cmd_string.png'), +(37,'remote_cmd_inc', 10, 'Remote execution, incremental data', 'mod_remote_cmd_inc.png'), (100,'keep_alive',-1,'KeepAlive','mod_keepalive.png'); -- From 1a2ee3f00bf0a7e8385e8bc3deec564d096bb20a Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Thu, 10 Oct 2019 08:59:55 +0200 Subject: [PATCH 05/16] Config - rcmd_timeout --- pandora_server/lib/PandoraFMS/Config.pm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index 77675ddd89..8e9536ac6e 100644 --- a/pandora_server/lib/PandoraFMS/Config.pm +++ b/pandora_server/lib/PandoraFMS/Config.pm @@ -275,6 +275,7 @@ sub pandora_load_config { $pa_config->{"alert_recovery"} = 0; # Introduced on 1.3.1 $pa_config->{"snmp_checks"} = 1; # Introduced on 1.3.1 $pa_config->{"snmp_timeout"} = 8; # Introduced on 1.3.1 + $pa_config->{"rcmd_timeout"} = 30; # Introduced on 7.0.740 $pa_config->{"snmp_trapd"} = '/usr/sbin/snmptrapd'; # 3.0 $pa_config->{"tcp_checks"} = 1; # Introduced on 1.3.1 $pa_config->{"tcp_timeout"} = 20; # Introduced on 1.3.1 @@ -782,6 +783,9 @@ sub pandora_load_config { elsif ($parametro =~ m/^snmp_timeout\s+([0-9]*)/i) { $pa_config->{"snmp_timeout"} = clean_blank($1); } + elsif ($parametro =~ m/^rcmd_timeout\s+([0-9]*)/i) { + $pa_config->{"rcmd_timeout"} = clean_blank($1); + } elsif ($parametro =~ m/^tcp_checks\s+([0-9]*)/i) { $pa_config->{"tcp_checks"} = clean_blank($1); } From 7eb4d3c51ce1099f363194da1d361cc296740f13 Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin <daniel.barbero@artica.es> Date: Thu, 10 Oct 2019 11:55:32 +0200 Subject: [PATCH 06/16] add CMD command a network components --- .../modules/manage_network_components.php | 259 +++++++----- .../manage_network_components_form.php | 393 +++++++++++------- .../manage_network_components_form_common.php | 2 +- ...manage_network_components_form_network.php | 186 +++++++-- 4 files changed, 566 insertions(+), 274 deletions(-) diff --git a/pandora_console/godmode/modules/manage_network_components.php b/pandora_console/godmode/modules/manage_network_components.php index 60d39d26d9..6cb7f55227 100644 --- a/pandora_console/godmode/modules/manage_network_components.php +++ b/pandora_console/godmode/modules/manage_network_components.php @@ -1,17 +1,32 @@ <?php +/** + * Extension to manage a list of gateways and the node address where they should + * point to. + * + * @category Extensions + * @package Pandora FMS + * @subpackage Community + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * Copyright (c) 2005-2019 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 for 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. + * ============================================================================ + */ -// Pandora FMS - http://pandorafms.com -// ================================================== -// Copyright (c) 2005-2010 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 for 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. -// Load global vars global $config; check_login(); @@ -32,7 +47,7 @@ require_once $config['homedir'].'/include/functions_categories.php'; enterprise_include_once('meta/include/functions_components_meta.php'); require_once $config['homedir'].'/include/functions_component_groups.php'; -// Header +// Header. if (defined('METACONSOLE')) { components_meta_print_header(); $sec = 'advanced'; @@ -40,15 +55,6 @@ if (defined('METACONSOLE')) { $id_modulo = (int) get_parameter('id_component_type'); $new_component = (bool) get_parameter('new_component'); } else { - /* - Hello there! :) - - We added some of what seems to be "buggy" messages to the openSource version recently. This is not to force open-source users to move to the enterprise version, this is just to inform people using Pandora FMS open source that it requires skilled people to maintain and keep it running smoothly without professional support. This does not imply open-source version is limited in any way. If you check the recently added code, it contains only warnings and messages, no limitations except one: we removed the option to add custom logo in header. In the Update Manager section, it warns about the 'danger’ of applying automated updates without a proper backup, remembering in the process that the Enterprise version comes with a human-tested package. Maintaining an OpenSource version with more than 500 agents is not so easy, that's why someone using a Pandora with 8000 agents should consider asking for support. It's not a joke, we know of many setups with a huge number of agents, and we hate to hear that “its becoming unstable and slow” :( - - You can of course remove the warnings, that's why we include the source and do not use any kind of trick. And that's why we added here this comment, to let you know this does not reflect any change in our opensource mentality of does the last 14 years. - - */ - $id_modulo = (int) get_parameter('id_component_type'); $new_component = (bool) get_parameter('new_component'); if ($id_modulo == 2 || $id_modulo == 4 || $id_modulo == 6) { @@ -59,7 +65,6 @@ if (defined('METACONSOLE')) { $help_header = 'network_component_tab'; } - ui_print_page_header( __('Module management').' » '.__('Network component management'), '', @@ -73,7 +78,6 @@ if (defined('METACONSOLE')) { $sec = 'gmodules'; } - $type = (int) get_parameter('type'); $name = (string) get_parameter('name'); $description = (string) get_parameter('description'); @@ -120,7 +124,7 @@ $history_data = (bool) get_parameter('history_data'); // Don't read as (float) because it lost it's decimals when put into MySQL // where are very big and PHP uses scientific notation, p.e: -// 1.23E-10 is 0.000000000123 +// 1.23E-10 is 0.000000000123. $post_process = (string) get_parameter('post_process', 0.0); $unit = (string) get_parameter('unit'); @@ -151,9 +155,16 @@ $snmp3_auth_user = (string) io_safe_output(get_parameter('snmp3_auth_user')); $snmp3_auth_pass = io_input_password((string) get_parameter('snmp3_auth_pass')); $snmp3_auth_method = (string) get_parameter('snmp3_auth_method'); $snmp3_privacy_method = (string) get_parameter('snmp3_privacy_method'); -$snmp3_privacy_pass = io_input_password((string) get_parameter('snmp3_privacy_pass')); +$snmp3_privacy_pass = io_input_password( + (string) get_parameter('snmp3_privacy_pass') +); $snmp3_security_level = (string) get_parameter('snmp3_security_level'); +$command_text = (string) get_parameter('command_text'); +$command_credential_identifier = (string) get_parameter( + 'command_credential_identifier' +); +$command_os = (string) get_parameter('command_os'); $throw_unknown_events = get_parameter('throw_unknown_events', false); // Set the event type that can show. @@ -163,11 +174,19 @@ $disabled_types_event = json_encode($disabled_types_event); $create_component = (bool) get_parameter('create_component'); $update_component = (bool) get_parameter('update_component'); $delete_component = (bool) get_parameter('delete_component'); -$duplicate_network_component = (bool) get_parameter('duplicate_network_component'); +$duplicate_network_component = (bool) get_parameter( + 'duplicate_network_component' +); $delete_multiple = (bool) get_parameter('delete_multiple'); $multiple_delete = (bool) get_parameter('multiple_delete', 0); -$create_network_from_module = (bool) get_parameter('create_network_from_module', 0); -$create_network_from_snmp_browser = (bool) get_parameter('create_network_from_snmp_browser', 0); +$create_network_from_module = (bool) get_parameter( + 'create_network_from_module', + 0 +); +$create_network_from_snmp_browser = (bool) get_parameter( + 'create_network_from_snmp_browser', + 0 +); if ($duplicate_network_component) { $source_id = (int) get_parameter('source_id'); @@ -182,18 +201,34 @@ if ($duplicate_network_component) { __('Could not be created') ); - // List unset for jump the bug in the pagination (TODO) that the make another - // copy for each pass into pages. + // List unset for jump the bug in the pagination + // that the make another copy for each pass into pages. unset($_GET['source_id']); unset($_GET['duplicate_network_component']); $id = 0; } +$custom_string_1 = ''; +$custom_string_2 = ''; +$custom_string_3 = ''; + +if ($type >= 15 && $type <= 18) { + // New support for snmp v3. + $tcp_send = $snmp_version; + $plugin_user = $snmp3_auth_user; + $plugin_pass = $snmp3_auth_pass; + $plugin_parameter = $snmp3_auth_method; + $custom_string_1 = $snmp3_privacy_method; + $custom_string_2 = $snmp3_privacy_pass; + $custom_string_3 = $snmp3_security_level; +} else if ($type >= 34 && $type <= 37) { + $tcp_send = $command_text; + $custom_string_1 = $command_credential_identifier; + $custom_string_2 = $command_os; +} + if ($create_component) { - $custom_string_1 = ''; - $custom_string_2 = ''; - $custom_string_3 = ''; $name_check = db_get_value( 'name', 'tnetwork_component', @@ -201,25 +236,6 @@ if ($create_component) { $name ); - // remote_snmp = 15 - // remote_snmp_proc = 18 - if ($type >= 15 && $type <= 18) { - // New support for snmp v3 - $tcp_send = $snmp_version; - $plugin_user = $snmp3_auth_user; - $plugin_pass = $snmp3_auth_pass; - $plugin_parameter = $snmp3_auth_method; - $custom_string_1 = $snmp3_privacy_method; - $custom_string_2 = $snmp3_privacy_pass; - $custom_string_3 = $snmp3_security_level; - $name_check = db_get_value( - 'name', - 'tnetwork_component', - 'name', - $name - ); - } - if ($name && !$name_check) { $id = network_components_create_network_component( $name, @@ -283,13 +299,16 @@ if ($create_component) { } if ($id === false || !$id) { - db_pandora_audit('Module management', 'Fail try to create network component'); + db_pandora_audit( + 'Module management', + 'Fail try to create network component' + ); ui_print_error_message(__('Could not be created')); include_once 'godmode/modules/manage_network_components_form.php'; return; } - db_pandora_audit('Module management', "Create network component #$id"); + db_pandora_audit('Module management', 'Create network component #'.$id); ui_print_success_message(__('Created successfully')); $id = 0; } @@ -297,23 +316,6 @@ if ($create_component) { if ($update_component) { $id = (int) get_parameter('id'); - $custom_string_1 = ''; - $custom_string_2 = ''; - $custom_string_3 = ''; - - // $name_check = db_get_value ('name', 'tnetwork_component', 'name', $name); - if ($type >= 15 && $type <= 18) { - // New support for snmp v3 - $tcp_send = $snmp_version; - $plugin_user = $snmp3_auth_user; - $plugin_pass = $snmp3_auth_pass; - $plugin_parameter = $snmp3_auth_method; - $custom_string_1 = $snmp3_privacy_method; - $custom_string_2 = $snmp3_privacy_pass; - $custom_string_3 = $snmp3_security_level; - // $name_check = db_get_value ('name', 'tnetwork_component', 'name', $name); - } - if (!empty($name)) { $result = network_components_update_network_component( $id, @@ -380,14 +382,14 @@ if ($update_component) { if ($result === false || !$result) { db_pandora_audit( 'Module management', - "Fail try to update network component #$id" + 'Fail try to update network component #'.$id ); ui_print_error_message(__('Could not be updated')); include_once 'godmode/modules/manage_network_components_form.php'; return; } - db_pandora_audit('Module management', "Update network component #$id"); + db_pandora_audit('Module management', 'Update network component #'.$id); ui_print_success_message(__('Updated successfully')); $id = 0; @@ -401,12 +403,12 @@ if ($delete_component) { if ($result) { db_pandora_audit( 'Module management', - "Delete network component #$id" + 'Delete network component #'.$id ); } else { db_pandora_audit( 'Module management', - "Fail try to delete network component #$id" + 'Fail try to delete network component #'.$id ); } @@ -433,12 +435,12 @@ if ($multiple_delete) { if ($result) { db_pandora_audit( 'Module management', - "Multiple delete network component: $str_ids" + 'Multiple delete network component:'.$str_ids ); } else { db_pandora_audit( 'Module management', - "Fail try to delete network component: $str_ids" + 'Fail try to delete network component:'.$str_ids ); } @@ -451,7 +453,10 @@ if ($multiple_delete) { $id = 0; } -if ($id || $new_component || $create_network_from_module || $create_network_from_snmp_browser) { +if ($id || $new_component + || $create_network_from_module + || $create_network_from_snmp_browser +) { include_once $config['homedir'].'/godmode/modules/manage_network_components_form.php'; return; } @@ -540,7 +545,7 @@ if ($component_groups === false) { foreach ($component_groups as $component_group_key => $component_group_val) { $num_components = db_get_num_rows( 'SELECT id_nc - FROM tnetwork_component + FROM tnetwork_component WHERE id_group = '.$component_group_key ); @@ -551,14 +556,14 @@ foreach ($component_groups as $component_group_key => $component_group_val) { if ($childs !== false) { foreach ($childs as $child) { $num_components_childs += db_get_num_rows( - 'SELECT id - FROM tlocal_component + 'SELECT id + FROM tlocal_component WHERE id_network_component_group = '.$child['id_sg'] ); } } - // Only show component groups with local components + // Only show component groups with local components. if ($num_components == 0 && $num_components_childs == 0) { unset($component_groups[$component_group_key]); } @@ -622,7 +627,11 @@ if ($search_string != '') { $filter[] = '(name LIKE '."'%".$search_string."%'".'OR description LIKE '."'%".$search_string."%'".'OR tcp_send LIKE '."'%".$search_string."%'".'OR tcp_rcv LIKE '."'%".$search_string."%'".')'; } -$total_components = network_components_get_network_components(false, $filter, 'COUNT(*) AS total'); +$total_components = network_components_get_network_components( + false, + $filter, + 'COUNT(*) AS total' +); $total_components = $total_components[0]['total']; ui_pagination($total_components, $url); $filter['offset'] = (int) get_parameter('offset'); @@ -651,7 +660,13 @@ unset($table); $table->width = '100%'; $table->head = []; $table->class = 'info_table'; -$table->head['checkbox'] = html_print_checkbox('all_delete', 0, false, true, false); +$table->head['checkbox'] = html_print_checkbox( + 'all_delete', + 0, + false, + true, + false +); $table->head[0] = __('Module name'); $table->head[1] = __('Type'); $table->head[3] = __('Description'); @@ -669,12 +684,21 @@ foreach ($components as $component) { $data = []; if ($component['max'] == $component['min'] && $component['max'] == 0) { - $component['max'] = $component['min'] = __('N/A'); + $component['max'] = __('N/A'); + $component['min'] = __('N/A'); } - $data['checkbox'] = html_print_checkbox_extended('delete_multiple[]', $component['id_nc'], false, false, '', 'class="check_delete"', true); + $data['checkbox'] = html_print_checkbox_extended( + 'delete_multiple[]', + $component['id_nc'], + false, + false, + '', + 'class="check_delete"', + true + ); - $data[0] = '<a href="index.php?sec='.$sec.'&'.'sec2=godmode/modules/manage_network_components&'.'id='.$component['id_nc'].'&pure='.$pure.'">'; + $data[0] = '<a href="index.php?sec='.$sec.'&sec2=godmode/modules/manage_network_components&id='.$component['id_nc'].'&pure='.$pure.'">'; $data[0] .= io_safe_output($component['name']); $data[0] .= '</a>'; $data[1] = ui_print_moduletype_icon($component['type'], true); @@ -702,6 +726,10 @@ foreach ($components as $component) { ['title' => __('Plug-in module')] ); break; + + default: + // Not possible. + break; } $data[3] = "<span style='font-size: 8px'>".mb_strimwidth(io_safe_output($component['description']), 0, 60, '...').'</span>'; @@ -719,13 +747,32 @@ if (isset($data)) { echo "<form method='post' action='index.php?sec=".$sec.'&sec2=godmode/modules/manage_network_components&search_id_group=0search_string=&pure='.$pure."'>"; html_print_input_hidden('multiple_delete', 1); html_print_table($table); - ui_pagination($total_components, $url, 0, 0, false, 'offset', true, 'pagination-bottom'); + ui_pagination( + $total_components, + $url, + 0, + 0, + false, + 'offset', + true, + 'pagination-bottom' + ); echo "<div style='float: right; margin-left: 5px;'>"; - html_print_submit_button(__('Delete'), 'delete_btn', false, 'class="sub delete"'); + html_print_submit_button( + __('Delete'), + 'delete_btn', + false, + 'class="sub delete"' + ); echo '</div>'; echo '</form>'; } else { - ui_print_info_message(['no_close' => true, 'message' => __('There are no defined network components') ]); + ui_print_info_message( + [ + 'no_close' => true, + 'message' => __('There are no defined network components'), + ] + ); } echo '<form method="post" action="'.$url.'">'; @@ -744,7 +791,12 @@ html_print_select( '', '' ); -html_print_submit_button(__('Create'), 'crt', false, 'class="sub next" style="margin-left: 5px;"'); +html_print_submit_button( + __('Create'), + 'crt', + false, + 'class="sub next" style="margin-left: 5px;"' +); echo '</div>'; echo '</form>'; @@ -752,30 +804,33 @@ enterprise_hook('close_meta_frame'); ?> <script type="text/javascript"> - $( document ).ready(function() { - $('[id^=checkbox-delete_multiple]').change(function(){ if($(this).parent().parent().hasClass('checkselected')){ $(this).parent().parent().removeClass('checkselected'); } else{ - $(this).parent().parent().addClass('checkselected'); + $(this).parent().parent().addClass('checkselected'); } }); - $('[id^=checkbox-all_delete]').change(function(){ + $('[id^=checkbox-all_delete]').change(function(){ if ($("#checkbox-all_delete").prop("checked")) { - $('[id^=checkbox-delete_multiple]').parent().parent().addClass('checkselected'); - $(".check_delete").prop("checked", true); + $('[id^=checkbox-delete_multiple]') + .parent() + .parent() + .addClass('checkselected'); + $(".check_delete") + .prop("checked", true); } else{ - $('[id^=checkbox-delete_multiple]').parent().parent().removeClass('checkselected'); + $('[id^=checkbox-delete_multiple]') + .parent() + .parent() + .removeClass('checkselected'); $(".check_delete").prop("checked", false); - } + } }); - }); - </script> diff --git a/pandora_console/godmode/modules/manage_network_components_form.php b/pandora_console/godmode/modules/manage_network_components_form.php index fd922046d1..114be6a969 100644 --- a/pandora_console/godmode/modules/manage_network_components_form.php +++ b/pandora_console/godmode/modules/manage_network_components_form.php @@ -1,17 +1,32 @@ <?php +/** + * Extension to manage a list of gateways and the node address where they should + * point to. + * + * @category Extensions + * @package Pandora FMS + * @subpackage Community + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * Copyright (c) 2005-2019 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 for 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. + * ============================================================================ + */ -// Pandora FMS - http://pandorafms.com -// ================================================== -// Copyright (c) 2005-2010 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 for 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. -// Load global vars global $config; check_login(); @@ -26,12 +41,18 @@ if (! check_acl($config['id_user'], 0, 'PM')) { } $create_network_from_module = get_parameter('create_network_from_module'); -$create_network_from_snmp_browser = get_parameter('create_network_from_snmp_browser', 0); +$create_network_from_snmp_browser = get_parameter( + 'create_network_from_snmp_browser', + 0 +); $pure = get_parameter('pure', 0); if ($create_network_from_module) { $id_agentmodule = get_parameter('create_module_from'); - $data_module = db_get_row_filter('tagente_modulo', ['id_agente_modulo' => $id_agentmodule]); + $data_module = db_get_row_filter( + 'tagente_modulo', + ['id_agente_modulo' => $id_agentmodule] + ); $name = $data_module['nombre']; $description = $data_module['descripcion']; @@ -139,16 +160,25 @@ if (isset($id)) { $each_ff = $component['each_ff']; if ($type >= 15 && $type <= 18) { - // New support for snmp v3 + // New support for snmp v3. $snmp_version = $component['tcp_send']; $snmp3_auth_user = $component['plugin_user']; $snmp3_auth_pass = io_output_password($component['plugin_pass']); $snmp3_auth_method = $component['plugin_parameter']; $snmp3_privacy_method = $component['custom_string_1']; - $snmp3_privacy_pass = io_output_password($component['custom_string_2']); + $snmp3_privacy_pass = io_output_password( + $component['custom_string_2'] + ); $snmp3_security_level = $component['custom_string_3']; + } else if ($type >= 34 && $type <= 37) { + $command_text = $component['tcp_send']; + $command_credential_identifier = $component['custom_string_1']; + $command_os = $component['custom_string_2']; } - } else if (isset($new_component) && $new_component && !$create_network_from_snmp_browser) { + } else if (isset($new_component) + && $new_component + && !$create_network_from_snmp_browser + ) { $name = ''; $snmp_oid = ''; $description = ''; @@ -204,21 +234,13 @@ if (isset($id)) { $snmp3_privacy_pass = ''; $snmp3_auth_method = ''; $snmp3_security_level = ''; + + $command_text = ''; + $command_os = 'inherited'; + $command_credential_identifier = ''; } } -if ($create_network_from_snmp_browser) { -} - -/* - * $id_component_type has these values: - * 6 - Module WMI - * 4 - Plugin component - * 2 - network component - * - * You can see this values in file godmode/modules/manage_network_components.php - * in the last lines (in the call function "html_print_select"). - */ $table = new stdClass(); if ($id_component_type == 6) { @@ -242,6 +264,7 @@ if ($id_component_type == 6) { 3, 4, 5, + 10, ]; include $config['homedir'].'/godmode/modules/manage_network_components_form_common.php'; include $config['homedir'].'/godmode/modules/manage_network_components_form_network.php'; @@ -253,7 +276,7 @@ echo '<form name="component" method="post">'; $table->width = '100%'; $table->class = 'databox filters'; -// $table came from manage_network_components_form_common.php + if (defined('METACONSOLE')) { if ($id) { $table->head[0] = __('Update Network Component'); @@ -295,61 +318,78 @@ ui_require_javascript_file('pandora_modules'); function type_change () { // type 1-4 - Generic_xxxxxx if ((document.component.type.value > 0) && (document.component.type.value < 5)) { - - $("input[name=snmp_community]").css({backgroundColor: '#ddd !important'}); + $("input[name=snmp_community]") + .css({backgroundColor: '#ddd '}); $("input[name=snmp_community]").attr("disabled", true); - - $("input[name=tcp_rcv]").css({backgroundColor: '#ddd !important'}); + + $("input[name=tcp_rcv]").css({backgroundColor: '#ddd '}); $("input[name=tcp_rcv]").attr("disabled", true); - + <?php if ($id_component_type != MODULE_WMI) { ?> - $("input[name=snmp_oid]").css({backgroundColor: '#ddd !important'}); + $("input[name=snmp_oid]") + .css({backgroundColor: '#ddd '}); $("input[name=snmp_oid]").attr("disabled", true); - - $("input[name=tcp_send]").css({backgroundColor: '#ddd !important'}); + + $("input[name=tcp_send]") + .css({backgroundColor: '#ddd '}); $("input[name=tcp_send]").attr("disabled", true); - - $("input[name=tcp_port]").css({backgroundColor: '#ddd !important'}); + + $("input[name=tcp_port]") + .css({backgroundColor: '#ddd '}); $("input[name=tcp_port]").attr("disabled", true); <?php } ?> - - $("input[name=snmp3_auth_user]").css({backgroundColor: '#ddd !important'}); + + $("input[name=snmp3_auth_user]") + .css({backgroundColor: '#ddd '}); $("input[name=snmp3_auth_user]").attr("disabled", true); - - $("input[name=snmp3_auth_pass]").css({backgroundColor: '#ddd !important'}); + + $("input[name=snmp3_auth_pass]") + .css({backgroundColor: '#ddd '}); $("input[name=snmp3_auth_pass]").attr("disabled", true); - - $("#snmp3_privacy_method").css({backgroundColor: '#ddd !important'}); + + $("#snmp3_privacy_method").css({backgroundColor: '#ddd '}); $("#snmp3_privacy_method").attr("disabled", true); - - $("input[name=snmp3_privacy_pass]").css({backgroundColor: '#ddd !important'}); + + $("input[name=snmp3_privacy_pass]") + .css({backgroundColor: '#ddd '}); $("input[name=snmp3_privacy_pass]").attr("disabled", true); - - $("#snmp3_auth_method").css({backgroundColor: '#ddd !important'}); + + $("#snmp3_auth_method").css({backgroundColor: '#ddd '}); $("#snmp3_auth_method").attr("disabled", true); - - $("#snmp3_security_level").css({backgroundColor: '#ddd !important'}); + + $("#snmp3_security_level").css({backgroundColor: '#ddd '}); $("#snmp3_security_level").attr("disabled", true); + + $("#command_text").css({backgroundColor: '#ddd '}); + $("#command_text").attr("disabled", true); + + $("#command_credential_identifier") + .css({backgroundColor: '#ddd '}); + $("#command_credential_identifier").attr("disabled", true); + + $("#command_os").css({backgroundColor: '#ddd '}); + $("#command_os").attr("disabled", true); } // type 15-18- SNMP - if ((document.component.type.value > 14) && (document.component.type.value < 19 )) { - document.component.snmp_oid.style.background="#fff"; - document.component.snmp_oid.style.disabled=false; - document.component.snmp_community.style.background="#fff"; - document.component.snmp_community.disabled=false; + if ((document.component.type.value > 14) && (document.component.type.value < 19 )) { document.component.snmp_oid.style.background="#fff"; document.component.snmp_oid.disabled=false; - document.component.tcp_send.style.background="#ddd !important"; + + document.getElementById('text-snmp_community').style.background="#fff"; + document.getElementById('text-snmp_community').disabled=false; + document.component.snmp_oid.style.background="#fff"; + document.component.snmp_oid.disabled=false; + document.component.tcp_send.style.background="#ddd "; document.component.tcp_send.disabled=true; - document.component.tcp_rcv.style.background="#ddd !important"; + document.component.tcp_rcv.style.background="#ddd "; document.component.tcp_rcv.disabled=true; document.component.tcp_port.style.background="#fff"; document.component.tcp_port.disabled=false; - + document.component.snmp_version.style.background="#fff"; document.component.snmp_version.disabled=false; document.component.snmp3_auth_user.style.background="#fff"; @@ -364,94 +404,161 @@ function type_change () { document.component.snmp3_auth_method.disabled=false; document.component.snmp3_security_level.style.background="#fff"; document.component.snmp3_security_level.disabled=false; - + + document.component.command_text.style.background="#ddd"; + document.component.command_text.style.disabled=true; + document.component.command_credential_identifier.style.background="#ddd"; + document.component.command_credential_identifier.disabled=true; + document.component.command_os.style.background="#ddd"; + document.component.command_os.disabled=true; + $("#snmp_version" ).trigger("change"); } + + if ((document.component.type.value >= 34) && (document.component.type.value <= 37 )) { + document.component.snmp_oid.style.background="#ddd"; + document.component.snmp_oid.disabled=true; + document.getElementById('text-snmp_community').style.background="#ddd"; + document.getElementById('text-snmp_community').disabled=true; + document.component.snmp_oid.style.background="#ddd"; + document.component.snmp_oid.disabled=true; + document.component.snmp_version.style.background="#ddd"; + document.component.snmp_version.disabled=true; + + document.component.tcp_send.style.background="#ddd"; + document.component.tcp_send.disabled=true; + document.component.tcp_rcv.style.background="#ddd"; + document.component.tcp_rcv.disabled=true; + document.component.tcp_port.style.background="#fff"; + document.component.tcp_port.disabled=false; + + document.component.snmp3_auth_user.style.background="#ddd "; + document.component.snmp3_auth_user.disabled=true; + document.component.snmp3_auth_pass.background="#ddd "; + document.component.snmp3_auth_pass.disabled=true; + document.component.snmp3_privacy_method.style.background="#ddd "; + document.component.snmp3_privacy_method.disabled=true; + document.component.snmp3_privacy_pass.style.background="#ddd "; + document.component.snmp3_privacy_pass.disabled=true; + document.component.snmp3_auth_method.style.background="#ddd "; + document.component.snmp3_auth_method.disabled=true; + document.component.snmp3_security_level.style.background="#ddd "; + document.component.snmp3_security_level.disabled=true; + + document.component.command_text.style.background="#fff"; + document.component.command_text.style.disabled=false; + document.component.command_credential_identifier.style.background="#fff"; + document.component.command_credential_identifier.disabled=false; + document.component.command_os.style.background="#fff"; + document.component.command_os.disabled=false; + } + // type 6-7 - ICMP if ((document.component.type.value == 6) || (document.component.type.value == 7)) { - document.component.snmp_oid.style.background="#ddd !important"; + document.component.snmp_oid.style.background="#ddd "; document.component.snmp_oid.disabled=true; - document.component.snmp_community.style.background="#ddd !important"; - document.component.snmp_community.disabled=true; - document.component.snmp_oid.style.background="#ddd !important"; + document.getElementById('text-snmp_community').style.background="#ddd"; + document.getElementById('text-snmp_community').disabled=true; + document.component.snmp_oid.style.background="#ddd "; document.component.snmp_oid.disabled=true; - document.component.tcp_send.style.background="#ddd !important"; + document.component.tcp_send.style.background="#ddd "; document.component.tcp_send.disabled=true; - document.component.tcp_rcv.style.background="#ddd !important"; + document.component.tcp_rcv.style.background="#ddd "; document.component.tcp_rcv.disabled=true; - document.component.tcp_port.style.background="#ddd !important"; + document.component.tcp_port.style.background="#ddd "; document.component.tcp_port.disabled=true; - - document.component.snmp_version.style.background="#ddd !important"; + + document.component.snmp_version.style.background="#ddd "; document.component.snmp_version.disabled=true; - document.component.snmp3_auth_user.style.background="#ddd !important"; + document.component.snmp3_auth_user.style.background="#ddd "; document.component.snmp3_auth_user.disabled=true; - document.component.snmp3_auth_pass.background="#ddd !important"; + document.component.snmp3_auth_pass.background="#ddd "; document.component.snmp3_auth_pass.disabled=true; - document.component.snmp3_privacy_method.style.background="#ddd !important"; + document.component.snmp3_privacy_method.style.background="#ddd "; document.component.snmp3_privacy_method.disabled=true; - document.component.snmp3_privacy_pass.style.background="#ddd !important"; + document.component.snmp3_privacy_pass.style.background="#ddd "; document.component.snmp3_privacy_pass.disabled=true; - document.component.snmp3_auth_method.style.background="#ddd !important"; + document.component.snmp3_auth_method.style.background="#ddd "; document.component.snmp3_auth_method.disabled=true; - document.component.snmp3_security_level.style.background="#ddd !important"; + document.component.snmp3_security_level.style.background="#ddd "; document.component.snmp3_security_level.disabled=true; + + document.component.command_text.style.background="#ddd"; + document.component.command_text.style.disabled=true; + document.component.command_credential_identifier.style.background="#ddd"; + document.component.command_credential_identifier.disabled=true; + document.component.command_os.style.background="#ddd"; + document.component.command_os.disabled=true; } // type 8-11 - TCP if ((document.component.type.value > 7) && (document.component.type.value < 12)) { - document.component.snmp_oid.style.background="#ddd !important"; + document.component.snmp_oid.style.background="#ddd "; document.component.snmp_oid.disabled=true; - document.component.snmp_community.style.background="#ddd !important"; - document.component.snmp_community.disabled=true; + document.getElementById('text-snmp_community').style.background="#ddd "; + document.getElementById('text-snmp_community').disabled=true; document.component.tcp_send.style.background="#fff"; document.component.tcp_send.disabled=false; document.component.tcp_rcv.style.background="#fff"; document.component.tcp_rcv.disabled=false; document.component.tcp_port.style.background="#fff"; document.component.tcp_port.disabled=false; - - document.component.snmp_version.style.background="#ddd !important"; + + document.component.snmp_version.style.background="#ddd "; document.component.snmp_version.disabled=true; - document.component.snmp3_auth_user.style.background="#ddd !important"; + document.component.snmp3_auth_user.style.background="#ddd "; document.component.snmp3_auth_user.disabled=true; - document.component.snmp3_auth_pass.background="#ddd !important"; + document.component.snmp3_auth_pass.background="#ddd "; document.component.snmp3_auth_pass.disabled=true; - document.component.snmp3_privacy_method.style.background="#ddd !important"; + document.component.snmp3_privacy_method.style.background="#ddd "; document.component.snmp3_privacy_method.disabled=true; - document.component.snmp3_privacy_pass.style.background="#ddd !important"; + document.component.snmp3_privacy_pass.style.background="#ddd "; document.component.snmp3_privacy_pass.disabled=true; - document.component.snmp3_auth_method.style.background="#ddd !important"; + document.component.snmp3_auth_method.style.background="#ddd "; document.component.snmp3_auth_method.disabled=true; - document.component.snmp3_security_level.style.background="#ddd !important"; + document.component.snmp3_security_level.style.background="#ddd "; document.component.snmp3_security_level.disabled=true; + + document.component.command_text.style.background="#ddd"; + document.component.command_text.style.disabled=true; + document.component.command_credential_identifier.style.background="#ddd"; + document.component.command_credential_identifier.disabled=true; + document.component.command_os.style.background="#ddd"; + document.component.command_os.disabled=true; } // type 12 - UDP if (document.component.type.value == 12) { - document.component.snmp_oid.style.background="#ddd !important"; + document.component.snmp_oid.style.background="#ddd "; document.component.snmp_oid.disabled=true; - document.component.snmp_community.style.background="#ddd !important"; - document.component.snmp_community.disabled=true; + document.getElementById('text-snmp_community').style.background="#ddd "; + document.getElementById('text-snmp_community').disabled=true; document.component.tcp_send.style.background="#fff"; document.component.tcp_send.disabled=false; document.component.tcp_rcv.style.background="#fff"; document.component.tcp_rcv.disabled=false; document.component.tcp_port.style.background="#fff"; document.component.tcp_port.disabled=false; - - document.component.snmp_version.style.background="#ddd !important"; + + document.component.snmp_version.style.background="#ddd "; document.component.snmp_version.disabled=true; - document.component.snmp3_auth_user.style.background="#ddd !important"; + document.component.snmp3_auth_user.style.background="#ddd "; document.component.snmp3_auth_user.disabled=true; - document.component.snmp3_auth_pass.background="#ddd !important"; + document.component.snmp3_auth_pass.background="#ddd "; document.component.snmp3_auth_pass.disabled=true; - document.component.snmp3_privacy_method.style.background="#ddd !important"; + document.component.snmp3_privacy_method.style.background="#ddd "; document.component.snmp3_privacy_method.disabled=true; - document.component.snmp3_privacy_pass.style.background="#ddd !important"; + document.component.snmp3_privacy_pass.style.background="#ddd "; document.component.snmp3_privacy_pass.disabled=true; - document.component.snmp3_auth_method.style.background="#ddd !important"; + document.component.snmp3_auth_method.style.background="#ddd "; document.component.snmp3_auth_method.disabled=true; - document.component.snmp3_security_level.style.background="#ddd !important"; + document.component.snmp3_security_level.style.background="#ddd "; document.component.snmp3_security_level.disabled=true; + + document.component.command_text.style.background="#ddd"; + document.component.command_text.style.disabled=true; + document.component.command_credential_identifier.style.background="#ddd"; + document.component.command_credential_identifier.disabled=true; + document.component.command_os.style.background="#ddd"; + document.component.command_os.disabled=true; } } @@ -470,7 +577,7 @@ $(document).ready (function () { } }); }); - + $("#left").click (function () { jQuery.each($("select[name='id_tag_selected[]'] option:selected"), function (key, value) { tag_name = $(value).html(); @@ -485,38 +592,38 @@ $(document).ready (function () { } }); }); - + $("#submit-crt").click(function () { $('#id_tag_selected option').map(function() { $(this).prop('selected', true); }); }); - + $("#submit-upd").click(function () { $('#id_tag_selected option').map(function() { $(this).prop('selected', true); }); }); - + if ($("#snmp_version").val() == "3") { $("input[name=snmp3_auth_user]").css({backgroundColor: '#fff'}); $("input[name=snmp3_auth_user]").removeAttr('disabled'); - + $("input[name=snmp3_auth_pass]").css({backgroundColor: '#fff'}); $("input[name=snmp3_auth_pass]").removeAttr('disabled'); - + $("#snmp3_privacy_method").css({backgroundColor: '#fff'}); $("#snmp3_privacy_method").removeAttr('disabled'); - + $("input[name=snmp3_privacy_pass]").css({backgroundColor: '#fff'}); $("input[name=snmp3_privacy_pass]").removeAttr('disabled'); - + $("#snmp3_auth_method").css({backgroundColor: '#fff'}); $("#snmp3_auth_method").removeAttr('disabled'); - + $("#snmp3_security_level").css({backgroundColor: '#fff'}); $("#snmp3_security_level").removeAttr('disabled'); - + $("input[name=active_snmp_v3]").val(1); $("input[name=snmp_community]").css({backgroundColor: '#ddd'}); $("input[name=snmp_community]").attr("disabled",true); @@ -525,49 +632,47 @@ $(document).ready (function () { $("input[name=snmp3_auth_user]").val(""); $("input[name=snmp3_auth_user]").css({backgroundColor: '#ddd'}); $("input[name=snmp3_auth_user]").attr("disabled", true); - + $("input[name=snmp3_auth_pass]").val(""); $("input[name=snmp3_auth_pass]").css({backgroundColor: '#ddd'}); $("input[name=snmp3_auth_pass]").attr("disabled", true); - + $("#snmp3_privacy_method").css({backgroundColor: '#ddd'}); $("#snmp3_privacy_method").attr("disabled", true); - + $("input[name=snmp3_privacy_pass]").val(""); $("input[name=snmp3_privacy_pass]").css({backgroundColor: '#ddd'}); $("input[name=snmp3_privacy_pass]").attr("disabled", true); - + $("#snmp3_auth_method").css({backgroundColor: '#ddd'}); $("#snmp3_auth_method").attr("disabled", true); - + $("#snmp3_security_level").css({backgroundColor: '#ddd'}); $("#snmp3_security_level").attr("disabled", true); - + $("input[name=active_snmp_v3]").val(0); - $("input[name=snmp_community]").css({backgroundColor: '#fff'}); - $("input[name=snmp_community]").removeAttr('disabled'); } - + $("#snmp_version").change(function () { if (this.value == "3") { $("input[name=snmp3_auth_user]").css({backgroundColor: '#fff'}); $("input[name=snmp3_auth_user]").removeAttr('disabled'); - + $("input[name=snmp3_auth_pass]").css({backgroundColor: '#fff'}); $("input[name=snmp3_auth_pass]").removeAttr('disabled'); - + $("#snmp3_privacy_method").css({backgroundColor: '#fff'}); $("#snmp3_privacy_method").removeAttr('disabled'); - + $("input[name=snmp3_privacy_pass]").css({backgroundColor: '#fff'}); $("input[name=snmp3_privacy_pass]").removeAttr('disabled'); - + $("#snmp3_auth_method").css({backgroundColor: '#fff'}); $("#snmp3_auth_method").removeAttr('disabled'); - + $("#snmp3_security_level").css({backgroundColor: '#fff'}); $("#snmp3_security_level").removeAttr('disabled'); - + $("input[name=active_snmp_v3]").val(1); $("input[name=snmp_community]").css({backgroundColor: '#ddd'}); $("input[name=snmp_community]").attr("disabled",true); @@ -576,50 +681,50 @@ $(document).ready (function () { $("input[name=snmp3_auth_user]").val(""); $("input[name=snmp3_auth_user]").css({backgroundColor: '#ddd'}); $("input[name=snmp3_auth_user]").attr("disabled", true); - + $("input[name=snmp3_auth_pass]").val(""); $("input[name=snmp3_auth_pass]").css({backgroundColor: '#ddd'}); $("input[name=snmp3_auth_pass]").attr("disabled", true); - + $("#snmp3_privacy_method").css({backgroundColor: '#ddd'}); $("#snmp3_privacy_method").attr("disabled", true); - + $("input[name=snmp3_privacy_pass]").val(""); $("input[name=snmp3_privacy_pass]").css({backgroundColor: '#ddd'}); $("input[name=snmp3_privacy_pass]").attr("disabled", true); - + $("#snmp3_auth_method").css({backgroundColor: '#ddd'}); $("#snmp3_auth_method").attr("disabled", true); - + $("#snmp3_security_level").css({backgroundColor: '#ddd'}); $("#snmp3_security_level").attr("disabled", true); - + $("input[name=active_snmp_v3]").val(0); $("input[name=snmp_community]").css({backgroundColor: '#fff'}); $("input[name=snmp_community]").removeAttr('disabled'); } }); - + $("#type"). change(function () { if ($("#snmp_version").val() == "3") { $("input[name=snmp3_auth_user]").css({backgroundColor: '#fff'}); $("input[name=snmp3_auth_user]").removeAttr('disabled'); - + $("input[name=snmp3_auth_pass]").css({backgroundColor: '#fff'}); $("input[name=snmp3_auth_pass]").removeAttr('disabled'); - + $("#snmp3_privacy_method").css({backgroundColor: '#fff'}); $("#snmp3_privacy_method").removeAttr('disabled'); - + $("input[name=snmp3_privacy_pass]").css({backgroundColor: '#fff'}); $("input[name=snmp3_privacy_pass]").removeAttr('disabled'); - + $("#snmp3_auth_method").css({backgroundColor: '#fff'}); $("#snmp3_auth_method").removeAttr('disabled'); - + $("#snmp3_security_level").css({backgroundColor: '#fff'}); $("#snmp3_security_level").removeAttr('disabled'); - + $("input[name=active_snmp_v3]").val(1); $("input[name=snmp_community]").css({backgroundColor: '#ddd'}); $("input[name=snmp_community]").attr("disabled",true); @@ -628,30 +733,28 @@ $(document).ready (function () { $("input[name=snmp3_auth_user]").val(""); $("input[name=snmp3_auth_user]").css({backgroundColor: '#ddd'}); $("input[name=snmp3_auth_user]").attr("disabled", true); - + $("input[name=snmp3_auth_pass]").val(""); $("input[name=snmp3_auth_pass]").css({backgroundColor: '#ddd'}); $("input[name=snmp3_auth_pass]").attr("disabled", true); - + $("#snmp3_privacy_method").css({backgroundColor: '#ddd'}); $("#snmp3_privacy_method").attr("disabled", true); - + $("input[name=snmp3_privacy_pass]").val(""); $("input[name=snmp3_privacy_pass]").css({backgroundColor: '#ddd'}); $("input[name=snmp3_privacy_pass]").attr("disabled", true); - + $("#snmp3_auth_method").css({backgroundColor: '#ddd'}); $("#snmp3_auth_method").attr("disabled", true); - + $("#snmp3_security_level").css({backgroundColor: '#ddd'}); $("#snmp3_security_level").attr("disabled", true); - + $("input[name=active_snmp_v3]").val(0); - $("input[name=snmp_community]").css({backgroundColor: '#fff'}); - $("input[name=snmp_community]").removeAttr('disabled'); } }); - + $("#snmp_version" ).trigger("change"); }); diff --git a/pandora_console/godmode/modules/manage_network_components_form_common.php b/pandora_console/godmode/modules/manage_network_components_form_common.php index 2a55efb1dd..ed46957725 100644 --- a/pandora_console/godmode/modules/manage_network_components_form_common.php +++ b/pandora_console/godmode/modules/manage_network_components_form_common.php @@ -77,7 +77,7 @@ $sql = sprintf( 'SELECT id_tipo, descripcion FROM ttipo_modulo WHERE categoria IN (%s) - ORDER BY descripcion', + ORDER BY id_tipo ASC', implode(',', $categories) ); $table->data[1][1] = html_print_select_from_sql( diff --git a/pandora_console/godmode/modules/manage_network_components_form_network.php b/pandora_console/godmode/modules/manage_network_components_form_network.php index 0f39406ce9..addf57e05b 100755 --- a/pandora_console/godmode/modules/manage_network_components_form_network.php +++ b/pandora_console/godmode/modules/manage_network_components_form_network.php @@ -1,17 +1,32 @@ <?php +/** + * Extension to manage a list of gateways and the node address where they should + * point to. + * + * @category Extensions + * @package Pandora FMS + * @subpackage Community + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * Copyright (c) 2005-2019 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 for 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. + * ============================================================================ + */ -// Pandora FMS - http://pandorafms.com -// ================================================== -// Copyright (c) 2005-2010 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 for 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. -// Load global vars global $config; check_login(); @@ -55,32 +70,94 @@ push_table_row($data, 'snmp_port'); $data = []; $data[0] = __('SNMP Enterprise String'); -$data[1] = html_print_input_text('snmp_oid', $snmp_oid, '', 30, 400, true); -// $table->colspan['snmp_2'][1] = 3; +$data[1] = html_print_input_text( + 'snmp_oid', + $snmp_oid, + '', + 30, + 400, + true +); + $data[2] = __('SNMP community'); -$data[3] = html_print_input_text('snmp_community', $snmp_community, '', 15, 60, true); +$data[3] = html_print_input_text( + 'snmp_community', + $snmp_community, + '', + 15, + 60, + true +); push_table_row($data, 'snmp_2'); $data = []; $data[0] = __('Auth user'); -$data[1] = html_print_input_text('snmp3_auth_user', $snmp3_auth_user, '', 15, 60, true); +$data[1] = html_print_input_text( + 'snmp3_auth_user', + $snmp3_auth_user, + '', + 15, + 60, + true +); $data[2] = __('Auth password'); -$data[3] = html_print_input_password('snmp3_auth_pass', $snmp3_auth_pass, '', 15, 60, true); -$data[3] .= html_print_input_hidden_extended('active_snmp_v3', 0, 'active_snmp_v3_mncfn', true); +$data[3] = html_print_input_password( + 'snmp3_auth_pass', + $snmp3_auth_pass, + '', + 15, + 60, + true +); +$data[3] .= html_print_input_hidden_extended( + 'active_snmp_v3', + 0, + 'active_snmp_v3_mncfn', + true +); push_table_row($data, 'field_snmpv3_row1'); $data = []; $data[0] = __('Privacy method'); -$data[1] = html_print_select(['DES' => __('DES'), 'AES' => __('AES')], 'snmp3_privacy_method', $snmp3_privacy_method, '', '', '', true); +$data[1] = html_print_select( + [ + 'DES' => __('DES'), + 'AES' => __('AES'), + ], + 'snmp3_privacy_method', + $snmp3_privacy_method, + '', + '', + '', + true +); $data[2] = __('Privacy pass'); -$data[3] = html_print_input_password('snmp3_privacy_pass', $snmp3_privacy_pass, '', 15, 60, true); +$data[3] = html_print_input_password( + 'snmp3_privacy_pass', + $snmp3_privacy_pass, + '', + 15, + 60, + true +); push_table_row($data, 'field_snmpv3_row2'); $data = []; $data[0] = __('Auth method'); -$data[1] = html_print_select(['MD5' => __('MD5'), 'SHA' => __('SHA')], 'snmp3_auth_method', $snmp3_auth_method, '', '', '', true); +$data[1] = html_print_select( + [ + 'MD5' => __('MD5'), + 'SHA' => __('SHA'), + ], + 'snmp3_auth_method', + $snmp3_auth_method, + '', + '', + '', + true +); $data[2] = __('Security level'); $data[3] = html_print_select( [ @@ -110,12 +187,11 @@ $data[1] = html_print_extended_select_for_post_process( false, true ); -$data[2] = $data[3] = ''; +$data[2] = ''; +$data[3] = ''; push_table_row($data, 'field_process'); - - -// Advanced stuff +// Advanced stuff. $data = []; $data[0] = __('TCP send'); $data[1] = html_print_textarea('tcp_send', 2, 65, $tcp_send, '', true); @@ -129,6 +205,64 @@ $data[1] = html_print_textarea('tcp_rcv', 2, 65, $tcp_rcv, '', true); $table->colspan['tcp_receive'][1] = 3; push_table_row($data, 'tcp_receive'); + +$data = []; +$data[0] = __('Command'); +$data[1] = html_print_input_text_extended( + 'command_text', + $command_text, + 'command_text', + '', + 100, + 10000, + $disabledBecauseInPolicy, + '', + $largeClassDisabledBecauseInPolicy, + true +); +$table->colspan['row-cmd-row-1'][1] = 3; +push_table_row($data, 'row-cmd-row-1'); + +require_once $config['homedir'].'/include/class/CredentialStore.class.php'; +$array_credential_identifier = CredentialStore::getKeys(); + +$data[0] = __('Credential identifier'); +$data[1] = html_print_select( + $array_credential_identifier, + 'command_credential_identifier', + $command_credential_identifier, + '', + __('None'), + '', + true, + false, + false, + '', + $disabledBecauseInPolicy +); + +$array_os = [ + 'inherited' => __('Inherited'), + 'linux' => __('Linux'), + 'windows' => __('Windows'), +]; + +$data[2] = __('Target OS'); +$data[3] = html_print_select( + $array_os, + 'command_os', + $command_os, + '', + '', + '', + true, + false, + false, + '', + $disabledBecauseInPolicy +); + +push_table_row($data, 'row-cmd-row-2'); ?> <script type="text/javascript"> @@ -140,7 +274,7 @@ push_table_row($data, 'tcp_receive'); validate_post_process(); }); }); - + function validate_post_process() { var post_process = $("#text-post_process").val(); if (post_process != undefined){ From 78643b2b997b10a536fbbbfdd86c13a20521a91f Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Thu, 10 Oct 2019 17:54:10 +0200 Subject: [PATCH 07/16] updated field where target_os is stored --- pandora_server/lib/PandoraFMS/NetworkServer.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_server/lib/PandoraFMS/NetworkServer.pm b/pandora_server/lib/PandoraFMS/NetworkServer.pm index a6944c2fa6..675e78ef0b 100644 --- a/pandora_server/lib/PandoraFMS/NetworkServer.pm +++ b/pandora_server/lib/PandoraFMS/NetworkServer.pm @@ -468,7 +468,7 @@ sub exec_network_module ($$$$) { my $tcp_rcv = $module->{'tcp_rcv'}; my $timeout = $module->{'max_timeout'}; my $retries = $module->{'max_retries'}; - my $target_os = $module->{'custom_integer_1'}; + my $target_os = $module->{'custom_string_2'}; if (!defined($target_os) || "$target_os" eq '0') { $target_os = $agent_row->{'id_os'}; From 4fedfe92fcb22f92b86453561ca81b3441cf3171 Mon Sep 17 00:00:00 2001 From: Daniel Barbero <daniel.barbero@artica.es> Date: Fri, 11 Oct 2019 09:39:20 +0200 Subject: [PATCH 08/16] fix is enterprise --- pandora_console/godmode/agentes/module_manager_editor.php | 5 ++++- .../godmode/modules/manage_network_components_form.php | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pandora_console/godmode/agentes/module_manager_editor.php b/pandora_console/godmode/agentes/module_manager_editor.php index bf51f2b0fe..d3ff659ff0 100644 --- a/pandora_console/godmode/agentes/module_manager_editor.php +++ b/pandora_console/godmode/agentes/module_manager_editor.php @@ -575,8 +575,11 @@ switch ($moduletype) { 3, 4, 5, - 10, ]; + if (enterprise_installed()) { + $categories[] = 10; + } + include 'module_manager_editor_common.php'; include 'module_manager_editor_network.php'; break; diff --git a/pandora_console/godmode/modules/manage_network_components_form.php b/pandora_console/godmode/modules/manage_network_components_form.php index 114be6a969..1ee435f57a 100644 --- a/pandora_console/godmode/modules/manage_network_components_form.php +++ b/pandora_console/godmode/modules/manage_network_components_form.php @@ -264,8 +264,11 @@ if ($id_component_type == 6) { 3, 4, 5, - 10, ]; + if (enterprise_installed()) { + $categories[] = 10; + } + include $config['homedir'].'/godmode/modules/manage_network_components_form_common.php'; include $config['homedir'].'/godmode/modules/manage_network_components_form_network.php'; } else { From 4c6d924495cecf89d84dd19c1727194ae252ac8c Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Fri, 11 Oct 2019 12:50:29 +0200 Subject: [PATCH 09/16] Review remote execution modules --- .../godmode/agentes/module_manager_editor_network.php | 2 +- .../godmode/modules/manage_network_components_form_network.php | 2 +- pandora_server/lib/PandoraFMS/NetworkServer.pm | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pandora_console/godmode/agentes/module_manager_editor_network.php b/pandora_console/godmode/agentes/module_manager_editor_network.php index 76bbf50c47..a5763e101a 100644 --- a/pandora_console/godmode/agentes/module_manager_editor_network.php +++ b/pandora_console/godmode/agentes/module_manager_editor_network.php @@ -447,7 +447,7 @@ $table_simple->colspan['row-cmd-row-1'][1] = 3; push_table_simple($data, 'row-cmd-row-1'); require_once $config['homedir'].'/include/class/CredentialStore.class.php'; -$array_credential_identifier = CredentialStore::getKeys(); +$array_credential_identifier = CredentialStore::getKeys('CUSTOM'); $data[0] = __('Credential identifier'); $data[1] = html_print_select( diff --git a/pandora_console/godmode/modules/manage_network_components_form_network.php b/pandora_console/godmode/modules/manage_network_components_form_network.php index addf57e05b..056e355814 100755 --- a/pandora_console/godmode/modules/manage_network_components_form_network.php +++ b/pandora_console/godmode/modules/manage_network_components_form_network.php @@ -224,7 +224,7 @@ $table->colspan['row-cmd-row-1'][1] = 3; push_table_row($data, 'row-cmd-row-1'); require_once $config['homedir'].'/include/class/CredentialStore.class.php'; -$array_credential_identifier = CredentialStore::getKeys(); +$array_credential_identifier = CredentialStore::getKeys('CUSTOM'); $data[0] = __('Credential identifier'); $data[1] = html_print_select( diff --git a/pandora_server/lib/PandoraFMS/NetworkServer.pm b/pandora_server/lib/PandoraFMS/NetworkServer.pm index 675e78ef0b..98bda1f14d 100644 --- a/pandora_server/lib/PandoraFMS/NetworkServer.pm +++ b/pandora_server/lib/PandoraFMS/NetworkServer.pm @@ -468,7 +468,7 @@ sub exec_network_module ($$$$) { my $tcp_rcv = $module->{'tcp_rcv'}; my $timeout = $module->{'max_timeout'}; my $retries = $module->{'max_retries'}; - my $target_os = $module->{'custom_string_2'}; + my $target_os = pandora_get_os($dbh, $module->{'custom_string_2'}); if (!defined($target_os) || "$target_os" eq '0') { $target_os = $agent_row->{'id_os'}; From 0abbcb4150a814fd0779a578a01def9894efcbe9 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Fri, 11 Oct 2019 13:54:00 +0200 Subject: [PATCH 10/16] minor fix inherited os selection remote_execution_modules --- pandora_server/lib/PandoraFMS/NetworkServer.pm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pandora_server/lib/PandoraFMS/NetworkServer.pm b/pandora_server/lib/PandoraFMS/NetworkServer.pm index 98bda1f14d..6f781b55aa 100644 --- a/pandora_server/lib/PandoraFMS/NetworkServer.pm +++ b/pandora_server/lib/PandoraFMS/NetworkServer.pm @@ -470,7 +470,9 @@ sub exec_network_module ($$$$) { my $retries = $module->{'max_retries'}; my $target_os = pandora_get_os($dbh, $module->{'custom_string_2'}); - if (!defined($target_os) || "$target_os" eq '0') { + if ($module->{'custom_string_2'} eq "inherited" ) { + $target_os = $agent_row->{'id_os'}; + } elsif (!defined($target_os) || "$target_os" eq '0') { $target_os = $agent_row->{'id_os'}; } From d6681cedd126866437fc3a0b11cf9dbf3c9b82f8 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Mon, 28 Oct 2019 12:18:13 +0100 Subject: [PATCH 11/16] 33 => 34 --- pandora_console/extras/mr/34.sql | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 pandora_console/extras/mr/34.sql diff --git a/pandora_console/extras/mr/34.sql b/pandora_console/extras/mr/34.sql new file mode 100644 index 0000000000..eeca8ed5d7 --- /dev/null +++ b/pandora_console/extras/mr/34.sql @@ -0,0 +1,9 @@ +START TRANSACTION; + +INSERT INTO `ttipo_modulo` VALUES +(34,'remote_cmd', 10, 'Remote execution, numeric data', 'mod_remote_cmd.png'), +(35,'remote_cmd_proc', 10, 'Remote execution, boolean data', 'mod_remote_cmd_proc.png'), +(36,'remote_cmd_string', 10, 'Remote execution, alphanumeric data', 'mod_remote_cmd_string.png'), +(37,'remote_cmd_inc', 10, 'Remote execution, incremental data', 'mod_remote_cmd_inc.png'); + +COMMIT; \ No newline at end of file From 74007ebf7013eefed636d388ba02fad1510bce9b Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Mon, 28 Oct 2019 12:18:56 +0100 Subject: [PATCH 12/16] 33 => 34, cleanup --- pandora_console/extras/mr/33.sql | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 pandora_console/extras/mr/33.sql diff --git a/pandora_console/extras/mr/33.sql b/pandora_console/extras/mr/33.sql deleted file mode 100644 index eeca8ed5d7..0000000000 --- a/pandora_console/extras/mr/33.sql +++ /dev/null @@ -1,9 +0,0 @@ -START TRANSACTION; - -INSERT INTO `ttipo_modulo` VALUES -(34,'remote_cmd', 10, 'Remote execution, numeric data', 'mod_remote_cmd.png'), -(35,'remote_cmd_proc', 10, 'Remote execution, boolean data', 'mod_remote_cmd_proc.png'), -(36,'remote_cmd_string', 10, 'Remote execution, alphanumeric data', 'mod_remote_cmd_string.png'), -(37,'remote_cmd_inc', 10, 'Remote execution, incremental data', 'mod_remote_cmd_inc.png'); - -COMMIT; \ No newline at end of file From 7d5b845e1fa213d10718f39a12d2d84cf2d243b1 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Mon, 28 Oct 2019 18:37:01 +0100 Subject: [PATCH 13/16] minor fixes --- .../godmode/agentes/module_manager_editor.php | 39 +++++++++++++++++++ .../include/javascript/pandora_modules.js | 22 +++++++---- 2 files changed, 54 insertions(+), 7 deletions(-) diff --git a/pandora_console/godmode/agentes/module_manager_editor.php b/pandora_console/godmode/agentes/module_manager_editor.php index d3ff659ff0..9db5fa0ed3 100644 --- a/pandora_console/godmode/agentes/module_manager_editor.php +++ b/pandora_console/godmode/agentes/module_manager_editor.php @@ -57,11 +57,50 @@ if (is_ajax()) { $component['plugin_pass'] ); + if ($component['type'] >= 15 + && $component['type'] <= 18 + ) { + // New support for snmp v3. + $component['snmp_version'] = $component['tcp_send']; + $component['snmp3_auth_user'] = io_safe_output( + $component['plugin_user'] + ); + // Must use io_output_password. + $component['snmp3_auth_pass'] = io_safe_output( + $component['plugin_pass'] + ); + $component['snmp3_auth_method'] = io_safe_output( + $component['plugin_parameter'] + ); + $component['snmp3_privacy_method'] = io_safe_output( + $component['custom_string_1'] + ); + $component['snmp3_privacy_pass'] = io_safe_output( + $component['custom_string_2'] + ); + $component['snmp3_security_level'] = io_safe_output( + $component['custom_string_3'] + ); + } else if ($component['type'] >= 34 + && $component['type'] <= 37 + ) { + $component['command_text'] = io_safe_output( + $component['tcp_send'] + ); + $component['command_credential_identifier'] = io_safe_output( + $component['custom_string_1'] + ); + $component['command_os'] = io_safe_output( + $component['custom_string_2'] + ); + } + $component['str_warning'] = io_safe_output($component['str_warning']); $component['str_critical'] = io_safe_output($component['str_critical']); $component['warning_inverse'] = (bool) $component['warning_inverse']; $component['critical_inverse'] = (bool) $component['critical_inverse']; + hd($component, true); echo io_json_mb_encode($component); return; } diff --git a/pandora_console/include/javascript/pandora_modules.js b/pandora_console/include/javascript/pandora_modules.js index d04c3d2bd6..0ba0eb5515 100644 --- a/pandora_console/include/javascript/pandora_modules.js +++ b/pandora_console/include/javascript/pandora_modules.js @@ -541,13 +541,13 @@ function configure_modules_form() { } if (data["type"] >= 15 && data["type"] <= 18) { - $("#snmp_version").val(data["tcp_send"]); - $("#text-snmp3_auth_user").val(data["plugin_user"]); - $("#password-snmp3_auth_pass").val(data["plugin_pass"]); - $("#snmp3_auth_method").val(data["plugin_parameter"]); - $("#snmp3_privacy_method").val(data["custom_string_1"]); - $("#password-snmp3_privacy_pass").val(data["custom_string_2"]); - $("#snmp3_security_level").val(data["custom_string_3"]); + $("#snmp_version").val(data["snmp_version"]); + $("#text-snmp3_auth_user").val(data["snmp3_auth_user"]); + $("#password-snmp3_auth_pass").val(data["snmp3_auth_pass"]); + $("#snmp3_auth_method").val(data["snmp3_auth_method"]); + $("#snmp3_privacy_method").val(data["snmp3_privacy_method"]); + $("#password-snmp3_privacy_pass").val(data["snmp3_privacy_pass"]); + $("#snmp3_security_level").val(data["snmp3_security_level"]); if (data["tcp_send"] == "3") { $("#simple-field_snmpv3_row1").attr("style", ""); @@ -564,6 +564,14 @@ function configure_modules_form() { if (data["id_plugin"] != undefined) { $("#id_plugin").trigger("change"); } + + if (data["type"] >= 34 && data["type"] <= 37) { + $("#command_text").val(data["command_text"]); + $("#command_credential_identifier").val( + data["command_credential_identifier"] + ); + $("#command_os").val(data["command_os"]); + } }, "json" ); From 6d21f7161710ca54fd1e45bed358def33d7ac7d9 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Mon, 28 Oct 2019 18:38:56 +0100 Subject: [PATCH 14/16] removed trace --- pandora_console/godmode/agentes/module_manager_editor.php | 1 - 1 file changed, 1 deletion(-) diff --git a/pandora_console/godmode/agentes/module_manager_editor.php b/pandora_console/godmode/agentes/module_manager_editor.php index 9db5fa0ed3..874fe3a9d1 100644 --- a/pandora_console/godmode/agentes/module_manager_editor.php +++ b/pandora_console/godmode/agentes/module_manager_editor.php @@ -100,7 +100,6 @@ if (is_ajax()) { $component['warning_inverse'] = (bool) $component['warning_inverse']; $component['critical_inverse'] = (bool) $component['critical_inverse']; - hd($component, true); echo io_json_mb_encode($component); return; } From 2e629af15c7bf9c4ac4d7205886b2d86f467ef13 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Mon, 28 Oct 2019 20:43:36 +0100 Subject: [PATCH 15/16] Simplified log message avoid extra symbols "*" --- pandora_server/lib/PandoraFMS/Tools.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_server/lib/PandoraFMS/Tools.pm b/pandora_server/lib/PandoraFMS/Tools.pm index ba15f03d24..3a3e1904a0 100755 --- a/pandora_server/lib/PandoraFMS/Tools.pm +++ b/pandora_server/lib/PandoraFMS/Tools.pm @@ -657,7 +657,7 @@ sub logger ($$;$) { if (defined $parent_caller) { $parent_caller = (split '/', $parent_caller)[-1]; $parent_caller =~ s/\.[^.]+$//; - $parent_caller = " ** " . $parent_caller . " **: "; + $parent_caller = " " . $parent_caller . ": "; } else { $parent_caller = " "; } From f3fdcb4de030331546f3c6af34cf6765427219e3 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Tue, 29 Oct 2019 16:06:34 +0100 Subject: [PATCH 16/16] MR update --- pandora_console/extras/mr/{34.sql => 33.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pandora_console/extras/mr/{34.sql => 33.sql} (100%) diff --git a/pandora_console/extras/mr/34.sql b/pandora_console/extras/mr/33.sql similarity index 100% rename from pandora_console/extras/mr/34.sql rename to pandora_console/extras/mr/33.sql