From b4e07c8ce72e7b54d113bbc424a086fc8da37e01 Mon Sep 17 00:00:00 2001 From: Jorge Rincon Date: Thu, 23 Nov 2023 17:31:11 +0100 Subject: [PATCH 1/3] #12067 Added easter egg, think green --- pandora_console/index.php | 142 ++++++++++++++++++ .../operation/agentes/group_view.php | 4 +- 2 files changed, 144 insertions(+), 2 deletions(-) diff --git a/pandora_console/index.php b/pandora_console/index.php index 4ca8f80a82..95641b313f 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -1667,5 +1667,147 @@ require 'include/php_to_js_values.php'; $(".submitButton").click(function(){ $("#"+this.id+" > .subIcon.cog").addClass("rotation"); }); + + // Easter egg think green. + let counter = 0; + $("#keywords").on("click", function(e) { + counter++; + let falEasternEgg = true; + if (counter == 5 && falEasternEgg == true) { + easterEggThinkGreen(); + } + }); }); + + function easterEggThinkGreen() { + // Agent detail. + $('#agent_list > tbody > tr').each(function(index, fila) { + var divId = $(fila).find('td:eq(5)').attr('id'); + var hasClassRed = $("#"+divId).children('b').children().next().hasClass('red'); + var hasClassGrey = $("#"+divId).children('b').children().next().hasClass('grey'); + if (hasClassRed === true || hasClassGrey === true) { + $("#"+divId).children('b').children().next().addClass('green'); + } + + var divStatus = $(fila).find('td:eq(6)').attr('id'); + $("#"+divStatus).find('div').attr('style', 'background: #82b92e;'); + }); + + // Agent main view. + const agentDetailsHeaderIcono = $('.agent_details_header > .icono_right').children('img'); + const statusImg = $(agentDetailsHeaderIcono).attr('src'); + if (statusImg !== undefined) { + if (statusImg.indexOf('critical') >= 0 || statusImg.indexOf('unknown') >= 0) { + $(agentDetailsHeaderIcono).attr('src', 'images/agent_ok.png'); + } + } + // Agent details bullets. + const agentDetailsBullets = $('.agent_details_bullets > #bullets_modules').children('div').children('div').attr('id'); + var hasClassRed = $("#"+agentDetailsBullets).hasClass('red_background'); + var hasClassGrey = $("#"+agentDetailsBullets).hasClass('grey_background'); + const elementChange = { + 'hasClassRed': hasClassRed, + 'hasClassGrey': hasClassGrey, + 'elementID' : agentDetailsBullets, + 'class' : true + } + setClassGreen(elementChange); + // Header list of modules + const headerList = $('.white_table_graph_header').children('span').children('div'); + var hasClassRed = $(headerList[5]).children('div').children('div').hasClass('red_background'); + var hasClassGrey = $(headerList[5]).children('div').children('div').hasClass('grey_background'); + elementChange.hasClassRed = hasClassRed; + elementChange.hasClassGrey = hasClassGrey; + elementChange.elementID = $(headerList[5]).children('div').children('div').attr('id'); + elementChange.class = true; + setClassGreen(elementChange); + + // List of modules table. + $('#table1 > tbody > tr').each(function(index, fila) { + var divId = $(fila).find('td:eq(4)').attr('id'); + var divStyle = $("#"+divId).children('div').attr('style'); + if (divStyle !== undefined) { + let findedRed = divStyle.indexOf('background: #e63c52;') + let findedGrey = divStyle.indexOf('background: #B2B2B2;') + if (findedRed >= 0 || findedGrey >= 0) { + elementChange.hasClassRed = true; + elementChange.hasClassGrey = true; + elementChange.elementID = $("#"+divId).children('div'); + elementChange.class = false; + setClassGreen(elementChange); + } + } + }); + + // latest events table. + $('#latest_events_table > tbody > tr').each(function(index, fila) { + // Change status. + var divId = $(fila).find('td:eq(3)').attr('id'); + var divStyle = $("#"+divId).children('div').attr('style'); + if (divStyle !== undefined) { + let findedRed = divStyle.indexOf('background: #e63c52'); + let findedGrey = divStyle.indexOf('background: #B2B2B2'); + if (findedRed >= 0 || findedGrey >= 0) { + elementChange.hasClassRed = true; + elementChange.hasClassGrey = true; + elementChange.elementID = $("#"+divId).children('div'); + elementChange.class = false; + setClassGreen(elementChange); + // Change Image + const tdId = $(fila).find('td:eq(0)').attr('id'); + var img = $("#"+tdId).children('img'); + $(img).attr('src', 'images/module_ok.png'); + } + } + }); + + // Group view. + //Summary status groups + $('#summary_status_groups > tbody > tr > td > span').each(function(index, fila) { + var hasClassRed = $(fila).hasClass('red_background'); + if (hasClassRed) { + $(fila).removeClass('red_background').addClass('green_background'); + } + }); + + $('#summary_status_groups_detail > tbody > tr > td').each(function(index, fila) { + var hasClassRed = $(fila).hasClass('group_view_crit'); + console.log(hasClassRed); + if (hasClassRed) { + $(fila).removeClass('group_view_crit').addClass('group_view_ok'); + $(fila).children('a').removeClass('group_view_crit').addClass('group_view_ok'); + } + }); + + // Monitor detail. + // Monitors view table + $('#monitors_view > tbody > tr').each(function(index, fila) { + // Change status. + var divId = $(fila).find('td:eq(6)').attr('id'); + var divStyle = $("#"+divId).children('div').children('div').attr('style'); + if (divStyle !== undefined) { + let findedRed = divStyle.indexOf('background: #e63c52'); + let findedGrey = divStyle.indexOf('background: #B2B2B2'); + if (findedRed >= 0 || findedGrey >= 0) { + elementChange.hasClassRed = true; + elementChange.hasClassGrey = true; + elementChange.elementID = $("#"+divId).children('div').children('div'); + elementChange.class = false; + setClassGreen(elementChange); + } + } + }); + + } + + function setClassGreen(element) { + // Class. + if ((element.hasClassRed === true || element.hasClassGrey === true) && element.class == true) { + $("#"+element.elementID).addClass('green_background'); + } + // Element style. + if ((element.hasClassRed === true || element.hasClassGrey === true) && element.class == false) { + element.elementID.css('background', '#82b92e'); + } + } diff --git a/pandora_console/operation/agentes/group_view.php b/pandora_console/operation/agentes/group_view.php index 08066014e0..c7bca5635a 100644 --- a/pandora_console/operation/agentes/group_view.php +++ b/pandora_console/operation/agentes/group_view.php @@ -175,7 +175,7 @@ if ($total_agentes > 0) { $total_not_init = format_numeric((($agents_notinit * 100) / $total_agentes), 2); } -echo ''; +echo '
'; echo ''; echo ''; echo "'; @@ -227,7 +227,7 @@ if (empty($result_groups) === false) { [ 'right_content' => $pagination ] ); - echo '
".__('Summary of the status groups').'
'; + echo '
'; echo ''; echo ''; echo ''; From 52134623347ae0693bc2f889ab4038c36ffb40ab Mon Sep 17 00:00:00 2001 From: Jorge Rincon Date: Fri, 24 Nov 2023 12:54:19 +0100 Subject: [PATCH 2/3] #12067 Aggregated Agents Modules and module group --- pandora_console/extensions/agents_modules.php | 2 +- pandora_console/extensions/module_groups.php | 1 + pandora_console/index.php | 72 ++++++++++++++++++- 3 files changed, 71 insertions(+), 4 deletions(-) diff --git a/pandora_console/extensions/agents_modules.php b/pandora_console/extensions/agents_modules.php index d6c4f3bb32..588d64f3d7 100644 --- a/pandora_console/extensions/agents_modules.php +++ b/pandora_console/extensions/agents_modules.php @@ -880,7 +880,7 @@ function mainAgentsModules() return; } - echo '
'.__('Total items').': '.$count.'
'; + echo '
'; echo ''; diff --git a/pandora_console/extensions/module_groups.php b/pandora_console/extensions/module_groups.php index f1cb6b91c5..957d3a17a1 100644 --- a/pandora_console/extensions/module_groups.php +++ b/pandora_console/extensions/module_groups.php @@ -345,6 +345,7 @@ function mainModuleGroups() $table = new StdClass(); $table->class = 'info_table'; $table->style[0] = 'font-weight: bolder; min-width: 230px;'; + $table->id = 'agent_group_module_group'; $table->width = '100%'; $head[0] = __('Groups'); diff --git a/pandora_console/index.php b/pandora_console/index.php index 95641b313f..35b907cbec 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -1672,8 +1672,8 @@ require 'include/php_to_js_values.php'; let counter = 0; $("#keywords").on("click", function(e) { counter++; - let falEasternEgg = true; - if (counter == 5 && falEasternEgg == true) { + let flagEasternEgg = $("#flagEasternEgg").val(); + if (counter == 5 && flagEasternEgg == true) { easterEggThinkGreen(); } }); @@ -1772,7 +1772,6 @@ require 'include/php_to_js_values.php'; $('#summary_status_groups_detail > tbody > tr > td').each(function(index, fila) { var hasClassRed = $(fila).hasClass('group_view_crit'); - console.log(hasClassRed); if (hasClassRed) { $(fila).removeClass('group_view_crit').addClass('group_view_ok'); $(fila).children('a').removeClass('group_view_crit').addClass('group_view_ok'); @@ -1798,6 +1797,73 @@ require 'include/php_to_js_values.php'; } }); + // Agents Modules. + $('#agents_modules_table > tbody > tr > td').each(function(index, fila) { + // Change status. + var hasClassRed = $(fila).hasClass('group_view_crit'); + var hasClassGrey = $(fila).hasClass('group_view_unk'); + if (hasClassRed == true) { + $(fila).removeClass('group_view_crit').addClass('group_view_ok'); + $(fila).children('a').removeClass('group_view_crit').addClass('group_view_ok'); + } else if (hasClassRed == false) { + var hasClassGroupRed = $(fila).children('a').children('div').attr('style'); + if (hasClassGroupRed !== undefined) { + let findedRed = hasClassGroupRed.indexOf('background: #e63c52'); + if (findedRed >= 0) { + elementChange.hasClassRed = true; + elementChange.hasClassGrey = false; + elementChange.elementID = $(fila).children('a').children('div'); + elementChange.class = false; + setClassGreen(elementChange); + } + } + } + + if (hasClassGrey == true) { + $(fila).removeClass('group_view_unk').addClass('group_view_ok'); + $(fila).children('a').removeClass('group_view_unk').addClass('group_view_ok'); + } else if (hasClassGrey == false) { + var hasClassGroupGrey = $(fila).children('a').children('div').attr('style'); + if (hasClassGroupGrey !== undefined) { + let findedGrey = hasClassGroupGrey.indexOf('background: #B2B2B2'); + if (findedGrey >= 0) { + elementChange.hasClassRed = false; + elementChange.hasClassGrey = true; + elementChange.elementID = $(fila).children('a').children('div'); + elementChange.class = false; + setClassGreen(elementChange); + } + } + } + }); + + // Combined table of agent group and module group. + $('#agent_group_module_group > tbody > tr > td').each(function(index, fila) { + var hasClassGroupRed = $(fila).children('div').attr('style'); + if (hasClassGroupRed !== undefined) { + let findedRed = hasClassGroupRed.indexOf(' background:#e63c52;'); + if (findedRed >= 0) { + elementChange.hasClassRed = true; + elementChange.hasClassGrey = false; + elementChange.elementID = $(fila).children('div'); + elementChange.class = false; + setClassGreen(elementChange); + } + } + + var hasClassGroupGrey = $(fila).children('div').attr('style'); + if (hasClassGroupGrey !== undefined) { + let findedGrey = hasClassGroupGrey.indexOf(' background:#B2B2B2;'); + if (findedGrey >= 0) { + elementChange.hasClassRed = false; + elementChange.hasClassGrey = true; + elementChange.elementID = $(fila).children('div'); + elementChange.class = false; + setClassGreen(elementChange); + } + } + }); + } function setClassGreen(element) { From e947ac4f007cd99b37341fff7332b7590b7554c7 Mon Sep 17 00:00:00 2001 From: artica Date: Wed, 20 Dec 2023 01:00:27 +0100 Subject: [PATCH 3/3] Auto-updated build strings. --- pandora_agents/unix/DEBIAN/control | 2 +- pandora_agents/unix/DEBIAN/make_deb_package.sh | 2 +- pandora_agents/unix/pandora_agent | 2 +- pandora_agents/unix/pandora_agent.redhat.spec | 2 +- pandora_agents/unix/pandora_agent.redhat_bin.el8.spec | 2 +- pandora_agents/unix/pandora_agent.redhat_bin.el9.spec | 2 +- pandora_agents/unix/pandora_agent.redhat_bin.spec | 2 +- pandora_agents/unix/pandora_agent.spec | 2 +- pandora_agents/unix/pandora_agent_installer | 2 +- pandora_agents/win32/installer/pandora.mpi | 2 +- pandora_agents/win32/pandora.cc | 2 +- pandora_agents/win32/versioninfo.rc | 2 +- pandora_console/DEBIAN/control | 2 +- pandora_console/DEBIAN/make_deb_package.sh | 2 +- pandora_console/include/config_process.php | 2 +- pandora_console/install.php | 2 +- pandora_console/pandora_console.redhat.spec | 2 +- pandora_console/pandora_console.rhel7.spec | 2 +- pandora_console/pandora_console.spec | 2 +- pandora_server/DEBIAN/control | 2 +- pandora_server/DEBIAN/make_deb_package.sh | 2 +- pandora_server/lib/PandoraFMS/Config.pm | 2 +- pandora_server/lib/PandoraFMS/PluginTools.pm | 2 +- pandora_server/pandora_server.redhat.spec | 2 +- pandora_server/pandora_server.spec | 2 +- pandora_server/pandora_server_installer | 2 +- pandora_server/util/pandora_db.pl | 2 +- pandora_server/util/pandora_manage.pl | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index fbbaa70ba1..2ccf2c8278 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.774-231219 +Version: 7.0NG.774-231220 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 3bf1780faf..19b7a6f14e 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.774-231219" +pandora_version="7.0NG.774-231220" 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 4cbd08722d..c7e9ac7f80 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -1039,7 +1039,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.774'; -use constant AGENT_BUILD => '231219'; +use constant AGENT_BUILD => '231220'; # 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 2e4dded04f..07d24581cf 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -4,7 +4,7 @@ %global __os_install_post %{nil} %define name pandorafms_agent_linux %define version 7.0NG.774 -%define release 231219 +%define release 231220 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec index bf5a84479e..0fecfda6b3 100644 --- a/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec +++ b/pandora_agents/unix/pandora_agent.redhat_bin.el8.spec @@ -5,7 +5,7 @@ %define name pandorafms_agent_linux_bin %define source_name pandorafms_agent_linux %define version 7.0NG.774 -%define release 231219 +%define release 231220 %define debug_package %{nil} Summary: Pandora FMS Linux agent, binary version diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec index 23ef1fb028..ab8a68d220 100644 --- a/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec +++ b/pandora_agents/unix/pandora_agent.redhat_bin.el9.spec @@ -5,7 +5,7 @@ %define name pandorafms_agent_linux_bin %define source_name pandorafms_agent_linux %define version 7.0NG.774 -%define release 231219 +%define release 231220 %define debug_package %{nil} Summary: Pandora FMS Linux agent, binary version diff --git a/pandora_agents/unix/pandora_agent.redhat_bin.spec b/pandora_agents/unix/pandora_agent.redhat_bin.spec index ccd955eaa3..7221627327 100644 --- a/pandora_agents/unix/pandora_agent.redhat_bin.spec +++ b/pandora_agents/unix/pandora_agent.redhat_bin.spec @@ -5,7 +5,7 @@ %define name pandorafms_agent_linux_bin %define source_name pandorafms_agent_linux %define version 7.0NG.774 -%define release 231219 +%define release 231220 Summary: Pandora FMS Linux agent, binary version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index c72125ad5b..0bd2aa8d9b 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -4,7 +4,7 @@ %global __os_install_post %{nil} %define name pandorafms_agent_linux %define version 7.0NG.774 -%define release 231219 +%define release 231220 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 1360edcbbe..e8e787a1b4 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.774" -PI_BUILD="231219" +PI_BUILD="231220" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 444a657d98..2a2354bf55 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{231219} +{231220} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 8a7783a7ba..84a3bdf302 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.774 Build 231219") +#define PANDORA_VERSION ("7.0NG.774 Build 231220") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 3ee212d8ba..91eff128d3 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Pandora FMS" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.774(Build 231219))" + VALUE "ProductVersion", "(7.0NG.774(Build 231220))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 635749427a..2077e37d3c 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.774-231219 +Version: 7.0NG.774-231220 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 7a1099c7bc..3a1dafc18c 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.774-231219" +pandora_version="7.0NG.774-231220" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index b4b84339cd..66ee4d21da 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 = 'PC231219'; +$build_version = 'PC231220'; $pandora_version = 'v7.0NG.774'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index 50fc5ee94e..26948f0d73 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -131,7 +131,7 @@
[ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index 73c27df5ef..9a2bc7c861 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -7,7 +7,7 @@ %define debug_package %{nil} %define name pandorafms_server %define version 7.0NG.774 -%define release 231219 +%define release 231220 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index a12f69f8f2..3628f5f4dc 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -4,7 +4,7 @@ %global __os_install_post %{nil} %define name pandorafms_server %define version 7.0NG.774 -%define release 231219 +%define release 231220 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 24e91a5a8e..3796548d5e 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.774" -PI_BUILD="231219" +PI_BUILD="231220" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 117580ee48..43cf8e059f 100755 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -38,7 +38,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.774 Build 231219"; +my $version = "7.0NG.774 Build 231220"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index eec8cb4cb9..07872fc761 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.774 Build 231219"; +my $version = "7.0NG.774 Build 231220"; # save program name for logging my $progname = basename($0);