diff options
author | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2013-03-17 14:48:15 +0100 |
---|---|---|
committer | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2013-03-17 14:48:15 +0100 |
commit | a89c396c01398878f69e4c4a191a8b32ac080646 (patch) | |
tree | ea069caec9805ef62dd760da5d2adc2d826d3714 | |
parent | 750f24561a9b23c0072b35f31cec3bc2519675b8 (diff) | |
download | website-a89c396c01398878f69e4c4a191a8b32ac080646.tar.gz website-a89c396c01398878f69e4c4a191a8b32ac080646.tar.bz2 website-a89c396c01398878f69e4c4a191a8b32ac080646.tar.xz website-a89c396c01398878f69e4c4a191a8b32ac080646.zip |
Initial jekyll-powered website for github pages
* Removed Registration form and related files (reCAPTCHA / SQL stuff)
* Removed including news (needs an alternative solution)
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | CNAME | 1 | ||||
-rw-r--r-- | _config.yml | 3 | ||||
-rw-r--r-- | _layouts/default.html (renamed from includes/common.php) | 35 | ||||
-rw-r--r-- | about.html (renamed from about.php) | 12 | ||||
-rwxr-xr-x | bin/createaccount.rb | 80 | ||||
-rw-r--r-- | downloads.html (renamed from downloads.php) | 12 | ||||
-rw-r--r-- | includes/conf/mysql.conf.php | 8 | ||||
-rwxr-xr-x | includes/fetch-news.sh | 8 | ||||
-rw-r--r-- | includes/libs/libmysql.php | 89 | ||||
-rw-r--r-- | includes/libs/libstrutils.php | 10 | ||||
-rw-r--r-- | includes/models/account.php | 114 | ||||
-rw-r--r-- | includes/news.php | 110 | ||||
-rw-r--r-- | index.html (renamed from index.php) | 21 | ||||
-rw-r--r-- | recaptcha-php/LICENSE | 22 | ||||
-rw-r--r-- | recaptcha-php/README | 7 | ||||
-rw-r--r-- | recaptcha-php/example-captcha.php | 37 | ||||
-rw-r--r-- | recaptcha-php/example-mailhide.php | 17 | ||||
-rw-r--r-- | recaptcha-php/keys.php.example | 5 | ||||
-rw-r--r-- | recaptcha-php/recaptchalib.php | 277 | ||||
-rw-r--r-- | registration.php | 145 | ||||
-rw-r--r-- | sql/createTables.sql | 13 |
22 files changed, 29 insertions, 998 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ca35be0 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +_site @@ -0,0 +1 @@ +www.themanaworld.org diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..d798b36 --- /dev/null +++ b/_config.yml @@ -0,0 +1,3 @@ +safe: true +url: http://www.themanaworld.org +basepath: diff --git a/includes/common.php b/_layouts/default.html index fe530fd..e19e2b0 100644 --- a/includes/common.php +++ b/_layouts/default.html @@ -1,14 +1,4 @@ -<?php -/* Main include file for TMW website, including header and footer - * (c) 2005 Bjorn Lindeijer - */ - -define('TMWWEBSITE', true); - -function placeHeader($page_title) -{ - echo "<?xml version=\"1.0\" encoding=\"ISO-8859-15\"?>\n"; -?> +<?xml version="1.0" encoding="ISO-8859-15" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> @@ -52,10 +42,10 @@ function placeHeader($page_title) <div class="section_bottomright"> <div class="section"> <ul> - <li><a href="registration.php">Registration</a></li> - <li><a href="downloads.php">Downloads</a></li> - <li><a href="index.php">News</a></li> - <li><a href="about.php">About</a></li> + <li><a href="http://server.themanaworld.org/registration.php">Registration</a></li> + <li><a href="{{ site.basepath }}/downloads.html">Downloads</a></li> + <li><a href="{{ site.basepath }}/index.html">News</a></li> + <li><a href="{{ site.basepath }}/about.html">About</a></li> <li><a href="http://wiki.themanaworld.org/index.php/Servers">Servers</a></li> <li><a href="http://wiki.themanaworld.org/">Wiki</a></li> <li><a href="http://forums.themanaworld.org/">Forums</a></li> @@ -105,7 +95,7 @@ function placeHeader($page_title) <div class="section banners"> Server status <iframe src="http://server.themanaworld.org/status.php" width="130" height="30" frameborder="0" scrolling="no"></iframe> - <a href="registration.php">Register new account</a> + <a href="http://server.themanaworld.org/registration.php">Register new account</a> </div> </div> </div> @@ -128,16 +118,13 @@ function placeHeader($page_title) <div class="main_title_topright"> <div class="main_title_bottomright"> <div class="main_title_topleft"> - <h2><?=$page_title?></h2> + <h2>{{ page.title }}</h2> </div> </div> </div> -<?php -} -function placeFooter() -{ -?> +{{ content }} + <div style="clear: both"></div> </div> <!-- /contents --> @@ -169,7 +156,3 @@ function placeFooter() </script> </body> </html> -<?php -} - -?> @@ -1,7 +1,7 @@ -<?php - include("includes/common.php"); - placeHeader("About"); -?> +--- +layout: default +title: About +--- <h3>Description</h3> @@ -26,7 +26,3 @@ online world.</p> member list</a>. On the wiki the <a href="http://wiki.themanaworld.org/index.php/Developers">Developers</a> page keeps track of the current contributors as well as retired contributors.</p> - -<?php - placeFooter(); -?> diff --git a/bin/createaccount.rb b/bin/createaccount.rb deleted file mode 100755 index 0f9228e..0000000 --- a/bin/createaccount.rb +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/ruby - -require 'mysql' -require 'net/smtp' - -$smtp_server = 'localhost' -$mail_from = 'noreply@themanaworld.org' -$mail_from_name = 'The Mana World server' -$mail_subject = 'The Mana World Account registration' -$mail_body_success = "Your account was created successfully. Have fun playing The Mana World!\n" -$mail_body_error = "The was something wrong with the creation of your account.\n" + - "Error message: " -$mysql_hostname = "localhost" -$mysql_database = "test" -$mysql_username = "test" -$mysql_password = "test123" -$create_script = "/path/to/script" - -############################################################################## - -returns = [ - {'message' => "successfully created", 'status' => :SUCCESS, 'final_state' => 1 }, - {'message' => "Same account already exists", 'status' => :FAILED, 'final_state' => 2 }, - {'message' => "Email is too short", 'status' => :FAILED, 'final_state' => 2 }, - {'message' => "Email is too long", 'status' => :FAILED, 'final_state' => 2 }, - {'message' => "Invalid email", 'status' => :FAILED, 'final_state' => 2 }, - {'message' => "Account name is too short", 'status' => :FAILED, 'final_state' => 2 }, - {'message' => "Account name is too long", 'status' => :FAILED, 'final_state' => 2 }, - {'message' => "Illegal character", 'status' => :FAILED, 'final_state' => 2 }, - {'message' => "command not found", 'status' => :FAILED, 'final_state' => 2 }, -] - -############################################################################## - -def send_mail(email, username, status, errm) - message = "From: #{$mail_from_name} <#{$mail_from}>\n" + - "To: #{username} <#{email}>\n" + - "Subject: #{$mail_subject}\n\n" - message << "Hello #{username},\n\n" - - if status == :SUCCESS then - message << $mail_body_success - elsif status == :FAILED then - message << $mail_body_error << errm - end - - Net::SMTP.start($smtp_server) do |smtp| - smtp.send_message(message, $mail_from, email) - end -end - -############################################################################## - -db = Mysql::new($mysql_hostname, $mysql_username, $mysql_password, $mysql_database) -db.query("SELECT id, username, password, email, gender - FROM tmw_accounts - WHERE state = 0").each do |id, username, password, email, g| - begin - gender = case g.to_i - when 1 then "M" - when 2 then "F" - end - - # insert the right command here - retval = `#{$create_script} create #{username} #{gender} #{email} #{password}` - # parse the return value - returns.each do |retcode| - if retval.include? retcode['message'] then - send_mail( email, username, retcode['status'], retcode['message'] ) - db.query("UPDATE tmw_accounts SET STATE = #{retcode['final_state']} WHERE id = #{id}") - end - end - rescue - puts "ERROR occured" - puts $! - db.query("UPDATE tmw_accounts SET STATE = 2 WHERE id = #{id}") - end -end -db.close - diff --git a/downloads.php b/downloads.html index 6c784f8..1150091 100644 --- a/downloads.php +++ b/downloads.html @@ -1,7 +1,7 @@ -<?php - include("includes/common.php"); - placeHeader("Downloads"); -?> +--- +layout: default +title: Downloads +--- <div style="background-color: rgb(255,220,220); border: 1px solid rgb(240,150,150); padding: 5px; margin: 5px; border-radius: 10px;"> <b>Notice:</b> For the registration of new accounts please use the <a href="registration.php"> web form</a>. The registration from within the client is disabled. @@ -80,7 +80,3 @@ git clone git://github.com/mana/mana.git and the dynamic data, please check our <a href="http://wiki.themanaworld.org/index.php/Git_repository">Git wiki page</a>. - -<?php - placeFooter(); -?> diff --git a/includes/conf/mysql.conf.php b/includes/conf/mysql.conf.php deleted file mode 100644 index d0122d5..0000000 --- a/includes/conf/mysql.conf.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php - - $conf['mysql_hostname'] = "localhost"; - $conf['mysql_database'] = "test"; - $conf['mysql_username'] = "test"; - $conf['mysql_password'] = "test123"; - -?>
\ No newline at end of file diff --git a/includes/fetch-news.sh b/includes/fetch-news.sh deleted file mode 100755 index 5cc9ea5..0000000 --- a/includes/fetch-news.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -# -# Fetches project news and saves it for local use. -# - -/usr/bin/wget -q -O /home/tmw/public_html/www/includes/rss2_projnews.tmp 'http://sourceforge.net/export/rss2_projnews.php?group_id=106790&rss_fulltext=1' > /dev/null -/bin/mv -f /home/tmw/public_html/www/includes/rss2_projnews.tmp \ - /home/tmw/public_html/www/includes/rss2_projnews.cache diff --git a/includes/libs/libmysql.php b/includes/libs/libmysql.php deleted file mode 100644 index 5a3a06c..0000000 --- a/includes/libs/libmysql.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php - -require_once "includes/conf/mysql.conf.php"; - -class Database -{ - // implement singleton pattern - static private $instance = null; - - private $conn; - - static public function getInstance() - { - if (null === self::$instance) - { - self::$instance = new self; - } - return self::$instance; - } - - // ctor - private function __construct() - { - global $conf; - $this->conn = mysql_connect( $conf['mysql_hostname'], - $conf['mysql_username'], - $conf['mysql_password'] ) - or die ("Connection to database failed!" . mysql_error()); - - mysql_select_db( $conf['mysql_database'], $this->conn ) - or die ("Selection of database failed! " . mysql_error()); - } - - private function checkConnect() - { - if (!isset($this->conn)) - { - die("Not connected to database"); - } - } - - // returns the value in the first row and column - public function getValue( $sql ) - { - $this->checkConnect(); - - $res = mysql_query( $sql, $this->conn ); - if (!$res) - { - die('Error while calling database: ' . mysql_error()); - } - $vals = mysql_fetch_row( $res ); - mysql_free_result( $res ); - return $vals[0]; - } - - // executes some sql and returns affected rows - public function exec( $sql ) - { - $this->checkConnect(); - - $res = mysql_query( $sql, $this->conn ); - if (!$res) - { - die('Error while calling database: ' . mysql_error()); - } - $numrows = mysql_affected_rows( $this->conn ); - return $numrows; - } - - public function escape( $string ) - { - $this->checkConnect(); - - return mysql_real_escape_string( $string, $this->conn ); - } - - public function disconnect() - { - if ( mysql_ping( $this->conn ) ) - { - mysql_close( $this->conn ); - } - } - -} - - -?>
\ No newline at end of file diff --git a/includes/libs/libstrutils.php b/includes/libs/libstrutils.php deleted file mode 100644 index ee81c33..0000000 --- a/includes/libs/libstrutils.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - - define("BAD_STRING_DESC", "Only alphanumeric characters are allowed."); - - function check_chars($string) - { - return ctype_alnum($string) && (strpos($string, '"') === FALSE); - } - -?> diff --git a/includes/models/account.php b/includes/models/account.php deleted file mode 100644 index ef253c6..0000000 --- a/includes/models/account.php +++ /dev/null @@ -1,114 +0,0 @@ -<?php - -require_once "includes/libs/libstrutils.php"; - -class TMWAccount -{ - const ACCOUNT_TBL = "tmw_accounts"; - - const GENDER_MALE = 1; - const GENDER_FEMALE = 2; - - const STATE_PENDING = 0; - const STATE_CREATED = 0; - const STATE_FAILED = 0; - - private $id; - private $username; - private $password; - private $email; - private $gender; - private $state; - private $registration; - - public static function getAccountCount() - { - $db = Database::getInstance(); - $sql = "SELECT COUNT(*) FROM " . TMWAccount::ACCOUNT_TBL; - return $db->getValue( $sql ); - } - - public static function existsUsername($str) - { - $db = Database::getInstance(); - $sql = sprintf("SELECT COUNT(*) FROM " . TMWAccount::ACCOUNT_TBL . - " WHERE USERNAME = '%s'", $db->escape($str)); - return ($db->getValue($sql) == 1); - } - - public function setUsername($name){ $this->username = $name; } - public function setPassword($pwd){ $this->password = $pwd; } - public function setEMail($email){ $this->email = $email; } - public function setGender($gender){ $this->gender = $gender; } - - public function validate() - { - $errors = array(); - - // check here for correct values.. - if (strlen($this->username) < 4) - $errors[] = "Username is too short"; - - if (strlen($this->username) >= 24) - $errors[] = "Username is too long"; - - if (strlen($this->password) < 4) - $errors[] = "Password is too short"; - - if (strlen($this->password) >= 24) - $errors[] = "Password is too long"; - - if (strlen($this->email) < 4) - $errors[] = "EMail is too short"; - - if (strlen($this->email) >= 40) - $errors[] = "EMail is too long"; - - if (!check_chars($this->username)) - $errors[] = 'Username contains invalid characters. ' . BAD_STRING_DESC; - - if (!check_chars($this->password)) - $errors[] = 'Password contains invalid characters. ' . BAD_STRING_DESC; - - if ($this->gender != TMWAccount::GENDER_MALE && - $this->gender != TMWAccount::GENDER_FEMALE ) - { - $errors[] = 'Gender has to be Male or Female!'; - } - - if (!filter_var($this->email, FILTER_VALIDATE_EMAIL)) - { - $errors[] = 'EMail has wrong format.'; - } - - - // returns true if everything is fine ( test with === true) - if (count($errors) == 0) - { - return true; - } - else - { - return $errors; - } - } - - - - public function storeAccount() - { - $db = Database::getInstance(); - $sql = sprintf( "INSERT INTO " . TMWAccount::ACCOUNT_TBL . - " (USERNAME, PASSWORD, EMAIL, GENDER) " . - "VALUES ('%s', '%s', '%s', %d) ", - $db->escape($this->username), - $db->escape($this->password), - $db->escape($this->email), - $this->gender); - - $rows = $db->exec( $sql ); - return ( $rows == 1 ); - } -} - -?> diff --git a/includes/news.php b/includes/news.php deleted file mode 100644 index e1c5311..0000000 --- a/includes/news.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php -// WARNING: -// This code uses the "DOM XML" extension, which is only available with PHP 4. -// Be sure to update it to use the "XML", "DOM" or "XMLReader" extensions when -// SF upgrades to PHP 5. -// -// The news is cached locally using a cronjob which runs in the 9th minute of -// every hour: -// -// 9 * * * * /home/groups/t/th/themanaworld/htdocs/includes/fetch-news.sh -// - -//$feedurl = "http://sourceforge.net/export/rss2_projnews.php?group_id=106790&rss_fulltext=1"; - -$feedurl = "includes/rss2_projnews.cache"; - -$xml = new XMLReader(); - -if (!$xml) { - echo "Error, no XMLReader.\n"; - exit; -} - -$xml->open($feedurl); -xml_read_rss($xml); -$xml->close(); - -function xml_read_rss($xml) -{ - if ($xml->next("rss")) { - xml_read_channels($xml); - } else { - echo "Error, not an rss feed."; - } -} - -function xml_read_channels($xml) -{ - while ($xml->read()) { - switch ($xml->nodeType) { - case XMLReader::ELEMENT: - if ($xml->name == "channel") { - xml_read_channel($xml); - } else { - xml_read_unknown_element($xml); - } - break; - case XMLReader::END_ELEMENT: - return; - } - } -} - -function xml_read_channel($xml) -{ - while ($xml->read()) { - switch ($xml->nodeType) { - case XMLReader::ELEMENT: - if ($xml->name == "item") { - xml_read_item($xml); - } else { - xml_read_unknown_element($xml); - } - break; - case XMLReader::END_ELEMENT: - return; - } - } -} - -function xml_read_item($xml) -{ - $newsdata = array(); - - while ($xml->read()) { - switch ($xml->nodeType) { - case XMLReader::ELEMENT: - $newsdata[$xml->name] = $xml->readString(); - xml_read_unknown_element($xml); - break; - case XMLReader::END_ELEMENT: - print_news_item($newsdata); - return; - } - } -} - -function xml_read_unknown_element($xml) -{ - while ($xml->read()) { - switch ($xml->nodeType) { - case XMLReader::ELEMENT: - xml_read_unknown_element($xml); - break; - case XMLReader::END_ELEMENT: - return; - } - } -} - -function print_news_item($newsdata) -{ - echo '<div class="news">'; - echo '<div class="news_date">' . $newsdata['pubDate'] . '</div>'; - echo '<h3>' . $newsdata['title'] . '</h3>'; - echo '<div class="news_body"><p>' . $newsdata['description'] . '</p></div>'; - echo '</div>'; -} - -?> @@ -1,19 +1,12 @@ -<?php - include('includes/common.php'); - placeHeader("News"); +--- +layout: default +title: News +--- -?> <!-- <div style="background-color: rgb(255,220,220); border: 1px solid rgb(240,150,150); padding: 5px; margin: 5px; -moz-border-radius: 10px; -moz-border-radius: 10px;"> <b>Notice:</b> New account creation disabled due to excessive abuse of this feature. If you want to sign up, contact thorbjorn or Jaxad0127 on IRC for now. </div> --> -<?php - - echo file_get_contents('http://updates.themanaworld.org/news.html'); - /* - $number = 6; - include('includes/news.php'); - */ - - placeFooter(); -?> +<!-- + TODO: Load http://updates.themanaworld.org/news.html here +--> diff --git a/recaptcha-php/LICENSE b/recaptcha-php/LICENSE deleted file mode 100644 index b612f71..0000000 --- a/recaptcha-php/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net -AUTHORS: - Mike Crawford - Ben Maurer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/recaptcha-php/README b/recaptcha-php/README deleted file mode 100644 index 21f1a27..0000000 --- a/recaptcha-php/README +++ /dev/null @@ -1,7 +0,0 @@ -reCAPTCHA README -================ - -The reCAPTCHA PHP Lirary helps you use the reCAPTCHA API. Documentation -for this library can be found at - - http://recaptcha.net/plugins/php diff --git a/recaptcha-php/example-captcha.php b/recaptcha-php/example-captcha.php deleted file mode 100644 index 1c4ca5f..0000000 --- a/recaptcha-php/example-captcha.php +++ /dev/null @@ -1,37 +0,0 @@ -<html> - <body> - <form action="" method="post"> -<?php - -require_once('recaptchalib.php'); - -// Get a key from http://recaptcha.net/api/getkey -$publickey = ""; -$privatekey = ""; - -# the response from reCAPTCHA -$resp = null; -# the error code from reCAPTCHA, if any -$error = null; - -# was there a reCAPTCHA response? -if ($_POST["recaptcha_response_field"]) { - $resp = recaptcha_check_answer ($privatekey, - $_SERVER["REMOTE_ADDR"], - $_POST["recaptcha_challenge_field"], - $_POST["recaptcha_response_field"]); - - if ($resp->is_valid) { - echo "You got it!"; - } else { - # set the error code so that we can display it - $error = $resp->error; - } -} -echo recaptcha_get_html($publickey, $error); -?> - <br/> - <input type="submit" value="submit" /> - </form> - </body> -</html> diff --git a/recaptcha-php/example-mailhide.php b/recaptcha-php/example-mailhide.php deleted file mode 100644 index e389eb9..0000000 --- a/recaptcha-php/example-mailhide.php +++ /dev/null @@ -1,17 +0,0 @@ -<html><body> -<? -require_once ("recaptchalib.php"); - -// get a key at http://mailhide.recaptcha.net/apikey -$mailhide_pubkey = ''; -$mailhide_privkey = ''; - -?> - -The Mailhide version of example@example.com is -<? echo recaptcha_mailhide_html ($mailhide_pubkey, $mailhide_privkey, "example@example.com"); ?>. <br> - -The url for the email is: -<? echo recaptcha_mailhide_url ($mailhide_pubkey, $mailhide_privkey, "example@example.com"); ?> <br> - -</body></html> diff --git a/recaptcha-php/keys.php.example b/recaptcha-php/keys.php.example deleted file mode 100644 index 4355a6c..0000000 --- a/recaptcha-php/keys.php.example +++ /dev/null @@ -1,5 +0,0 @@ -<?php - // Put the keys you got from the signup page - $publickey = ""; - $privatekey = ""; -?>
\ No newline at end of file diff --git a/recaptcha-php/recaptchalib.php b/recaptcha-php/recaptchalib.php deleted file mode 100644 index 897c509..0000000 --- a/recaptcha-php/recaptchalib.php +++ /dev/null @@ -1,277 +0,0 @@ -<?php -/* - * This is a PHP library that handles calling reCAPTCHA. - * - Documentation and latest version - * http://recaptcha.net/plugins/php/ - * - Get a reCAPTCHA API Key - * http://recaptcha.net/api/getkey - * - Discussion group - * http://groups.google.com/group/recaptcha - * - * Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net - * AUTHORS: - * Mike Crawford - * Ben Maurer - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -/** - * The reCAPTCHA server URL's - */ -define("RECAPTCHA_API_SERVER", "http://api.recaptcha.net"); -define("RECAPTCHA_API_SECURE_SERVER", "https://api-secure.recaptcha.net"); -define("RECAPTCHA_VERIFY_SERVER", "api-verify.recaptcha.net"); - -/** - * Encodes the given data into a query string format - * @param $data - array of string elements to be encoded - * @return string - encoded request - */ -function _recaptcha_qsencode ($data) { - $req = ""; - foreach ( $data as $key => $value ) - $req .= $key . '=' . urlencode( stripslashes($value) ) . '&'; - - // Cut the last '&' - $req=substr($req,0,strlen($req)-1); - return $req; -} - - - -/** - * Submits an HTTP POST to a reCAPTCHA server - * @param string $host - * @param string $path - * @param array $data - * @param int port - * @return array response - */ -function _recaptcha_http_post($host, $path, $data, $port = 80) { - - $req = _recaptcha_qsencode ($data); - - $http_request = "POST $path HTTP/1.0\r\n"; - $http_request .= "Host: $host\r\n"; - $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n"; - $http_request .= "Content-Length: " . strlen($req) . "\r\n"; - $http_request .= "User-Agent: reCAPTCHA/PHP\r\n"; - $http_request .= "\r\n"; - $http_request .= $req; - - $response = ''; - if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) { - die ('Could not open socket'); - } - - fwrite($fs, $http_request); - - while ( !feof($fs) ) - $response .= fgets($fs, 1160); // One TCP-IP packet - fclose($fs); - $response = explode("\r\n\r\n", $response, 2); - - return $response; -} - - - -/** - * Gets the challenge HTML (javascript and non-javascript version). - * This is called from the browser, and the resulting reCAPTCHA HTML widget - * is embedded within the HTML form it was called from. - * @param string $pubkey A public key for reCAPTCHA - * @param string $error The error given by reCAPTCHA (optional, default is null) - * @param boolean $use_ssl Should the request be made over ssl? (optional, default is false) - - * @return string - The HTML to be embedded in the user's form. - */ -function recaptcha_get_html ($pubkey, $error = null, $use_ssl = false) -{ - if ($pubkey == null || $pubkey == '') { - die ("To use reCAPTCHA you must get an API key from <a href='http://recaptcha.net/api/getkey'>http://recaptcha.net/api/getkey</a>"); - } - - if ($use_ssl) { - $server = RECAPTCHA_API_SECURE_SERVER; - } else { - $server = RECAPTCHA_API_SERVER; - } - - $errorpart = ""; - if ($error) { - $errorpart = "&error=" . $error; - } - return '<script type="text/javascript" src="'. $server . '/challenge?k=' . $pubkey . $errorpart . '"></script> - - <noscript> - <iframe src="'. $server . '/noscript?k=' . $pubkey . $errorpart . '" height="300" width="500" frameborder="0"></iframe><br/> - <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea> - <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/> - </noscript>'; -} - - - - -/** - * A ReCaptchaResponse is returned from recaptcha_check_answer() - */ -class ReCaptchaResponse { - var $is_valid; - var $error; -} - - -/** - * Calls an HTTP POST function to verify if the user's guess was correct - * @param string $privkey - * @param string $remoteip - * @param string $challenge - * @param string $response - * @param array $extra_params an array of extra variables to post to the server - * @return ReCaptchaResponse - */ -function recaptcha_check_answer ($privkey, $remoteip, $challenge, $response, $extra_params = array()) -{ - if ($privkey == null || $privkey == '') { - die ("To use reCAPTCHA you must get an API key from <a href='http://recaptcha.net/api/getkey'>http://recaptcha.net/api/getkey</a>"); - } - - if ($remoteip == null || $remoteip == '') { - die ("For security reasons, you must pass the remote ip to reCAPTCHA"); - } - - - - //discard spam submissions - if ($challenge == null || strlen($challenge) == 0 || $response == null || strlen($response) == 0) { - $recaptcha_response = new ReCaptchaResponse(); - $recaptcha_response->is_valid = false; - $recaptcha_response->error = 'incorrect-captcha-sol'; - return $recaptcha_response; - } - - $response = _recaptcha_http_post (RECAPTCHA_VERIFY_SERVER, "/verify", - array ( - 'privatekey' => $privkey, - 'remoteip' => $remoteip, - 'challenge' => $challenge, - 'response' => $response - ) + $extra_params - ); - - $answers = explode ("\n", $response [1]); - $recaptcha_response = new ReCaptchaResponse(); - - if (trim ($answers [0]) == 'true') { - $recaptcha_response->is_valid = true; - } - else { - $recaptcha_response->is_valid = false; - $recaptcha_response->error = $answers [1]; - } - return $recaptcha_response; - -} - -/** - * gets a URL where the user can sign up for reCAPTCHA. If your application - * has a configuration page where you enter a key, you should provide a link - * using this function. - * @param string $domain The domain where the page is hosted - * @param string $appname The name of your application - */ -function recaptcha_get_signup_url ($domain = null, $appname = null) { - return "http://recaptcha.net/api/getkey?" . _recaptcha_qsencode (array ('domain' => $domain, 'app' => $appname)); -} - -function _recaptcha_aes_pad($val) { - $block_size = 16; - $numpad = $block_size - (strlen ($val) % $block_size); - return str_pad($val, strlen ($val) + $numpad, chr($numpad)); -} - -/* Mailhide related code */ - -function _recaptcha_aes_encrypt($val,$ky) { - if (! function_exists ("mcrypt_encrypt")) { - die ("To use reCAPTCHA Mailhide, you need to have the mcrypt php module installed."); - } - $mode=MCRYPT_MODE_CBC; - $enc=MCRYPT_RIJNDAEL_128; - $val=_recaptcha_aes_pad($val); - return mcrypt_encrypt($enc, $ky, $val, $mode, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"); -} - - -function _recaptcha_mailhide_urlbase64 ($x) { - return strtr(base64_encode ($x), '+/', '-_'); -} - -/* gets the reCAPTCHA Mailhide url for a given email, public key and private key */ -function recaptcha_mailhide_url($pubkey, $privkey, $email) { - if ($pubkey == '' || $pubkey == null || $privkey == "" || $privkey == null) { - die ("To use reCAPTCHA Mailhide, you have to sign up for a public and private key, " . - "you can do so at <a href='http://mailhide.recaptcha.net/apikey'>http://mailhide.recaptcha.net/apikey</a>"); - } - - - $ky = pack('H*', $privkey); - $cryptmail = _recaptcha_aes_encrypt ($email, $ky); - - return "http://mailhide.recaptcha.net/d?k=" . $pubkey . "&c=" . _recaptcha_mailhide_urlbase64 ($cryptmail); -} - -/** - * gets the parts of the email to expose to the user. - * eg, given johndoe@example,com return ["john", "example.com"]. - * the email is then displayed as john...@example.com - */ -function _recaptcha_mailhide_email_parts ($email) { - $arr = preg_split("/@/", $email ); - - if (strlen ($arr[0]) <= 4) { - $arr[0] = substr ($arr[0], 0, 1); - } else if (strlen ($arr[0]) <= 6) { - $arr[0] = substr ($arr[0], 0, 3); - } else { - $arr[0] = substr ($arr[0], 0, 4); - } - return $arr; -} - -/** - * Gets html to display an email address given a public an private key. - * to get a key, go to: - * - * http://mailhide.recaptcha.net/apikey - */ -function recaptcha_mailhide_html($pubkey, $privkey, $email) { - $emailparts = _recaptcha_mailhide_email_parts ($email); - $url = recaptcha_mailhide_url ($pubkey, $privkey, $email); - - return htmlentities($emailparts[0]) . "<a href='" . htmlentities ($url) . - "' onclick=\"window.open('" . htmlentities ($url) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"Reveal this e-mail address\">...</a>@" . htmlentities ($emailparts [1]); - -} - - -?> diff --git a/registration.php b/registration.php deleted file mode 100644 index ee93bb5..0000000 --- a/registration.php +++ /dev/null @@ -1,145 +0,0 @@ -<?php - require_once('includes/libs/libmysql.php'); - require_once('includes/models/account.php'); - require_once('recaptcha-php/recaptchalib.php'); - - require_once('recaptcha-php/keys.php'); - - $enable_captcha = true; // modify this in production - - $showform = true; - - if (isset($_POST['register']) && $_POST['register'] == "true") - { - $showform = false; - $err = ""; - $acc = new TMWAccount(); - $acc->setUsername($_POST['username']); - $acc->setPassword($_POST['password1']); - $acc->setEMail($_POST['email']); - $acc->setGender($_POST['gender']); - - $val = $acc->validate(); - if (is_array($val)) - { - foreach( $val as $error) - { - $err .= $error . "<br />"; - } - $showform = true; - } - - if ($_POST['password2'] != $_POST['password1']) - { - $err .= "The given passwords don't match!"; $showform = true; - } - - if (TMWAccount::existsUsername( $_POST['username'] )) - { - $err .= "The username is in use!"; $showform = true; - } - - if ($enable_captcha) - { - // check captcha - $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], - $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); - - if (!$resp->is_valid) - { - $err .= "The captcha was incorrect!"; $showform = true; - } - } - - if (!$showform) - { - // create the account - if (!$acc->storeAccount()) - { - $err = "The was an unknown error while storing your new account"; - $showform = true; - } - } - } - - include("includes/common.php"); - placeHeader("Registration"); - - - if ($showform) - { - -?> -<p>With this form you can register for a new account. <i>We will never give your email to someone else or send you spam! Its only purpose is to be able to send you back whether account creation succeeded.</i></p> - -<p style="background-color: #ede2da; padding: 5px; border: 1px solid -#9f9894; border-radius: 10px;"><i>Security warning:</i> Do not use the same username and password on -two different servers. The server admins can read all of them in clear text and -nothing stops them from trying them on other servers. It happened a lot in the -past that users of the official server got "hacked" because they ignored this -important precaution.</p> - -<form action="registration.php" method="post"> - - <input type="hidden" name="register" value="true" /> - <table> - <?php if (isset($err)) - { - echo "<tr><td colspan=\"2\" style=\"border: 1px solid red; color: red;\">" . - $err . "</td></tr>"; - } - ?> - <tr> - <td>Username:</td> - <td><input type="text" size="20" name="username" /></td> - </tr> - <tr> - <td>Password:</td> - <td><input type="password" size="20" name="password1" /></td> - </tr> - <tr> - <td>Retype password:</td> - <td><input type="password" size="20" name="password2" /></td> - </tr> - <tr> - <td>EMail:</td> - <td><input type="text" size="30" name="email" /></td> - </tr> - <tr> - <td>Gender:</td> - <td> - <select name="gender"> - <option value="0" selected></option> - <option value="1">Male</option> - <option value="2">Female</option> - </select> - </td> - </tr> - <tr> - <td colspan="2"> - <?php echo recaptcha_get_html($publickey); ?> - </td> - </tr> - <tr> - <td colspan="2" style="text-align:right"> - <input type="submit" value="Register" /> - </td> - </tr> - </table> -</form> - - -<?php - - } // end of showform - else - { - ?> - <p>Your account was scheduled for creation! In a few minutes you should receive an email with verification of your new account.</p> - - <p><em>If the account doesn't work after five minutes, please contact Freeyorp or Frost on the forums or IRC. We can make it for you.</em></p> - - <?php } - placeFooter(); -?> - diff --git a/sql/createTables.sql b/sql/createTables.sql deleted file mode 100644 index 6442b6b..0000000 --- a/sql/createTables.sql +++ /dev/null @@ -1,13 +0,0 @@ -CREATE TABLE `tmw_accounts` -( - `ID` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , - `USERNAME` VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL , - `PASSWORD` VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL , - `EMAIL` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL , - `STATE` TINYINT UNSIGNED NOT NULL DEFAULT '0', - `REGISTRATION` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , - `GENDER` TINYINT UNSIGNED NOT NULL DEFAULT '0', - -- - INDEX ( `STATE` ) , - UNIQUE ( `USERNAME` ) -) ENGINE = InnoDB; |