diff --git a/pandora_console/include/api.php b/pandora_console/include/api.php index e4977bb614..75da778c52 100644 --- a/pandora_console/include/api.php +++ b/pandora_console/include/api.php @@ -46,21 +46,19 @@ $apiPassword = io_output_password(db_get_value_filter('value', 'tconfig', ['toke $correctLogin = false; $no_login_msg = ''; -// Clean unwanted output +// Clean unwanted output. ob_clean(); // READ THIS: // Special call without checks to retrieve version and build of the Pandora FMS // This info is avalable from the web console without login // Don't change the format, it is parsed by applications -switch ($info) { - case 'version': - if (!$config['MR']) { - $config['MR'] = 0; - } - - echo 'Pandora FMS '.$pandora_version.' - '.$build_version.' MR'.$config['MR']; +if ($info == 'version') { + if (!$config['MR']) { + $config['MR'] = 0; + } + echo 'Pandora FMS '.$pandora_version.' - '.$build_version.' MR'.$config['MR']; exit; } @@ -68,6 +66,8 @@ if (isInACL($ipOrigin)) { if (empty($apiPassword) || (!empty($apiPassword) && $api_password === $apiPassword)) { $user_in_db = process_user_login($user, $password, true); if ($user_in_db !== false) { + $config['id_usuario'] = $user_in_db; + // Compat. $config['id_user'] = $user_in_db; $correctLogin = true; @@ -76,6 +76,8 @@ if (isInACL($ipOrigin)) { } $_SESSION['id_usuario'] = $user; + + config_prepare_session(); session_write_close(); } else { $no_login_msg = 'Incorrect user credentials'; @@ -220,3 +222,8 @@ if ($correctLogin) { // Protection on DoS attacks echo 'auth error'; } + +// Logout. +session_destroy(); +header_remove('Set-Cookie'); +setcookie(session_name(), $_COOKIE[session_name()], (time() - 4800), '/'); diff --git a/pandora_console/include/chart_generator.php b/pandora_console/include/chart_generator.php index 2ae768d4fe..cdd1b88460 100644 --- a/pandora_console/include/chart_generator.php +++ b/pandora_console/include/chart_generator.php @@ -11,12 +11,13 @@ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // Global & session manageme -session_id($_REQUEST['session_id']); - require_once 'config.php'; -require_once $config['homedir'].'/include/auth/mysql.php'; -require_once $config['homedir'].'/include/functions.php'; -require_once $config['homedir'].'/include/functions_db.php'; + +require_once __DIR__.'/config.php'; +require_once __DIR__.'/functions.php'; +require_once __DIR__.'/functions_db.php'; +require_once __DIR__.'/auth/mysql.php'; +require_once $config['homedir'].'/include/lib/User.php'; require_once $config['homedir'].'/include/functions_reporting.php'; require_once $config['homedir'].'/include/functions_graph.php'; require_once $config['homedir'].'/include/functions_custom_graphs.php'; @@ -24,18 +25,56 @@ require_once $config['homedir'].'/include/functions_modules.php'; require_once $config['homedir'].'/include/functions_agents.php'; require_once $config['homedir'].'/include/functions_tags.php'; -check_login(); +// Initialize session. global $config; -// get_parameter(array)('data', ''); + +// Try to initialize session using existing php session id. +$user = new PandoraFMS\User(['phpsessionid' => $_REQUEST['session_id']]); +if (check_login(false) === false) { + // Error handler. + ?> + + +
+ +