Merge branch 'ent-5135-No-funciona-la-exploracion-SNMP-remota' into 'develop'

Added port option on server configuration to be used when connecting to execution server

See merge request artica/pandorafms!3012
This commit is contained in:
Daniel Rodriguez 2020-01-17 14:40:58 +01:00
commit 96eebe4310
12 changed files with 126 additions and 41 deletions

View File

@ -1,5 +1,6 @@
START TRANSACTION;
ALTER TABLE `tserver` ADD COLUMN `port` int(5) unsigned NOT NULL default 0;
ALTER TABLE `tmap` ADD COLUMN `id_group_map` INT(10) UNSIGNED NOT NULL default 0;
ALTER TABLE `tevent_filter` MODIFY `severity` TEXT NOT NULL;

View File

@ -1778,6 +1778,7 @@ ALTER TABLE tserver_export_data MODIFY `module_name` varchar(600) NOT NULL defau
-- Table `tserver`
-- ---------------------------------------------------------------------
ALTER TABLE tserver ADD COLUMN exec_proxy tinyint(1) UNSIGNED NOT NULL default 0;
ALTER TABLE `tserver` ADD COLUMN `port` int(5) unsigned NOT NULL default 0;
-- ---------------------------------------------------------------------
-- Table `tevent_response`

View File

