PhyrePanel-mirror/web/server/phpmyadmin/phyre-sso.php.dist
2024-09-13 12:34:56 +03:00

74 lines
2.3 KiB
Text

<?php
/* Need to have cookie visible from parent directory */
session_set_cookie_params(0, '/', '', true, true);
/* Create signon session */
$session_name = 'SignonSession';
session_name($session_name);
// Uncomment and change the following line to match your $cfg['SessionSavePath']
// session_save_path('');
@session_start();
function validate_token($token, $panel_url = false) {
// Current server ip
$server_ip = $_SERVER['SERVER_ADDR'];
$sso_server = "https://".$server_ip.":8443/";
if ($panel_url) {
$sso_server = $panel_url . "/";
}
$sso_server_endpoint = $sso_server . "api/customer/phpMyAdmin/validate-token?token=" . $token;
// Curl get request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $sso_server_endpoint);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// ssl verification off
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$output = curl_exec($ch);
curl_close($ch);
$output = json_decode($output, true);
return $output;
}
/* Was data posted? */
if (isset($_GET['token'])) {
$token = (isset($_GET['token']) ? $_GET['token'] : '');
$panel_url = (isset($_GET['panel_url']) ? $_GET['panel_url'] : '');
// Request credentials from remote server
$response = validate_token($token, $panel_url);
if (!isset($response['success'])) {
$_SESSION['PMA_single_signon_error_message'] = 'Token invalid';
header('Location: phyre-sso.php');
exit;
}
/* Store there credentials */
$_SESSION['PMA_single_signon_host'] = $response['databaseLoginDetails']['host'];
$_SESSION['PMA_single_signon_user'] = $response['databaseLoginDetails']['username'];
$_SESSION['PMA_single_signon_password'] = $response['databaseLoginDetails']['password'];
/* Update another field of server configuration */
$_SESSION['PMA_single_signon_cfgupdate'] = array('verbose' => 'PhyrePanel');
$id = session_id();
/* Close that session */
@session_write_close();
setcookie($session_name, $id , 0, "/");
/* Redirect to phpMyAdmin (should use absolute URL here!) */
header('Location: ../index.php');
} else {
header('Location: ../index.php');
}
?>