From bc25fb664db1d481a9bc4fa691a04385d036ac9c Mon Sep 17 00:00:00 2001 From: Botanic Date: Wed, 5 Jun 2013 23:04:46 -0700 Subject: [PATCH] initial work on ams_lib --- .../ryzom_ams/ams_lib/autoload/helpers.php | 10 + .../ryzom_ams/ams_lib/autoload/users.php | 180 ++++++++++++++++++ .../server/ryzom_ams/ams_lib/libinclude.php | 8 + code/ryzom/tools/server/ryzom_ams/doc.txt | 1 + .../tools/server/ryzom_ams/www/config.php | 81 ++++++++ .../ryzom_ams/www/html/autoload/register.php | 67 +++++++ .../ryzom_ams/www/html/inc/add_user.php | 9 + .../tools/server/ryzom_ams/www/html/index.php | 24 +++ .../ryzom_ams/www/html/templates/footer.phtml | 4 + .../ryzom_ams/www/html/templates/header.phtml | 11 ++ .../ryzom_ams/www/html/templates/home.phtml | 1 + .../www/html/templates/register.phtml | 117 ++++++++++++ 12 files changed, 513 insertions(+) create mode 100644 code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/helpers.php create mode 100644 code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/users.php create mode 100644 code/ryzom/tools/server/ryzom_ams/ams_lib/libinclude.php create mode 100644 code/ryzom/tools/server/ryzom_ams/doc.txt create mode 100644 code/ryzom/tools/server/ryzom_ams/www/config.php create mode 100644 code/ryzom/tools/server/ryzom_ams/www/html/autoload/register.php create mode 100644 code/ryzom/tools/server/ryzom_ams/www/html/inc/add_user.php create mode 100644 code/ryzom/tools/server/ryzom_ams/www/html/index.php create mode 100644 code/ryzom/tools/server/ryzom_ams/www/html/templates/footer.phtml create mode 100644 code/ryzom/tools/server/ryzom_ams/www/html/templates/header.phtml create mode 100644 code/ryzom/tools/server/ryzom_ams/www/html/templates/home.phtml create mode 100644 code/ryzom/tools/server/ryzom_ams/www/html/templates/register.phtml diff --git a/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/helpers.php b/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/helpers.php new file mode 100644 index 000000000..16381ef98 --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/helpers.php @@ -0,0 +1,10 @@ + 12) { + return "Username must be no more than 12 characters."; + } elseif (strlen($username) < 5) { + return "Username must be 5 or more characters."; + } elseif (!preg_match('/^[a-z0-9\.]*$/', $username)) { + return "Username can only contain numbers and letters."; + } elseif (db_query("SELECT COUNT(*) FROM {users} WHERE name = :name", array( + ':name' => $username + ))->fetchField()) { + return "Username " . $username . " is in use."; + } else { + return "success"; + } + } else { + return "success"; + } + return "fail"; +} +/** + * + * Function checkPassword + * + * @takes $pass + * @return string + * + * Info: Returns a string based on if the password is valid, if valid then "success" is returned + * + */ +public function checkPassword($pass) +{ + if (isset($pass)) { + if (strlen($pass) > 20) { + return "Password must be no more than 20 characters."; + } elseif (strlen($pass) < 5) { + return "Password must be more than 5 characters."; + } else { + return "success"; + } + } + return "fail"; +} +/** + * + * Function confirmPassword + * + * @takes $pass + * @return string + * + * Info: Verify's $_POST["Password"] is the same as $_POST["ConfirmPass"] + * + */ +public function confirmPassword() +{ + if (($_POST["Password"]) != ($_POST["ConfirmPass"])) { + return "Passwords do not match."; + } else { + return "success"; + } + return "fail"; +} +/** + * + * Function checkEmail + * + * @takes $email + * @return + * + * + * + */ +public function checkEmail($email) +{ + if (isset($email)) { + if (!validEmail($email)) { + return "Email address is not valid."; + } elseif (db_query("SELECT COUNT(*) FROM {users} WHERE mail = :mail", array( + ':mail' => $email + ))->fetchField()) { + return "Email is in use."; + } else { + return "success"; + } + } else { + return "success"; + } + return "fail"; +} +public function validEmail($email) +{ + $isValid = true; + $atIndex = strrpos($email, "@"); + if (is_bool($atIndex) && !$atIndex) { + $isValid = false; + } else { + $domain = substr($email, $atIndex + 1); + $local = substr($email, 0, $atIndex); + $localLen = strlen($local); + $domainLen = strlen($domain); + if ($localLen < 1 || $localLen > 64) { + // local part length exceeded + $isValid = false; + } else if ($domainLen < 1 || $domainLen > 255) { + // domain part length exceeded + $isValid = false; + } else if ($local[0] == '.' || $local[$localLen - 1] == '.') { + // local part starts or ends with '.' + $isValid = false; + } else if (preg_match('/\\.\\./', $local)) { + // local part has two consecutive dots + $isValid = false; + } else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) { + // character not valid in domain part + $isValid = false; + } else if (preg_match('/\\.\\./', $domain)) { + // domain part has two consecutive dots + $isValid = false; + } else if (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\", "", $local))) { + // character not valid in local part unless + // local part is quoted + if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\", "", $local))) { + $isValid = false; + } + } + if ($isValid && !(checkdnsrr($domain, "MX") || checkdnsrr($domain, "A"))) { + // domain not found in DNS + $isValid = false; + } + } + return $isValid; +} +public function generateSALT($length = 2) +{ + // start with a blank salt + $salt = ""; + // define possible characters - any character in this string can be + // picked for use in the salt, so if you want to put vowels back in + // or add special characters such as exclamation marks, this is where + // you should do it + $possible = "2346789bcdfghjkmnpqrtvwxyzBCDFGHJKLMNPQRTVWXYZ"; + // we refer to the length of $possible a few times, so let's grab it now + $maxlength = strlen($possible); + // check for length overflow and truncate if necessary + if ($length > $maxlength) { + $length = $maxlength; + } + // set up a counter for how many characters are in the salt so far + $i = 0; + // add random characters to $salt until $length is reached + while ($i < $length) { + // pick a random character from the possible ones + $char = substr($possible, mt_rand(0, $maxlength - 1), 1); + // have we already used this character in $salt? + if (!strstr($salt, $char)) { + // no, so it's OK to add it onto the end of whatever we've already got... + $salt .= $char; + // ... and increase the counter by one + $i++; + } + } + // done! + return $salt; +} +} + diff --git a/code/ryzom/tools/server/ryzom_ams/ams_lib/libinclude.php b/code/ryzom/tools/server/ryzom_ams/ams_lib/libinclude.php new file mode 100644 index 000000000..14939735f --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/ams_lib/libinclude.php @@ -0,0 +1,8 @@ + $_POST["Username"], + 'pass' => $_POST["Password"], + 'mail' => $_POST["Email"], + 'init' => $_POST["Email"], + 'unhashpass' => $_POST["Password"], + 'status' => 1, + 'access' => REQUEST_TIME + ); + user_save(NULL, $edit); + header('Location: email_sent.php'); + exit; + } else { + $pageElements = array( + 'GAME_NAME' => $GAME_NAME, + 'WELCOME_MESSAGE' => $WELCOME_MESSAGE, + 'USERNAME' => $user, + 'PASSWORD' => $pass, + 'CPASSWORD' => $cpass, + 'EMAIL' => $email + ); + if ($user != "success") { + $pageElements['USERNAME_ERROR'] = 'TRUE'; + } else { + $pageElements['USERNAME_ERROR'] = 'FALSE'; + } + + if ($pass != "success") { + $pageElements['PASSWORD_ERROR'] = 'TRUE'; + } else { + $pageElements['PASSWORD_ERROR'] = 'FALSE'; + } + if ($cpass != "success") { + $pageElements['CPASSWORD_ERROR'] = 'TRUE'; + } else { + $pageElements['CPASSWORD_ERROR'] = 'FALSE'; + } + if ($email != "success") { + $pageElements['EMAIL_ERROR'] = 'TRUE'; + } else { + $pageElements['EMAIL_ERROR'] = 'FALSE'; + } + if (isset($_POST["TaC"])) { + $pageElements['TAC_ERROR'] = 'FALSE'; + } else { + $pageElements['TAC_ERROR'] = 'TRUE'; + } + helpers::loadtemplate('templates/register.phtml',$pageElements); + } 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 new file mode 100644 index 000000000..9b3441006 --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/www/html/inc/add_user.php @@ -0,0 +1,9 @@ + +This is a footer + + diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/templates/header.phtml b/code/ryzom/tools/server/ryzom_ams/www/html/templates/header.phtml new file mode 100644 index 000000000..9cb70a8a7 --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/www/html/templates/header.phtml @@ -0,0 +1,11 @@ + + + + + + + + + This is a header +
Register
+
\ No newline at end of file diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/templates/home.phtml b/code/ryzom/tools/server/ryzom_ams/www/html/templates/home.phtml new file mode 100644 index 000000000..45c6825a5 --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/www/html/templates/home.phtml @@ -0,0 +1 @@ +mainpage welcome! \ No newline at end of file diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/templates/register.phtml b/code/ryzom/tools/server/ryzom_ams/www/html/templates/register.phtml new file mode 100644 index 000000000..dd1efbef8 --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/www/html/templates/register.phtml @@ -0,0 +1,117 @@ +
+ RYZOM CORE INGAME REGISTRATION +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + You must accept the Terms of Service';} + else { + echo ' +
id="caption-Username">Desired Username: + + width="42%">
id="caption-Password">Desired Password: + + width="42%">
id="caption-ConfirmPass">Confirm Password: + width="42%">
id="caption-Email">Email Address (to which a confirmation email will be sent): + account.', this);" /> + width="42%">
+ colspan="2">YES, I agree to the terms of + service';}; ?> +
+ +
+ +
+ +
+ +
+ +
+ 5-12 lower-case characters and numbers. The login (username) you create here will be + your login name. The name of your game characters will be chosen later on. +
+ +
+ 5-20 characters. +
+ +
+ Retype your Password +
+ +
+ Please verify that the e-mail address you enter here is valid and will remain valid + in the future. It will be used to manage your account. +
+ +
\ No newline at end of file