Current File : /home/inlingua/public_html/decay_sym/root/var/softaculous/apps/phpmyadmin/3/webuzo.php |
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Single signon for phpMyAdmin
*
* This is just example how to use session based single signon with
* phpMyAdmin, it is not intended to be perfect code and look, only
* shows how you can integrate this functionality in your application.
*
* @package PhpMyAdmin
* @subpackage Example
*/
/* Use cookies for session */
ini_set('session.use_cookies', 'true');
/* Change this to true if using phpMyAdmin over https */
$secure_cookie = false;
/* Need to have cookie visible from parent directory */
session_set_cookie_params(0, '/', '', $secure_cookie, 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('/foobar');
@session_start();
include_once('/usr/local/webuzo/sdk/sessions.php');
$webuzo_sess = new Webuzo_Sessions();
$logged_in = $webuzo_sess->isLogin();
$is_multiuser = $webuzo_sess->globals['is_multiuser'];
// Send to login URL
if(empty($logged_in)){
$webuzo_sess->show_login();
die();
}
$pass_path = "/var/webuzo/my.conf";
if(file_exists($pass_path)){
$pass = file_get_contents($pass_path);
}
// Remote mysql ?
$host = (!empty($webuzo_sess->globals['mysql_host']) && $webuzo_sess->globals['mysql_host'] != 'localhost') ? $webuzo_sess->globals['mysql_host'] : 'localhost';
// Root user
if(
(method_exists($webuzo_sess, 'is_admin_panel') && $webuzo_sess->is_admin_panel()) &&
(
(!empty($webuzo_sess->orig_user) && $webuzo_sess->orig_user == 'root') ||
(!empty($logged_in['user']) && $logged_in['user'] == 'root')
)
){
$tmp_user = 'root';
$tmp_pass = $pass;
// Regular user
}elseif(!empty($logged_in['user']) && $logged_in['user'] != 'root'){
$loggedin_user = $logged_in['user'];
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@!#$";
$tmp_user = 'tmp_'.$logged_in['user'];
$tmp_pass = substr(str_shuffle($chars),0,16);
$query[] = "DROP USER '$tmp_user'@'localhost'";
$query[] = "DROP USER '$tmp_user'@'".$webuzo_sess->globals['WU_PRIMARY_IP']."'";
$query[] = "DROP USER '$tmp_user'@'".$webuzo_sess->globals['WU_PRIMARY_DOMAIN']."'";
$query[] = "CREATE USER IF NOT EXISTS '$tmp_user'@'localhost' IDENTIFIED BY '$tmp_pass'";
$query[] = "ALTER USER '$tmp_user'@'localhost' IDENTIFIED BY '$tmp_pass'";
$query[] = "CREATE USER IF NOT EXISTS '$tmp_user'@'".$webuzo_sess->globals['WU_PRIMARY_IP']."' IDENTIFIED BY '$tmp_pass'";
$query[] = "ALTER USER '$tmp_user'@'".$webuzo_sess->globals['WU_PRIMARY_IP']."' IDENTIFIED BY '$tmp_pass'";
$query[] = "CREATE USER IF NOT EXISTS '$tmp_user'@'".$webuzo_sess->globals['WU_PRIMARY_DOMAIN']."' IDENTIFIED BY '$tmp_pass'";
$query[] = "ALTER USER '$tmp_user'@'".$webuzo_sess->globals['WU_PRIMARY_DOMAIN']."' IDENTIFIED BY '$tmp_pass'";
$query[] = "FLUSH PRIVILEGES";
// Old method with prefix
if(empty($webuzo_sess->globals['mysql_new_method'])){
$query[] = "GRANT ALL PRIVILEGES ON `$loggedin_user\_%`.* TO '$tmp_user'@'localhost'";
$query[] = "GRANT ALL PRIVILEGES ON `$loggedin_user\_%`.* TO '$tmp_user'@'".$webuzo_sess->globals['WU_PRIMARY_IP']."'";
$query[] = "GRANT ALL PRIVILEGES ON `$loggedin_user\_%`.* TO '$tmp_user'@'".$webuzo_sess->globals['WU_PRIMARY_DOMAIN']."'";
// Without prefix
}else{
$path = $webuzo_sess->globals['users_path'].'/'.$loggedin_user.'/mysql';
$data = @json_decode(file_get_contents($path), true);
// Revoke all privileges first
$query[] = "REVOKE ALL PRIVILEGES, GRANT OPTION FROM '$tmp_user'@'localhost'";
$query[] = "REVOKE ALL PRIVILEGES, GRANT OPTION FROM '$tmp_user'@'".$webuzo_sess->globals['WU_PRIMARY_IP']."'";
$query[] = "REVOKE ALL PRIVILEGES, GRANT OPTION FROM '$tmp_user'@'".$webuzo_sess->globals['WU_PRIMARY_DOMAIN']."'";
// Are there any Database ?
if(!empty($data['localhost']['dbs'])){
foreach($data['localhost']['dbs'] as $k => $v){
$query[] = "GRANT ALL PRIVILEGES ON `$k`.* TO '$tmp_user'@'localhost'";
$query[] = "GRANT ALL PRIVILEGES ON `$k`.* TO '$tmp_user'@'".$webuzo_sess->globals['WU_PRIMARY_IP']."'";
$query[] = "GRANT ALL PRIVILEGES ON `$k`.* TO '$tmp_user'@'".$webuzo_sess->globals['WU_PRIMARY_DOMAIN']."'";
}
}
}
$sconn = @mysqli_connect($host, 'root', $pass);
foreach($query as $q => $v){
mysqli_query($sconn, $v);
}
// Not logged in
}else{
$webuzo_sess->show_login();
die();
}
/* Store there credentials */
$_SESSION['PMA_single_signon_user'] = $tmp_user;
$_SESSION['PMA_single_signon_password'] = $tmp_pass;
$_SESSION['PMA_single_signon_host'] = $host;
$_SESSION['PMA_single_signon_port'] = '3306';
/* Update another field of server configuration */
$_SESSION['PMA_single_signon_cfgupdate'] = array('verbose' => 'Webuzo Signon');
$id = session_id();
/* Close that session */
@session_write_close();
/* Redirect to phpMyAdmin (should use absolute URL here!) */
header('Location: '.$webuzo_sess->SESS['url'].'phpmyadmin/index.php');