From b05b0b0b51a987c2baf442e0e3b157d777bf7010 Mon Sep 17 00:00:00 2001 From: Quitta Date: Wed, 26 Jun 2013 03:26:25 +0200 Subject: [PATCH] Reworked register --- .../ryzom_ams/ams_lib/autoload/users.php | 72 +++++++------------ .../tools/server/ryzom_ams/www/config.php | 19 +++-- .../ryzom_ams/www/html/inc/add_user.php | 48 ++++++++++--- .../tools/server/ryzom_ams/www/html/index.php | 10 ++- .../server/ryzom_ams/www/html/sql/db.sql | 7 +- .../server/ryzom_ams/www/html/sql/install.php | 65 +++++++++++++++++ 6 files changed, 155 insertions(+), 66 deletions(-) create mode 100644 code/ryzom/tools/server/ryzom_ams/www/html/sql/install.php diff --git a/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/users.php b/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/users.php index 731eb5cdd..cc42c8f86 100644 --- a/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/users.php +++ b/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/users.php @@ -257,15 +257,12 @@ class Users{ } function createUser($values){ - $login = $values["name"]; - $pass = $values["pass"]; - $email = $values["mail"]; - $webhost = $values["webhost"]; - $webport = $values["webport"]; - $webdbname = $values["webdbname"]; - $webusername = $values["webusername"]; - $webpassword = $values["webpassword"]; + $libhost = $values["libhost"]; + $libport = $values["libport"]; + $libdbname = $values["libdbname"]; + $libusername = $values["libusername"]; + $libpassword = $values["libpassword"]; $shardhost = $values["shardhost"]; $shardport = $values["shardport"]; @@ -273,44 +270,29 @@ class Users{ $shardusername = $values["shardusername"]; $shardpassword = $values["shardpassword"]; - $salt = Users::generateSALT(); - $hashpass = crypt($pass, $salt); - - $params = array( - $login, - $hashpass, - $email - ); - - try{ - //make connection with web db - $dbw = new PDO("mysql:host=$webhost;port=$webport;dbname=$webdbname", $webusername, $webpassword); - $dbw->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - - //put into web db - $statement = $dbw->prepare("INSERT INTO ams_user (Login, Password, Email) VALUES (?, ?, ?)"); - $statement->execute($params); - try { - //make connection with and put into shard db - $dbs = new PDO("mysql:host=$shardhost;port=$shardport;dbname=$sharddbname", $shardusername, $shardpassword); - $dbs->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - $statement = $dbs->prepare("INSERT INTO user (Login, Password, Email) VALUES (?, ?, ?)"); - $statement->execute($params); - } - catch (PDOException $e) { - //print_r($e); - //oh noooz, the shard is offline! Put in query queue at web db! - $params = array("type" => "createUser","query" => json_encode(array($login,$pass,$email))); - $statement = $dbw->prepare("INSERT INTO ams_querycache (type, query) VALUES (:type, :query)"); - $statement->execute($params); - } - - }catch (PDOException $e) { - //go to error page or something, because can't access website db - print_r($e); - exit; + try { + //make connection with and put into shard db + $dbs = new PDO("mysql:host='127.0.39.3';port=$shardport;dbname=$sharddbname", $shardusername, $shardpassword); + $dbs->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $statement = $dbs->prepare("INSERT INTO user (Login, Password, Email) VALUES (:name, :pass, :mail)"); + $statement->execute($values["params"]); + return "ok"; } - + catch (PDOException $e) { + //oh noooz, the shard is offline! Put in query queue at ams_lib db! + try { + $dbl = new PDO("mysql:host=$libhost;port=$libport;dbname=$libdbname", $libusername, $libpassword); + $dbl->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $params = array("type" => "createUser","query" => json_encode(array($values["params"]["name"],$values["params"]["pass"],$values["params"]["mail"]))); + $statement = $dbl->prepare("INSERT INTO ams_querycache (type, query) VALUES (:type, :query)"); + $statement->execute($params); + return "shardoffline"; + }catch (PDOException $e) { + print_r($e); + return "liboffline"; + } + } + } public function login($params){ diff --git a/code/ryzom/tools/server/ryzom_ams/www/config.php b/code/ryzom/tools/server/ryzom_ams/www/config.php index 8a6728dd6..747ae8414 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/config.php +++ b/code/ryzom/tools/server/ryzom_ams/www/config.php @@ -5,21 +5,30 @@ // Variables for database access // ---------------------------------------------------------------------------------------- // where we can find the mysql database +//----------------------------------------------------------------------------------------- +//the www db $WEBDBHOST = 'localhost'; $WEBDBPORT = '3306'; $WEBDBNAME = 'ryzom_ams'; -$WEBDBUSERNAME = 'shard'; -$WEBDBPASSWORD = '' ; - +$WEBDBUSERNAME = 'root'; +$WEBDBPASSWORD = 'lol123' ; + +//the ams_lib db +$LIBDBHOST = 'localhost'; +$LIBDBPORT = '3306'; +$LIBDBNAME = 'ryzom_ams_lib'; +$LIBDBUSERNAME = 'root'; +$LIBDBPASSWORD = 'lol123' ; + +//the shard db $SHARDDBHOST = 'localhost' ; $SHARDDBPORT = '3306'; $SHARDDBNAME = 'nel' ; $SHARDDBUSERNAME = 'shard' ; $SHARDDBPASSWORD = '' ; - - +//----------------------------------------------------------------------------------------- // If true= the server will add automatically unknown user in the database // (in nel.user= nel.permission= ring.ring_user and ring.characters $ALLOW_UNKNOWN = true ; diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/inc/add_user.php b/code/ryzom/tools/server/ryzom_ams/www/html/inc/add_user.php index 81639130f..8a13a8614 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/html/inc/add_user.php +++ b/code/ryzom/tools/server/ryzom_ams/www/html/inc/add_user.php @@ -31,26 +31,43 @@ function add_user(){ function write_user($newUser){ + + //get the db specifics out of the config file global $WEBDBHOST; global $WEBDBPORT; global $WEBDBNAME; global $WEBDBUSERNAME; global $WEBDBPASSWORD; + + global $LIBDBHOST; + global $LIBDBPORT; + global $LIBDBNAME; + global $LIBDBUSERNAME; + global $LIBDBPASSWORD; + global $SHARDDBHOST; global $SHARDDBPORT; global $SHARDDBNAME; global $SHARDDBUSERNAME; global $SHARDDBPASSWORD; - $values["name"] = $newUser["name"]; - $values["pass"] = $newUser["pass"]; - $values["mail"] = $newUser["mail"]; + //create salt here, because we want it to be the same on the web/server + $hashpass = crypt($newUser["pass"], Users::generateSALT()); - $values["webhost"] = $WEBDBHOST; - $values["webport"] = $WEBDBPORT; - $values["webdbname"] = $WEBDBNAME; - $values["webusername"] = $WEBDBUSERNAME; - $values["webpassword"] = $WEBDBPASSWORD ; + $params = array( + 'name' => $newUser["name"], + 'pass' => $hashpass, + 'mail' => $newUser["mail"] + ); + + //print_r($params); + //make a $values array for passing all data to the Users::createUser() function. + $values["params"] = $params; + $values["libhost"] = $LIBDBHOST; + $values["libport"] = $LIBDBPORT; + $values["libdbname"] = $LIBDBNAME; + $values["libusername"] = $LIBDBUSERNAME; + $values["libpassword"] = $LIBDBPASSWORD ; $values["shardhost"] = $SHARDDBHOST; $values["shardport"] = $SHARDDBPORT; @@ -59,8 +76,21 @@ function write_user($newUser){ $values["shardpassword"] = $SHARDDBPASSWORD; + //Create the user on the shard + in case shard is offline put copy of query in query db $result = Users :: createUser($values); - + + try{ + //make connection with web db and put it in there + $dbw = new PDO("mysql:host=$WEBDBHOST;port=$WEBDBPORT;dbname=$WEBDBNAME", $WEBDBUSERNAME, $WEBDBPASSWORD); + $dbw->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $statement = $dbw->prepare("INSERT INTO ams_user (Login, Password, Email) VALUES (:name, :pass, :mail)"); + $statement->execute($params); + + }catch (PDOException $e) { + //go to error page or something, because can't access website db + print_r($e); + exit; + } print('Awesome'); } diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/index.php b/code/ryzom/tools/server/ryzom_ams/www/html/index.php index d15dbee03..b3749e8a6 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/html/index.php +++ b/code/ryzom/tools/server/ryzom_ams/www/html/index.php @@ -5,7 +5,7 @@ require( '../config.php' ); require( '../../ams_lib/libinclude.php' ); session_start(); -print("[" . $_SESSION['user'] . "] "); +//print_r($_SESSION); //Decide what page to load if(isset($_SESSION['user'])){ @@ -31,8 +31,8 @@ function loadpage ( $page ){ } //Set permission -if(isset($_SESSION['Permission'])){ - $return['permission'] = $_SESSION['Permission']; +if(isset($_SESSION['permission'])){ + $return['permission'] = $_SESSION['permission']; }else{ //default permission $return['permission'] = 0; @@ -45,7 +45,5 @@ if($page == 'login' || $page == 'register'){ }else{ $return['no_visible_elements'] = 'FALSE'; } - +//print_r($return); helpers :: loadTemplate( $page , $return ); - -session_destroy(); diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/sql/db.sql b/code/ryzom/tools/server/ryzom_ams/www/html/sql/db.sql index 44daf16e5..ccc214125 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/html/sql/db.sql +++ b/code/ryzom/tools/server/ryzom_ams/www/html/sql/db.sql @@ -1,7 +1,6 @@ CREATE DATABASE IF NOT EXISTS `ryzom_ams`; USE `ryzom_ams`; DROP TABLE IF EXISTS ams_user; -DROP TABLE IF EXISTS ams_querycache; CREATE TABLE IF NOT EXISTS `ams_user` ( `UId` int(10) NOT NULL AUTO_INCREMENT, @@ -12,6 +11,12 @@ CREATE TABLE IF NOT EXISTS `ams_user` ( PRIMARY KEY (`UId`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='contains all users information for ryzom_ams'; +); + +CREATE DATABASE IF NOT EXISTS `ryzom_ams_lib`; +USE `ryzom_ams_lib`; +DROP TABLE IF EXISTS ams_querycache; + CREATE TABLE ams_querycache ( `SID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `type` VARCHAR( 64 ) NOT NULL , diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/sql/install.php b/code/ryzom/tools/server/ryzom_ams/www/html/sql/install.php new file mode 100644 index 000000000..09ba63d54 --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/www/html/sql/install.php @@ -0,0 +1,65 @@ +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $sql = " + CREATE DATABASE IF NOT EXISTS `ryzom_ams`; + USE `ryzom_ams`; + DROP TABLE IF EXISTS ams_user; + + CREATE TABLE IF NOT EXISTS `ams_user` ( + `UId` int(10) NOT NULL AUTO_INCREMENT, + `Login` varchar(64) NOT NULL DEFAULT '', + `Password` varchar(13) DEFAULT NULL, + `Email` varchar(255) NOT NULL DEFAULT '', + `Permission` int(3) NOT NULL DEFAULT 1, + PRIMARY KEY (`UId`) + ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='contains all users information for ryzom_ams'; + + ); + "; + $statement = $dbw->prepare($sql); + $statement->execute(); + + //SETUP THE AMS_LIB DB + $dbl = new PDO("mysql:host=$LIBDBHOST;", $LIBDBUSERNAME, $LIBDBPASSWORD); + $dbl->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $sql = " + CREATE DATABASE IF NOT EXISTS `ryzom_ams_lib`; + USE `ryzom_ams_lib`; + DROP TABLE IF EXISTS ams_querycache; + + CREATE TABLE ams_querycache ( + `SID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , + `type` VARCHAR( 64 ) NOT NULL , + `query` VARCHAR( 512 ) NOT NULL + ); + "; + $statement = $dbl->prepare($sql); + $statement->execute(); + print('Install completed successful!'); + + + + + }catch (PDOException $e) { + //go to error page or something, because can't access website db + print('There was an error while installing'); + print_r($e); + } + + \ No newline at end of file