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);