diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index b201f03df1..8e4b6eabf2 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.742-200116 +Version: 7.0NG.742-200119 Architecture: all Priority: optional Section: admin diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh index 667a916eae..25d4781206 100644 --- a/pandora_agents/unix/DEBIAN/make_deb_package.sh +++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.742-200116" +pandora_version="7.0NG.742-200119" echo "Test if you has the tools for to make the packages." whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index 901a25684c..fc0200ef7a 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -55,7 +55,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.742'; -use constant AGENT_BUILD => '200116'; +use constant AGENT_BUILD => '200119'; # Agent log default file size maximum and instances use constant DEFAULT_MAX_LOG_SIZE => 600000; diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index a5ba25309f..b782da8800 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.742 -%define release 200116 +%define release 200119 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index 9391a8fe18..b213ca6904 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.742 -%define release 200116 +%define release 200119 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index 33b85b6879..c83a314d88 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.742" -PI_BUILD="200116" +PI_BUILD="200119" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 462a905312..12e43eed50 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{200116} +{200119} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 1b90cd4356..5be28ff485 100644 --- a/pandora_agents/win32/pandora.cc +++ b/pandora_agents/win32/pandora.cc @@ -30,7 +30,7 @@ using namespace Pandora; using namespace Pandora_Strutils; #define PATH_SIZE _MAX_PATH+1 -#define PANDORA_VERSION ("7.0NG.742(Build 200116)") +#define PANDORA_VERSION ("7.0NG.742(Build 200119)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 069494b28e..a69a12a86c 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Artica ST" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.742(Build 200116))" + VALUE "ProductVersion", "(7.0NG.742(Build 200119))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index a21b22de5f..715ea3edeb 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.742-200116 +Version: 7.0NG.742-200119 Architecture: all Priority: optional Section: admin diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh index dbe006c507..38b2c64451 100644 --- a/pandora_console/DEBIAN/make_deb_package.sh +++ b/pandora_console/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.742-200116" +pandora_version="7.0NG.742-200119" package_pear=0 package_pandora=1 diff --git a/pandora_console/extras/mr/35.sql b/pandora_console/extras/mr/35.sql index 3a002f44f8..4a5f14525f 100644 --- a/pandora_console/extras/mr/35.sql +++ b/pandora_console/extras/mr/35.sql @@ -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; 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 bbc07ad08c..009fe931b4 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 @@ -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` diff --git a/pandora_console/general/mysqlerr.php b/pandora_console/general/mysqlerr.php index 4f28f42c84..539508e7ef 100644 --- a/pandora_console/general/mysqlerr.php +++ b/pandora_console/general/mysqlerr.php @@ -95,7 +95,12 @@ background:black;opacity:0.1;left:0px;top:0px;width:100%;height:100%; /images/mysqlerr.png'>
@@ -134,4 +139,4 @@ background:black;opacity:0.1;left:0px;top:0px;width:100%;height:100%;
- \ No newline at end of file + diff --git a/pandora_console/godmode/agentes/agent_wizard.php b/pandora_console/godmode/agentes/agent_wizard.php index 949e1c3a94..c04edf4d66 100644 --- a/pandora_console/godmode/agentes/agent_wizard.php +++ b/pandora_console/godmode/agentes/agent_wizard.php @@ -45,3 +45,22 @@ switch ($wizard_section) { */ require 'agent_wizard.'.$wizard_section.'.php'; + +?> + \ No newline at end of file diff --git a/pandora_console/godmode/agentes/agent_wizard.snmp_explorer.php b/pandora_console/godmode/agentes/agent_wizard.snmp_explorer.php index fbb03c6e02..21cb4eb378 100644 --- a/pandora_console/godmode/agentes/agent_wizard.snmp_explorer.php +++ b/pandora_console/godmode/agentes/agent_wizard.snmp_explorer.php @@ -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] = ''.__('Server to execute command').''; -$table->data[1][3] = html_print_select($servers_to_exec, 'server_to_exec', $server_to_exec, '', '', '', true); +$table->data[1][2] = ''.__('Server to execute command').''.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 = ''; $(document).ready (function () { + $('#server_to_exec option').trigger('change'); + $("#walk_form").submit(function() { $("#oid_loading").show (); }); diff --git a/pandora_console/godmode/agentes/agent_wizard.snmp_interfaces_explorer.php b/pandora_console/godmode/agentes/agent_wizard.snmp_interfaces_explorer.php index 3eb404340e..40c4e7fc84 100644 --- a/pandora_console/godmode/agentes/agent_wizard.snmp_interfaces_explorer.php +++ b/pandora_console/godmode/agentes/agent_wizard.snmp_interfaces_explorer.php @@ -492,7 +492,7 @@ if (enterprise_installed()) { } } -$table->data[1][2] = ''.__('Server to execute command').''; +$table->data[1][2] = ''.__('Server to execute command').''.ui_print_help_icon('agent_snmp_explorer_tab', true); $table->data[1][2] .= ''.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:').''; $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(); - } - -} - /* ]]> */ diff --git a/pandora_console/godmode/agentes/agent_wizard.wmi_explorer.php b/pandora_console/godmode/agentes/agent_wizard.wmi_explorer.php index 5d889178bb..c7eb716e80 100644 --- a/pandora_console/godmode/agentes/agent_wizard.wmi_explorer.php +++ b/pandora_console/godmode/agentes/agent_wizard.wmi_explorer.php @@ -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] = ''.__('Server to execute command').''; +$table->data[2][0] = ''.__('Server to execute command').''.ui_print_help_icon('agent_snmp_explorer_tab', true); $table->data[2][1] = html_print_select( $servers_to_exec, 'server_to_exec', diff --git a/pandora_console/godmode/servers/modificar_server.php b/pandora_console/godmode/servers/modificar_server.php index 66c14ee89f..37c8aac797 100644 --- a/pandora_console/godmode/servers/modificar_server.php +++ b/pandora_console/godmode/servers/modificar_server.php @@ -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 '
'; 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) { diff --git a/pandora_console/godmode/servers/servers.build_table.php b/pandora_console/godmode/servers/servers.build_table.php index 0006fc3e9b..668ef26f0c 100644 --- a/pandora_console/godmode/servers/servers.build_table.php +++ b/pandora_console/godmode/servers/servers.build_table.php @@ -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] .= ' v' .. ''; switch ($server['type']) { case 'snmp': diff --git a/pandora_console/include/ajax/events.php b/pandora_console/include/ajax/events.php index 2a068e0214..7e11c16790 100644 --- a/pandora_console/include/ajax/events.php +++ b/pandora_console/include/ajax/events.php @@ -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) { diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index 391e652262..5303c50438 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -20,7 +20,7 @@ /** * Pandora build version and version */ -$build_version = 'PC200116'; +$build_version = 'PC200119'; $pandora_version = 'v7.0NG.742'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/include/functions.php b/pandora_console/include/functions.php index 830987dfa6..f33fa2c49c 100644 --- a/pandora_console/include/functions.php +++ b/pandora_console/include/functions.php @@ -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); } diff --git a/pandora_console/include/functions_snmp_browser.php b/pandora_console/include/functions_snmp_browser.php index dc423481f2..bb69eec319 100644 --- a/pandora_console/include/functions_snmp_browser.php +++ b/pandora_console/include/functions_snmp_browser.php @@ -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), diff --git a/pandora_console/install.php b/pandora_console/install.php index d42fc41a5f..e2e8e6a109 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
{"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->{"rcmd_timeout"} = 10; # Introduced on 7.0.740 + $pa_config->{"rcmd_timeout_bin"} = '/usr/bin/timeout'; # Introduced on 7.0.743 $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 @@ -806,6 +807,9 @@ sub pandora_load_config { elsif ($parametro =~ m/^rcmd_timeout\s+([0-9]*)/i) { $pa_config->{"rcmd_timeout"} = clean_blank($1); } + elsif ($parametro =~ m/^rcmd_timeout_bin\s(.*)/i) { + $pa_config->{"rcmd_timeout_bin"} = clean_blank($1); + } elsif ($parametro =~ m/^tcp_checks\s+([0-9]*)/i) { $pa_config->{"tcp_checks"} = clean_blank($1); } diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm index 04191063a6..14d61540cd 100644 --- a/pandora_server/lib/PandoraFMS/PluginTools.pm +++ b/pandora_server/lib/PandoraFMS/PluginTools.pm @@ -32,7 +32,7 @@ our @ISA = qw(Exporter); # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.742"; -my $pandora_build = "200116"; +my $pandora_build = "200119"; our $VERSION = $pandora_version." ".$pandora_build; our %EXPORT_TAGS = ( 'all' => [ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index 52d2982409..4d4c2a90b7 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.742 -%define release 200116 +%define release 200119 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index b0c0b3e120..c437a96145 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.742 -%define release 200116 +%define release 200119 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index cd6e05391a..b1dc221d0f 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.742" -PI_BUILD="200116" +PI_BUILD="200119" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 2a7b857f60..b51a121870 100644 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -34,7 +34,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.742 PS200116"; +my $version = "7.0NG.742 PS200119"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index d97ee4766c..4b86aedf56 100755 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -36,7 +36,7 @@ use Encode::Locale; Encode::Locale::decode_argv; # version: define current version -my $version = "7.0NG.742 PS200116"; +my $version = "7.0NG.742 PS200119"; # save program name for logging my $progname = basename($0);