@ -45,3 +45,22 @@ switch ($wizard_section) {
*/
require 'agent_wizard.'.$wizard_section.'.php';
?>
<script language="javascript" type="text/javascript">
function satellite_remote_warn(id_satellite, remote)
{
if(!remote)
{
$('#server_to_exec option[value='+id_satellite+']').prop('disabled', true);
$('#satellite_remote_tip').removeAttr("style").show();
}
else
{
$('#satellite_remote_tip').removeAttr("style").hide();
}
}
</script>

View File

@ -738,11 +738,16 @@ $servers_to_exec[0] = __('Local console');
if (enterprise_installed()) {
enterprise_include_once('include/functions_satellite.php');
$rows = get_proxy_servers(true);
$rows = get_proxy_servers();
// Check if satellite server has remote configuration enabled.
$satellite_remote = config_agents_has_remote_configuration($id_agent);
foreach ($rows as $row) {
if ($row['server_type'] != 13) {
$s_type = ' (Standard)';
} else {
$id_satellite = $row['id_server'];
$s_type = ' (Satellite)';
}
@ -750,8 +755,16 @@ if (enterprise_installed()) {
}
}
$table->data[1][2] = '<b>'.__('Server to execute command').'</b>';
$table->data[1][3] = html_print_select($servers_to_exec, 'server_to_exec', $server_to_exec, '', '', '', true);
$table->data[1][2] = '<b>'.__('Server to execute command').'</b>'.ui_print_help_icon('agent_snmp_explorer_tab', true);
$table->data[1][3] = html_print_select(
$servers_to_exec,
'server_to_exec',
$server_to_exec,
'satellite_remote_warn('.$id_satellite.','.$satellite_remote.')',
'',
'',
true
);
$snmp_versions['1'] = 'v. 1';
$snmp_versions['2'] = 'v. 2';
@ -1020,6 +1033,8 @@ ui_require_javascript_file('pandora_modules');
var separator = '<?php echo $separator; ?>';
$(document).ready (function () {
$('#server_to_exec option').trigger('change');
$("#walk_form").submit(function() {
$("#oid_loading").show ();
});

View File

@ -492,7 +492,7 @@ if (enterprise_installed()) {
}
}
$table->data[1][2] = '<b>'.__('Server to execute command').'</b>';
$table->data[1][2] = '<b>'.__('Server to execute command').'</b>'.ui_print_help_icon('agent_snmp_explorer_tab', true);
$table->data[1][2] .= '<span id=satellite_remote_tip>'.ui_print_help_tip(__('In order to use remote executions you need to enable remote execution in satellite server'), true, 'images/tip_help.png', false, 'display:').'</span>';
$table->data[1][4] = html_print_select(
$servers_to_exec,
@ -734,20 +734,5 @@ function snmp_changed_by_multiple_snmp (event, id_snmp, selected) {
"json");
}
function satellite_remote_warn(id_satellite, remote)
{
if(!remote)
{
$('#server_to_exec option[value='+id_satellite+']').prop('disabled', true);
$('#satellite_remote_tip').removeAttr("style").show();
}
else
{
$('#satellite_remote_tip').removeAttr("style").hide();
}
}
/* ]]> */
</script>

View File

@ -64,12 +64,22 @@ if ($wmiexplore) {
$processes_name_field = 1;
if (enterprise_installed() && (int) $server_to_exec != 0) {
$server_data = db_get_row('tserver', 'id_server', $server_to_exec);
exec(
'ssh pandora_exec_proxy@'.$server_data['ip_address']."
'".$wmi_processes."'",
$output,
$rc
);
if (empty($server_data['port'])) {
exec(
'ssh pandora_exec_proxy@'.$server_data['ip_address']."
'".$wmi_processes."'",
$output,
$rc
);
} else {
exec(
'ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address']."
'".$wmi_processes."'",
$output,
$rc
);
}
} else {
exec($wmi_processes, $output);
}
@ -110,12 +120,21 @@ if ($wmiexplore) {
'id_server',
$server_to_exec
);
if (empty($server_data['port'])) {
exec(
'ssh pandora_exec_proxy@'.$server_data['ip_address']."
'".$wmi_services."'",
'".$wmi_services."'",
$output,
$rc
);
} else {
exec(
'ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address']."
'".$wmi_services."'",
$output,
$rc
);
}
} else {
exec($wmi_services, $output);
}
@ -145,12 +164,22 @@ if ($wmiexplore) {
if (enterprise_installed() && (int) $server_to_exec != 0) {
$server_data = db_get_row('tserver', 'id_server', $server_to_exec);
exec(
'ssh pandora_exec_proxy@'.$server_data['ip_address']."
'".$wmi_disks."'",
$output,
$rc
);
if (empty($server_data['port'])) {
exec(
'ssh pandora_exec_proxy@'.$server_data['ip_address']."
'".$wmi_disks."'",
$output,
$rc
);
} else {
exec(
'ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address']."
'".$wmi_disks."'",
$output,
$rc
);
}
} else {
exec($wmi_disks, $output);
}
@ -469,7 +498,7 @@ if (enterprise_installed()) {
}
}
$table->data[2][0] = '<b>'.__('Server to execute command').'</b>';
$table->data[2][0] = '<b>'.__('Server to execute command').'</b>'.ui_print_help_icon('agent_snmp_explorer_tab', true);
$table->data[2][1] = html_print_select(
$servers_to_exec,
'server_to_exec',

View File

@ -32,7 +32,7 @@ if (isset($_GET['server'])) {
$id_server = get_parameter_get('server');
// Headers
ui_print_page_header(__('Update Server'), 'images/gm_servers.png', false, 'servers', true);
$sql = sprintf('SELECT name, ip_address, description, server_type, exec_proxy FROM tserver WHERE id_server = %d', $id_server);
$sql = sprintf('SELECT name, ip_address, description, server_type, exec_proxy, port FROM tserver WHERE id_server = %d', $id_server);
$row = db_get_row_sql($sql);
echo '<form name="servers" method="POST" action="index.php?sec=gservers&sec2=godmode/servers/modificar_server&update=1">';
html_print_input_hidden('server', $id_server);
@ -75,6 +75,14 @@ if (isset($_GET['server'])) {
__('Exec Server'),
html_print_checkbox('exec_proxy', 1, $row['exec_proxy'], true),
];
$port_number = empty($row['port']) ? '' : $row['port'];
$table->data[] = [
__('Port'),
html_print_input_text('port', $port_number, '', 10, 0, true).ui_print_help_tip(__('Leave blank to use SSH default port (22)'), true),
];
if ($row['exec_proxy']) {
$table->data[] = [
__('Check Exec Server'),
@ -136,11 +144,15 @@ if (isset($_GET['server'])) {
$description = get_parameter_post('description');
$id_server = get_parameter_post('server');
$exec_proxy = get_parameter_post('exec_proxy');
$port = get_parameter_post('port');
$port_number = empty($port) ? 0 : $port;
$values = [
'ip_address' => $address,
'description' => $description,
'exec_proxy' => $exec_proxy,
'port' => $port_number,
];
$result = db_process_sql_update('tserver', $values, ['id_server' => $id_server]);
if ($result !== false) {

View File

@ -101,6 +101,10 @@ foreach ($servers as $server) {
$data[2] .= ui_print_help_tip(__('This is a master server'), true);
}
if ($server['exec_proxy'] == 1) {
$data[2] .= html_print_image('images/star.png', true, ['title' => __('Exec server enabled')]);
}
// $data[2] .= '</span> <span style="font-size:8px;"> v' .. '</span>';
switch ($server['type']) {
case 'snmp':

View File

@ -956,7 +956,11 @@ if ($perform_event_response) {
break;
}
system('ssh pandora_exec_proxy@'.$server_data['ip_address'].' "'.$timeout_bin.' '.$command_timeout.' '.io_safe_output($command).' 2>&1"', $ret_val);
if (empty($server_data['port'])) {
system('ssh pandora_exec_proxy@'.$server_data['ip_address'].' "'.$timeout_bin.' '.$command_timeout.' '.io_safe_output($command).' 2>&1"', $ret_val);
} else {
system('ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address'].' "'.$timeout_bin.' '.$command_timeout.' '.io_safe_output($command).' 2>&1"', $ret_val);
}
}
} else {
switch (PHP_OS) {

View File

@ -1994,7 +1994,12 @@ function get_snmpwalk(
if (enterprise_installed()) {
if ($server_to_exec != 0) {
$server_data = db_get_row('tserver', 'id_server', $server_to_exec);
exec('ssh pandora_exec_proxy@'.$server_data['ip_address'].' "'.$command_str.'"', $output, $rc);
if (empty($server_data['port'])) {
exec('ssh pandora_exec_proxy@'.$server_data['ip_address'].' "'.$command_str.'"', $output, $rc);
} else {
exec('ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address'].' "'.$command_str.'"', $output, $rc);
}
} else {
exec($command_str, $output, $rc);
}

View File

@ -409,11 +409,20 @@ function snmp_browser_get_oid(
if ($server_to_exec != 0) {
$command_output = $snmptranslate_bin.' -m ALL -M +'.escapeshellarg($config['homedir'].'/attachment/mibs').' -Td '.escapeshellarg($oid);
exec(
'ssh pandora_exec_proxy@'.$server_data['ip_address'].' "'.$command_output.'"',
$translate_output,
$rc
);
if (empty($server_data['port'])) {
exec(
'ssh pandora_exec_proxy@'.$server_data['ip_address'].' "'.$command_output.'"',
$translate_output,
$rc
);
} else {
exec(
'ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address'].' "'.$command_output.'"',
$translate_output,
$rc
);
}
} else {
exec(
$snmptranslate_bin.' -m ALL -M +'.escapeshellarg($config['homedir'].'/attachment/mibs').' -Td '.escapeshellarg($oid),

View File

@ -1020,6 +1020,7 @@ CREATE TABLE IF NOT EXISTS `tserver` (
`server_keepalive` int(11) NOT NULL default 0,
`stat_utimestamp` bigint(20) NOT NULL default '0',
`exec_proxy` tinyint(1) UNSIGNED NOT NULL default 0,
`port` int(5) unsigned NOT NULL default 0,
PRIMARY KEY (`id_server`),
KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;