diff --git a/pandora_console/include/ajax/snmp_browser.ajax.php b/pandora_console/include/ajax/snmp_browser.ajax.php index aa110f78ec..d057a8434c 100644 --- a/pandora_console/include/ajax/snmp_browser.ajax.php +++ b/pandora_console/include/ajax/snmp_browser.ajax.php @@ -25,6 +25,7 @@ if (is_ajax()) { $method = (string) get_parameter('method', ''); $action = (string) get_parameter('action', ''); $target_ip = (string) get_parameter('target_ip', ''); + $target_port = (string) get_parameter('target_port', ''); $community = (string) io_safe_output((get_parameter('community', ''))); $snmp_version = (string) get_parameter('snmp_browser_version', ''); $snmp3_auth_user = io_safe_output(get_parameter('snmp3_browser_auth_user')); @@ -63,7 +64,8 @@ if (is_ajax()) { $snmp3_privacy_method, $snmp3_privacy_pass, 'null', - $server_to_exec + $server_to_exec, + $target_port ); if (! is_array($snmp_tree)) { echo $snmp_tree; diff --git a/pandora_console/include/functions.php b/pandora_console/include/functions.php index b67374d27a..b9fe13dcec 100644 --- a/pandora_console/include/functions.php +++ b/pandora_console/include/functions.php @@ -2001,6 +2001,10 @@ function get_snmpwalk( ) { global $config; + if (empty($ip_target) === true) { + return []; + } + // Note: quick_print is ignored // Fix for snmp port if (!empty($snmp_port)) { diff --git a/pandora_console/include/functions_snmp_browser.php b/pandora_console/include/functions_snmp_browser.php index 6bb0a980aa..962bd9be4c 100644 --- a/pandora_console/include/functions_snmp_browser.php +++ b/pandora_console/include/functions_snmp_browser.php @@ -265,94 +265,43 @@ function snmp_browser_get_tree( $snmp3_privacy_method='', $snmp3_privacy_pass='', $snmp3_context_engine_id=null, - $server_to_exec=0 + $server_to_exec=0, + $target_port='' ) { global $config; - if ($server_to_exec != 0) { - $output = get_snmpwalk( - $target_ip, - $version, - $community, - $snmp3_auth_user, - $snmp3_security_level, - $snmp3_auth_method, - $snmp3_auth_pass, - $snmp3_privacy_method, - $snmp3_privacy_pass, - 0, - $starting_oid, - '', - $server_to_exec, - '', - '' - ); - } else { - switch ($version) { - case '1': - $snmp_version = SNMP::VERSION_1; - break; - - case '2': - $snmp_version = SNMP::VERSION_2C; - break; - - case '2c': - $snmp_version = SNMP::VERSION_2C; - break; - - case '3': - $snmp_version = SNMP::VERSION_3; - $community = $snmp3_auth_user; - break; - - default: - $snmp_version = SNMP::VERSION_2C; - break; - } - - $snmp_session = new SNMP($snmp_version, $target_ip, $community); - $snmp_session->oid_output_format = SNMP_OID_OUTPUT_MODULE; - - // Set security if SNMP Version is 3. - if ($snmp_version == SNMP::VERSION_3) { - $snmp_session->setSecurity( - $snmp3_security_level, - $snmp3_auth_method, - $snmp3_auth_pass, - $snmp3_privacy_method, - $snmp3_privacy_pass, - '', - $snmp3_context_engine_id - ); - } - - $mibs_dir = $config['homedir'].'/attachment/mibs'; - $_dir = opendir($mibs_dir); - - // Future. Recomemended: Use a global config limit of MIBs loaded. - while (($mib_file = readdir($_dir)) !== false) { - if ($mib_file == '..' || $mib_file == '.') { - continue; - } - - $rs = snmp_read_mib($mibs_dir.'/'.$mib_file); - if ($rs !== true) { - error_log('Failed while reading MIB file: '.$mib_file); - } - } - - closedir($_dir); - - $output = $snmp_session->walk($starting_oid); - if ($output == false) { - $output = $snmp_session->getError(); - $snmp_session->close(); - return $output; - } - - $snmp_session->close(); - } + $output = get_snmpwalk( + // Ip_target. + $target_ip, + // Snmp_version. + $version, + // Snmp_community. + $community, + // Snmp3_auth_user. + $snmp3_auth_user, + // Snmp3_security_level. + $snmp3_security_level, + // Snmp3_auth_method. + $snmp3_auth_method, + // Snmp3_auth_pass. + $snmp3_auth_pass, + // Snmp3_privacy_method. + $snmp3_privacy_method, + // Snmp3_privacy_pass. + $snmp3_privacy_pass, + // Quick_print. + 0, + // Base_oid. + $starting_oid, + // Snmp_port. + $target_port, + // Server_to_exec. + $server_to_exec, + // Extra_arguments. + '', + // Format. + '' + ); // Build the tree if output comes filled. if (empty($output) === false) { @@ -575,6 +524,7 @@ function snmp_browser_print_oid( $output = ''; // OID information table + $table = new StdClass(); $table->width = '100%'; $table->size = []; $table->data = []; @@ -725,15 +675,33 @@ function snmp_browser_print_container( $table->size = []; $table->data = []; - $table->data[0][0] = ''.__('Target IP').'   '; - $table->data[0][0] .= html_print_input_text( - 'target_ip', - get_parameter('target_ip', ''), - '', - 25, - 0, - true + $table->size[0] = '30%'; + + $table->data[0][0] = '
'.__('Target IP').'   '; + $table->data[0][0] .= html_print_input( + [ + 'type' => 'text', + 'name' => 'target_ip', + 'value' => get_parameter('target_ip', ''), + 'required' => true, + 'size' => 25, + 'maxlength' => 0, + 'return' => true, + ] ); + $table->data[0][0] .= '  '.__('Port').'  '; + $table->data[0][0] .= html_print_input( + [ + 'type' => 'number', + 'name' => 'target_port', + 'id' => 'target_port', + 'value' => get_parameter('target_port', 161), + 'required' => true, + 'return' => true, + ] + ); + $table->data[0][0] .= '
'; + $table->data[0][1] = ''.__('Community').'   '; $table->data[0][1] .= html_print_input_text( 'community', @@ -746,7 +714,7 @@ function snmp_browser_print_container( $table->data[0][2] = ''.__('Starting OID').'   '; $table->data[0][2] .= html_print_input_text( 'starting_oid', - get_parameter('starting_oid', '.1.3.6.1.2'), + get_parameter('starting_oid', '.1.3.6.1.2.1.2.2'), '', 25, 0, @@ -805,13 +773,16 @@ function snmp_browser_print_container( true ); - $table->data[1][2] = html_print_button( - __('Browse'), - 'browse', - false, - 'snmpBrowse()', - 'class="sub search" style="margin-top:0px;"', - true + $table->data[1][2] = html_print_input( + [ + 'type' => 'submit', + 'label' => __('Browse'), + 'name' => 'browse', + 'disabled' => false, + 'script' => 'snmpBrowse()', + 'attributes' => 'class="sub search" style="margin-top:0px;"', + 'return' => true, + ] ); // SNMP v3 options. @@ -1013,8 +984,9 @@ function snmp_browser_print_container( $output = '
'; $output .= '
'; $output .= '
'; + $output .= '
'; $output .= html_print_table($table, true); - $output .= '
'; + $output .= '
'; if (isset($snmp_version) === false) { $snmp_version = null; diff --git a/pandora_console/include/javascript/pandora_snmp_browser.js b/pandora_console/include/javascript/pandora_snmp_browser.js index e2d8d9f792..39f5688ee4 100644 --- a/pandora_console/include/javascript/pandora_snmp_browser.js +++ b/pandora_console/include/javascript/pandora_snmp_browser.js @@ -1,3 +1,4 @@ +/* globals $,jQuery */ // Load the SNMP tree via AJAX function snmpBrowse() { // Empty the SNMP tree @@ -15,6 +16,7 @@ function snmpBrowse() { // Read the target IP and community var target_ip = $("#text-target_ip").val(); + var target_port = $("#target_port").val(); var community = $("#text-community").val(); var starting_oid = $("#text-starting_oid").val(); var snmp_version = $("#snmp_browser_version").val(); @@ -25,13 +27,13 @@ function snmpBrowse() { var snmp3_auth_pass = $("#password-snmp3_browser_auth_pass").val(); var snmp3_privacy_method = $("#snmp3_browser_privacy_method").val(); var snmp3_privacy_pass = $("#password-snmp3_browser_privacy_pass").val(); - var server_to_exec = $("#server_to_exec").val(); var ajax_url = $("#hidden-ajax_url").val(); // Prepare the AJAX call var params = {}; params["target_ip"] = target_ip; + params["target_port"] = target_port; params["community"] = community; params["starting_oid"] = starting_oid; params["snmp_browser_version"] = snmp_version; @@ -52,7 +54,6 @@ function snmpBrowse() { type: "POST", url: (action = ajax_url), async: true, - timeout: 120000, success: function(data) { // Hide the spinner $("#spinner").css("display", "none"); @@ -62,6 +63,9 @@ function snmpBrowse() { // Manage click and select events. snmp_browser_events_manage(); + }, + error: function(e) { + $("#snmp_browser").html(e); } }); } @@ -499,6 +503,7 @@ function checkSNMPVersion() { function snmpBrowserWindow() { // Keep elements in the form and the SNMP browser synced $("#text-target_ip").val($("#text-ip_target").val()); + $("#target_port").val($("#text-tcp_port").val()); $("#text-community").val($("#text-snmp_community").val()); $("#snmp_browser_version").val($("#snmp_version").val()); $("#text-snmp3_browser_auth_user").val($("#text-snmp3_auth_user").val()); @@ -525,7 +530,7 @@ function snmpBrowserWindow() { opacity: 0.5, background: "black" }, - width: 920, + width: 1000, height: 500 }); }