diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index ea8e6800d4..5e3bbc541a 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-200128 +Version: 7.0NG.742-200129 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 1e6a37d788..13b4c0f61f 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-200128" +pandora_version="7.0NG.742-200129" 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 dc2dad6eba..3b8f8770dc 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 => '200128'; +use constant AGENT_BUILD => '200129'; # 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 15d2471b13..1b08540695 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 200128 +%define release 200129 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 172ef19eba..fe418cbdcb 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 200128 +%define release 200129 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 41c6623d4f..248087968f 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="200128" +PI_BUILD="200129" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 611ea89bd1..605a6aa0c5 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{200128} +{200129} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 3d2f43cb25..682d0e11b0 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 200128)") +#define PANDORA_VERSION ("7.0NG.742(Build 200129)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index e1190c203e..1dd0f2fe82 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 200128))" + VALUE "ProductVersion", "(7.0NG.742(Build 200129))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 48d761ae53..74dbf92396 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.742-200128 +Version: 7.0NG.742-200129 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 97658a39f8..aeb671eaa9 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-200128" +pandora_version="7.0NG.742-200129" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index c9b7db0245..2b90de4a5d 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 = 'PC200128'; +$build_version = 'PC200129'; $pandora_version = 'v7.0NG.742'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index 6ed2d39720..71c4f4c305 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
?op=get&op2=test&apipass=&user=&pass=" -# It should return a string similar to: -# OK,{VERSION},{BUILD} -console_pass pandora - # Passphrase used to generate the key for password encryption (PANDORA FMS ENTERPRISE ONLY). #encryption_passphrase passphrase diff --git a/pandora_server/bin/pandora_server b/pandora_server/bin/pandora_server index 1ce3e3da5e..474f0f9029 100755 --- a/pandora_server/bin/pandora_server +++ b/pandora_server/bin/pandora_server @@ -21,6 +21,7 @@ use strict; use warnings; use POSIX qw(strftime); use threads; +use Digest::MD5 qw(md5_hex); # Default lib dir for RPM and DEB packages use lib '/usr/lib/perl5'; @@ -576,6 +577,139 @@ sub main() { pandora_event (\%Config, "Warmup mode for events started.", 0, 0, 0, 0, 0, 'system', 0, $DBH); } + # Only if console_api_url was not defined + if( !defined($Config{"console_api_url"}) ) { + my $console_api_url = pandora_get_tconfig_token ($DBH, 'public_url', ''); + + # If public_url is empty in database + if ( $console_api_url eq '' ) { + $console_api_url = 'http://localhost/pandora_console/'; + logger(\%Config, "Assuming default path for API url: " . $console_api_url, 3); + } + + $Config{"console_api_url"} = $console_api_url . 'include/api.php'; + } + + # Definition of configuration file + my $cfg_file = $Config{'pandora_path'}; + my $cfg_file_output = $Config{'pandora_path'} . "_backup"; + + # Only if console_api_pass was not defined + if ( !defined($Config{"console_api_pass"}) ) { + my $console_api_pass = pandora_get_tconfig_token ($DBH, 'api_password', ''); + # If api_password is empty in database + if ( $console_api_pass eq '' ) { + $console_api_pass = '1234'; + db_process_update ($DBH, 'tconfig', {'value' => $console_api_pass}, {'token' => 'api_password'}); + } + # Definition of console_api_pass in config + $Config{"console_api_pass"} = $console_api_pass; + # Watch if paramether is added or not (even if it is commented) + my $console_api_pass_control = undef; + if ( open (CFGin, "<$cfg_file") && open (CFGout, ">>$cfg_file_output") ) { + while(my $row = ) { + if (chomp($row) =~ (m/^#\sconsole_api_pass\s(.*)/i)) { + $console_api_pass_control = 1; + print CFGout "\nconsole_api_pass " .$Config{"console_api_pass"} . "\n"; + } else { + print CFGout "$row\n"; + } + } + # Only if the parameter was not added + if ( !defined($console_api_pass_control) ) { + print CFGout "\n# console_api_pass: Console password\n"; + print CFGout "console_api_pass " .$Config{"console_api_pass"} . "\n"; + } + # Close both files + close (CFGin); + close (CFGout); + # Convert the output file in the original configuration file + rename $cfg_file_output, $cfg_file; + } + } + + # Only if console_pass was not defined. + if ( !defined($Config{"console_pass"}) ){ + # Randomized parametrization of console_pass. + if (open (CFG, ">>$cfg_file")) { + my $valid_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + my $num_char = 8; + my $randomized_string = ''; + for (my $i = 0; $i < $num_char; $i++) { + $randomized_string .= substr($valid_chars, rand(length($valid_chars)), 1); + } + + $Config{"console_pass"} = $randomized_string; + print CFG "\n# console_pass: Console password\n"; + print CFG "# To make sure console_api_url, console_api_pass, console_user and console_pass are properly configured run:\n"; + print CFG "# curl '?op=get&op2=test&apipass=&user=&pass='\n"; + print CFG "# It should return a string similar to:\n"; + print CFG "# OK,{VERSION},{BUILD}\n"; + print CFG "console_pass " .$Config{"console_pass"} . "\n"; + + close (CFG); + } else { + logger(\%Config, "[WARNING] Error with configuration file when define `console_pass`: $!", 3); + } + } + + # Only if console_user was not defined + if ( !defined($Config{"console_user"}) ) { + my $pandora_uid = pandora_get_tconfig_token ($DBH, 'pandora_uid', ''); + + if ( $pandora_uid ne '' && $pandora_uid ne 'OFFLINE' ) { + $Config{"console_user"} = "internal_API_$pandora_uid"; + } else { + $Config{"console_user"} = "internal_API"; + } + + # If user not exists in DB, is necessary to create it + if ( get_user_exists($DBH, $Config{"console_user"}) == -1 ) { + + # Definition of API user parameters + my $api_user_parameters = {}; + $api_user_parameters->{'id_user'} = $Config{"console_user"}; + $api_user_parameters->{'password'} = md5_hex($Config{"console_pass"}); + $api_user_parameters->{'comments'} = "Internal user, used for generating reports and email attachments"; + $api_user_parameters->{'is_admin'} = 0; + $api_user_parameters->{'not_login'} = 1; + + # Profile creation for API purpouses + my $api_profile_parameters = {}; + $api_profile_parameters->{'id_usuario'} = $Config{"console_user"}; + $api_profile_parameters->{'id_perfil'} = 1; + $api_profile_parameters->{'id_grupo'} = 0; + $api_profile_parameters->{'assigned_by'} = "system"; + $api_profile_parameters->{'id_policy'} = 0; + + # Insert in DB + my $res_tusuario = db_process_insert($DBH, 'id_user', 'tusuario', $api_user_parameters); + my $res_tusuario_perfil = db_process_insert($DBH, 'id_user', 'tusuario_perfil', $api_profile_parameters); + + # If the user was inserted in DB, must write it in configuration file + if ( $res_tusuario_perfil > 0 ) { + if (open (CFG, ">>$cfg_file")) { + print CFG "\n# Console User (created for API use)\n"; + print CFG "console_user " . $Config{"console_user"} . "\n"; + close (CFG); + } else { + logger(\%Config, "Warning. Was not possible edit configuration file for add console user", 3); + } + } else { + logger(\%Config, "Warning. Was not possible creating console user for API.", 3); + } + } + } + + # Testing API url + my $curl_execution = "'".$Config{'console_api_url'}."?op=get&op2=test&apipass=".$Config{"console_api_pass"}."&user=".$Config{"console_user"}."&pass=".$Config{"console_pass"}."'"; + my $exe_testing_api = `curl $curl_execution`; + my @res_testing_api = split(',', $exe_testing_api); + if ( $res_testing_api[0] ne 'OK' ) { + logger(\%Config, "Warning! The server does not have access to the API, this can trigger problems in the generation of reports and graphs.", 1); + pandora_event (\%Config, "Server does not have access to the API", 0, 0, 0, 0, 0, 'system', 0, $DBH); + } + # Generate 'going up' events foreach my $server (@Servers) { $server->upEvent (); diff --git a/pandora_server/conf/pandora_server.conf.new b/pandora_server/conf/pandora_server.conf.new index 9e38b6cdcf..8d5c8df2cc 100644 --- a/pandora_server/conf/pandora_server.conf.new +++ b/pandora_server/conf/pandora_server.conf.new @@ -563,21 +563,11 @@ async_recovery 1 # Required for some features like the module graphs macros. # console_api_url: Api URL (http://localhost/pandora_console/include/api.php by default) -console_api_url http://localhost/pandora_console/include/api.php +# console_api_url http://localhost/pandora_console/include/api.php # console_api_pass: Api pass # console_api_pass 1234 -# console_user: Console user name (admin by default) -console_user admin - -# console_pass: Console password (pandora by default) -# To make sure console_api_url, console_api_pass, console_user and console_pass are properly configured run: -# curl "?op=get&op2=test&apipass=&user=&pass=" -# It should return a string similar to: -# OK,{VERSION},{BUILD} -console_pass pandora - # Passphrase used to generate the key for password encryption (PANDORA FMS ENTERPRISE ONLY). #encryption_passphrase passphrase diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index 2443a573c3..be5badee24 100644 --- a/pandora_server/lib/PandoraFMS/Config.pm +++ b/pandora_server/lib/PandoraFMS/Config.pm @@ -45,7 +45,7 @@ our @EXPORT = qw( # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.742"; -my $pandora_build = "200128"; +my $pandora_build = "200129"; our $VERSION = $pandora_version." ".$pandora_build; # Setup hash @@ -453,12 +453,6 @@ sub pandora_load_config { # Auto-recovery of asynchronous modules. $pa_config->{"async_recovery"} = 1; # 5.1SP1 - # Console API connection - $pa_config->{"console_api_url"} = 'http://localhost/pandora_console/include/api.php'; # 6.0 - $pa_config->{"console_api_pass"} = ''; # 6.0 - $pa_config->{"console_user"} = 'admin'; # 6.0 - $pa_config->{"console_pass"} = 'pandora'; # 6.0 - # Database password encryption passphrase $pa_config->{"encryption_passphrase"} = ''; # 6.0 diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm index c344dcdfc5..a6db780e44 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 = "200128"; +my $pandora_build = "200129"; 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 080a4707b6..9b5ed10fd2 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 200128 +%define release 200129 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 20ab0ef501..84dd95c83d 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 200128 +%define release 200129 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index c1d2702ac6..481cd783d4 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.742" -PI_BUILD="200128" +PI_BUILD="200129" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index b30ae6d4b2..f13a28b46b 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 PS200128"; +my $version = "7.0NG.742 PS200129"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index dd30efb0dd..082ff1a635 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 PS200128"; +my $version = "7.0NG.742 PS200129"; # save program name for logging my $progname = basename($0);