<?

require_once("include/bittorrent.php");

hit_start();

dbconn();

$res = mysql_query("SELECT COUNT(*) FROM users") or sqlerr(__FILE__, __LINE__);
$arr = mysql_fetch_row($res);
if ($arr[0] >= $GLOBALS["MAX_INVITES"])
	stderr("Fehler", "Sorry, das Benutzerlimit wurde erreicht. Bitte versuche es später erneut.");

if (!mkglobal("wantusername:wantpassword:passagain:invite:email"))
die();

function bark($msg) {
stdhead();
stdmsg("Anmeldung fehlgeschlagen!", $msg);
stdfoot();
exit;
}

function validusername($username)
{
if ($username == "")
return false;

// The following characters are allowed in user names
$allowedchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

for ($i = 0; $i < strlen($username); ++$i)
if (strpos($allowedchars, $username[$i]) === false)
return false;

return true;
}

function isportopen($port)
{
global $HTTP_SERVER_VARS;
$sd = @fsockopen($HTTP_SERVER_VARS["REMOTE_ADDR"], $port, $errno, $errstr, 1);
if ($sd)
{
fclose($sd);
return true;
}
else
return false;
}
/*
function isproxy()
{
$ports = array(80, 88, 1075, 1080, 1180, 1182, 2282, 3128, 3332, 5490, 6588, 7033, 7441, 8000, 8080, 8085, 8090, 8095, 8100, 8105, 8110, 8888, 22788);
for ($i = 0; $i < count($ports); ++$i)
if (isportopen($ports[$i])) return true;
return false;
}
*/

if (empty($wantusername) || empty($wantpassword) || empty($email))
	bark("Du musst alle Felder ausfüllen.");

if (strlen($wantusername) > 12)
	bark("Sorry, Dein Benutzername ist zu lang (Maximum sind 12 Zeichen)");

if ($wantpassword != $passagain)
	bark("Die Passwörter stimmen nicht überein! Du musst Dich vertippt haben. bitte versuche es erneut!");

if (strlen($wantpassword) < 6)
	bark("Sorry, Dein Passwort ist zu kurz (Mindestens 6 Zeichen)");

if (strlen($wantpassword) > 40)
	bark("Sorry, Dein Passwort ist zu lang (Maximal 40 Zeichen)");

if ($wantpassword == $wantusername)
	bark("Sorry, Dein Passwort darf nicht mit Deinem Benutzernamen identisch sein.");

if (!validemail($email))
	bark("Die E-Mail Adresse sieht nicht so aus, als ob sie gültig wäre.");

if (!validusername($wantusername))
	bark("Ungültiger Benutzername.");

// Trash-/Freemail Anbieter sind nicht gewünscht.
foreach ($GLOBALS["EMAIL_BADWORDS"] as $badword) {
    if (preg_match("/".preg_quote($badword)."/i", $email))
	stderr("Anmeldung fehlgeschlagen", "Diese E-Mail Adresse kann nicht für eine Anmeldung an diesem Tracker verwendet werden. Wir akzeptieren keine Wegwerf-Mailadressen!");
}

// make sure user agrees to everything...
 if ($HTTP_POST_VARS["rulesverify"] != "yes" || $HTTP_POST_VARS["faqverify"] != "yes" || $HTTP_POST_VARS["ageverify"] != "yes")
	stderr("Anmeldung fehlgeschlagen", "Sorry, aber Du bist nicht dafür qualifiziert, ein Mitglied dieser Seite zu werden.");


hit_count();

$secret = mksecret();
$wantpasshash = md5($secret . $wantpassword . $secret);
$editsecret = mksecret();
$passkey = mksecret(8);

$r = mysql_query("SELECT inviter, inviteid, confirmed FROM invites WHERE invite='$invite'");

if (mysql_num_rows($r) == 0)
bark ("Der Invitecode $invite wurde nicht gefunden, versuche es noch einmal.");

$a = mysql_fetch_assoc($r);

if ($a["inviteid"]!=0)
bark ("Der Invitecode $invite wurde schon benutzt. Frage deinen Inviter nach einem neuen Code.");

if($HTTP_POST_VARS["webseed"] == "yes"){
$ret = mysql_query("INSERT INTO users (username, passhash, passkey, secret, status, editsecret, invitedby, last_login, webseed, email, ". (!$arr[0]?"class, ":"") ."added) VALUES (" .
implode(",", array_map("sqlesc", array($wantusername, $wantpasshash, $passkey, $secret, pending, $editsecret, $a['inviter'], get_date_time(), yes, $email))).
", ". (!$arr[0]?UC_SYSOP.", ":""). "'". get_date_time() ."')");
}else{
$ret = mysql_query("INSERT INTO users (username, passhash, passkey, secret, status, editsecret, invitedby, last_login, email, ". (!$arr[0]?"class, ":"") ."added) VALUES (" .
implode(",", array_map("sqlesc", array($wantusername, $wantpasshash, $passkey, $secret, pending, $editsecret, $a['inviter'], get_date_time(), $email))).
", ". (!$arr[0]?UC_SYSOP.", ":""). "'". get_date_time() ."')");
}

if (!$ret) {
if (mysql_errno() == 1062)
bark("Der Username existiert bereits!");
bark("borked");
}

$id = mysql_insert_id();

//write_log("Der Useraccount $id ($wantusername) wurde erfolgreich erstellt");

$psecret = md5($editsecret);

$ret = mysql_query("UPDATE invites SET inviteid=$id, confirmed='yes' WHERE invite='$invite'");

if($arr[0])
$id = mysql_insert_id();

//write_log("Es wurde der Useraccount $id ($wantusername) angelegt.");

$psecret = md5($editsecret);


//mail($email, "$SITENAME user registration confirmation", $body, "From: $SITEEMAIL", "-f$SITEEMAIL");

stdhead();
 print("<table cellpadding=4 cellspacing=1 border=0 style=width:100% class=tableinborder>
<tr class=tabletitle width=100%>
<td colspan=10 width=100%><span class=normalfont><center><b>Registrierung erfolgreich</b></center></span></td></tr>
<tr><td width=100% class=tablea>
Die Registrierung war erfolgreich! Dein Inviter muss nur noch deinen Account manuell aktivieren, danach kannst du dich auf dem Tracker einloggen.
</td></tr></table>");
 stdfoot();

hit_end();

?>