1) { header('Location: http://htnsrv.org/pub.php'); exit; }
define('IN_HTN',1);
$starttime=microtime();
include('config.php');
if (!$htnlan_installed)
{
header("Location: install.php");
}
include('gres.php');
include('layout.php');
define('REG_CODE_LEN',24,false);
$action=$_REQUEST['page'];
if($action=='') $action=$_REQUEST['mode'];
if($action=='') $action=$_REQUEST['action'];
if($action=='') $action=$_REQUEST['a'];
if($action=='') $action=$_REQUEST['m'];
if($action=='') $action=$_REQUEST['d'];
function showdoc($te='',$fn) {
if($te!='') $x=' - '.$te;
createlayout_top('HackTheNet'.$x);
$x='data/pubtxt/'.$fn;
if(file_exists($x.'.txt'))
readfile($x.'.txt');
else @include($x.'.php');
createlayout_bottom();
}
function showdoc_single($te='',$fn) {
if($te!='') $x=' - '.$te;
createlayout_top();
$x='data/pubtxt/'.$fn;
if(file_exists($x.'.txt'))
readfile($x.'.txt');
else @include($x.'.php');
createlayout_bottom();
}
switch($action) {
case 'faq': showdoc('FAQ','faq'); break;
case 'credits': showdoc('Team','credits'); break;
case 'newpwd': showdoc_single('Neues Passwort anfordern','newpwd'); break;
case 'rules': showdoc('Regeln','rules'); break;
case 'chat': showdoc('Chat','chat'); break;
case 'impressum': showdoc('Impressum','impressum'); break;
case 'refinfo': showdoc('Werben von neuen Benutzern','refinfo'); break;
case 'regelverstoss': showdoc('Regelverstoß melden','regelverstoss'); break;
break;
case 'register':
createlayout_top('HackTheNet - Account anlegen');
echo '
';
if ($notif=='') {
echo '
'."\n";
echo '
Wichtig! '."\n";
echo '
Jeder User verpflichtet sich, die Regeln einzuhalten. '.LF.'Verstöße gegen die Regeln führen zum Ausschluss vom Spiel!
'."\n";
echo '
'."\n";
}
echo $notif.'
Schritt 1: Zugangsdaten und Server
';
createlayout_bottom();
break;
case 'baduser':
$nick1=$_POST['nick1'];
$nick2=trim($_POST['nick2']);
$text=trim($_POST['text']);
createlayout_top('HackTheNet - Regelverstoß');
echo '
Regelverstoß gemeldet
';
if($nick2!='' & $text!='') {
@mail('info@htn-lan.com',
'Regelverstoß gemeldet von '.$nick1,
$nick2.' hat angeblich folgendes getan:'.LF."\n".$text,
'From: HackTheNet
');
echo 'Gemeldet. Danke für deine Hilfe!
';
} else echo 'Fehler Du musst schon den User angeben, der gegen die Regeln verstoßen hat! Auch was er getan hat, ist wichtig!
';
echo ' '; createlayout_bottom();
break;
case 'comment':
$newsid=$_REQUEST['id'];
if (!is_numeric($newsid)) { echo 'hacking attempt.'; exit(); }
$news=getnews($newsid);
if($news!=false) {
createlayout_top('HackTheNet - News - '.$news['kategorie'].' :: '.$news['title'].'');
echo '
'.$news['kategorie'].' :: '.$news['title'].' ';
echo '
Erstellt am: '.date("d.m.Y", $news['time']).', '.date("H:i", $news['time']).' Uhr ';
if ($_GET['b']=="") {
$relatedlinks='';
if ($news['url1']!="" && $news['link1']!="") { $relatedlinks.="
".$news['link1']." "; }
if ($news['url2']!="" && $news['link2']!="") { $relatedlinks.="
".$news['link2']." "; }
if ($news['url3']!="" && $news['link3']!="") { $relatedlinks.="
".$news['link3']." "; }
if ($relatedlinks=="") { $relatedlinks="
nicht vorhanden "; }
if ($usr['stat']>=100) { $adminoption="
edit |
del "; }
else { $adminoption=""; }
echo "
".$news['kategorie']." :: ".$news['title']." ".$adminoption." Related Links:
".text_replace(nl2br($news['text']))." ".$relatedlinks."
erstellt am: ".date("d.m.Y", $news['time']).", ".date("H:i", $news['time'])." Uhr von ".$news['autor']."
";
$comments_pro_page=5;
$page=$_GET['p'];
$maxpages=ceil(mysql_num_rows(mysql_query('SELECT id FROM news_comment WHERE news_id='.$newsid))/$comments_pro_page);
if ($page=="") { $page=1; }
if (!is_numeric($page)) { echo 'hacking attempt.'; exit(); }
if ($page<1) { $page=1; }
if ($page>$maxpages) { $page=1; }
$sql=mysql_query('SELECT * FROM news_comment WHERE news_id='.mysql_escape_string($newsid).' ORDER BY id ASC LIMIT '.($page -1) * $comments_pro_page.','.$comments_pro_page);
if (mysql_num_rows($sql)>0) {
echo "
Kommentare ";
echo "
";
if ($maxpages>1) {
$pagem = $page - 1;
$pagep = $page + 1;
$pagepp = $page + 2;
echo "
« ";
if (!($page == "1")) {
echo "< ";
}
else {
echo "< ";
}
if ($page == "1") {
echo "1 ";
if ($maxpages >= "2") { echo "2 "; }
if ($maxpages >= "3") { echo "3 "; }
}
else {
if ($maxpages >= $pagem) { echo "".$pagem." "; }
if ($maxpages >= $page) { echo $page." "; }
if ($maxpages >= $pagep) { echo "".$pagep." "; }
}
if ($pagep > $maxpages) {
echo "> ";
}
else {
echo "> ";
}
echo "» ";
}
} else { echo '
Kommentare '."\n"; echo'
Es wurden noch keine Kommentare geschrieben
'."\n"; }
if ($usr['name']!="") {
echo "
";
}
}
if ($_GET['b']=="add" && $usr['name']!="") {
if (strlen($_POST['text'])>1000) { echo 'Übertreib es nicht. Text maximal 1000 Zeichen'; exit(); }
elseif (strlen($_POST['titel'])>40) { echo 'Übertreib es nicht. Titel maximal 40 Zeichen'; exit(); }
elseif ($_POST['titel']=="") { echo 'Titel wurde nicht angegeben.'; }
elseif ($_POST['text']=="") { echo 'Text wurde nicht angegeben.'; }
else {
mysql_query('INSERT INTO news_comment(`id`, `autor`, `autor_id`, `ip`, `time`, `news_id`, `text`, `titel`) VALUES("", "'.$usr['name'].'", "'.$usrid.'", "'.$usr['sid_ip'].'", "'.time().'", "'.$newsid.'", "'.text_replace(mysql_escape_string(htmlspecialchars($_POST['text']))).'", "'.text_replace(mysql_escape_string(htmlspecialchars($_POST['titel']))).'")');
echo '
Kommentar wurde hinzugefügt. ';
}
}
} else simple_message('Diesen News-Eintrag gibt es nicht!');
createlayout_bottom();
break;
case 'regsubmit': // ----------------------- RegSubmit --------------------------
$email=trim($_POST['email']);
$nick=trim($_POST['nick']);
$server=(int)$_POST['server'];
if($server<1 || $server>2) $server=2;
mysql_select_db(dbname($server));
$info=gettableinfo('users',dbname($server)); if($info['Rows']>=MAX_USERS_PER_SERVER) exit;
$e=false;
$badwords='rio|schnitzel|unknown|xxxunknownxxx|admin|4dmin|adm1n|@dmin|fuck|fick|sex|porn|penis|vagina|arsch|hitler|himmler|goebbels|göbbels|hure|nutte|fotze|bitch|schlampe';
# nein, king ist kein böses, sondern ein reserviertes wort ^^
$nickzeichen='abcdefghijklmnopqrstuvwxyzäüöABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜß0123456789_-:@.!=?\$%/&';
function checknick($nick) {
global $STYLESHEET, $REMOTE_FILES_DIR, $DATADIR, $nickzeichen;
$b=true;
$len=strlen($nick);
for($i=0;$i<$len;$i++) {
$zz=substr($nick,$i,1);
if(strstr($nickzeichen,(string)$zz)==false) {
$b=false; break;
}
}
$x=eregi_replace('[-_:@.!=?$%&/0-9]','',$nick);
if(trim($x)=='') $b=false;
return $b;
}
$result = mysql_query('SELECT * FROM blacklist WHERE name="'.$nick.'" || email = "'.$email.'"');
if($nick!='') {
if(mysql_num_rows($result)>0) { $e=true; $msg.='Du stehst auf der HTN.Lan Blacklist!
'; }
if(getuser($email,'email')!==false) { $e=true; $msg.='Ein Benutzer mit dieser Emailadresse existiert bereits!
'; }
if(getuser($nick,'name')!==false) { $e=true; $msg.='Ein Benutzer mit diesem Nicknamen existiert bereits!
'; }
if(checknick($nick)==false) {
$e=true; $msg.='Der Nickname darf NUR die Zeichen
'.$nickzeichen.' enthalten. Außerdem darf er nicht nur aus Sonderzeichen bestehen.
'; }
if(strlen($nick)<3 | strlen($nick)>20) { $e=true; $msg.='Der Nickname muss zwischen 3 und 20 Zeichen lang sein.
'; }
$x=eregi_replace('[-_:@.!=?$%&/0-9]','',$nick);
if(eregi('('.$badwords.')',$x)!=false) { $e=true; $msg.='Der Nickname darf bestimmte Wörter nicht enthalten.
'; }
} else { $e=true; $msg.='Bitte Nickname eingeben.
'; }
if(!check_email($email)) { $e=true; $msg.='Bitte eine gültige Email-Adresse im Format x@y.z angeben.
'; }
$javascript=file_get('data/pubtxt/selcountry_head.txt');
if($e==false) {
createlayout_top('HackTheNet - Account anlegen');
$pwd=generateMnemonicPassword();
$tmpfnx=randomx(REG_CODE_LEN);
$tmpfn='data/regtmp/'.$tmpfnx.'.txt';
file_put($tmpfn,$nick.'|'.$email.'|'.$pwd.'|'.$server);
$selcode=str_replace('%path%','images/maps',file_get('data/pubtxt/selcountry_body.txt'));
echo '
Schritt 2: Land auswählen
Bitte wähle jetzt, in welchem Land der Erde dein Computer stehen soll. Natürlich nur im Spiel und nicht in echt...
'.$selcode.'
';
createlayout_bottom();
} else {
header('Location:pub.php?a=register&error='.urlencode($msg));
}
break;
case 'regsubmit2': // ----------------------- RegSubmit 2 --------------------------
$tmpfnx=$_POST['code'];
$fn='data/regtmp/'.$tmpfnx.'.txt';
list($nick,$email,$pwd,$server)=explode('|',file_get($fn));
mysql_select_db(dbname($server));
createlayout_top('HackTheNet - Account anlegen');
echo '
';
$country=$_POST['country'];
# IST DAS LAND VOLL ? START
$c=GetCountry('id',$country);
$subnet=$c[subnet];
$r=db_query('SELECT `id` FROM `pcs` WHERE `ip` LIKE \''.mysql_escape_string($subnet).'.%\';');
$cnt=mysql_num_rows($r);
$xip=$cnt+1;
if($xip > 254) {
@unlink('data/regtmp/'.$tmpfnx.'.txt');
echo '
Sorry
Das gewählte Land ist schon "voll"! Bitte such dir ein anderes Land aus!
';
echo '
'.LF.'
'; createlayout_bottom();
exit;
}
# IST DAS LAND VOLL ? X_END
file_put($fn,$nick.'|'.$email.'|'.$pwd.'|'.$country.'|'.$server);
if($nick=='' || $email=='' || $pwd=='' || $country=='' || $server=='') { simple_message_single('FEHLER AUFGETRETEN!','error'); exit; }
$body='Hallo '.$nick.'!'.LF."\n".'Du hast dich bei HTN.LAN angemeldet!';
$body.=' Hier sind deine Zugangsdaten!'.LF."\n".'Nickname: '.$nick."\n".'Passwort: '.$pwd."\n"."\n".'Bevor du deinen';
$body.=' neuen Account nutzen kannst, musst du ihn aktivieren! Rufe dazu die folgende URL in deinem Browser auf:'.LF."\n";
/*if($localhost) $body.='
aktivieren ';*/
$body.="\n";
if(@mail($email,'Dein HTN.LAN Account',$body,'From: HTN.LAN
')) {
readfile('data/pubtxt/regok.txt');
} else {
echo nl2br($body);
}
echo ' '.LF.''; createlayout_bottom();
break;
case 'regactivate': // ----------------------- RegActivate --------------------------
if(strlen($_GET[code])<>REG_CODE_LEN) { simple_message('Keine Hackversuche bitte!'); exit; }
$fn='data/regtmp/'.$_GET['code'].'.txt';
if(file_exists($fn)==false) {
simple_message('Ungültiger Registrierungscode!');
} else {
$a=explode('|',file_get($fn));
list($nick,$email,$pwd,$country,$server)=explode('|',file_get($fn));
unlink($fn);
mysql_select_db(dbname($server));
if(getuser($nick,'name')!==false) { simple_message('Ein Benutzer mit diesem Nicknamen existiert bereits!'); }
$tableinfo=GetTableInfo('users',dbname($server));
$autoindex=$tableinfo['Auto_increment'];
$r=addpc($country,$autoindex);
if($r!=false) {
$ts=time();
if ($only_big_accounts)
{
db_query('INSERT INTO users(name, email, password, pcs, liu, lic, clusterstat, login_time, bigacc)'.'VALUES(\''.mysql_escape_string($nick).'\',\''.mysql_escape_string($email).'\',\''.md5($pwd).'\', \''.mysql_escape_string($r).'\', \''.mysql_escape_string($ts).'\', \''.mysql_escape_string($ts).'\', 0, \''.mysql_escape_string($ts).'\',\'yes\');');
} else {
db_query('INSERT INTO users(name, email, password, pcs, liu, lic, clusterstat, login_time, bigacc)'.'VALUES(\''.mysql_escape_string($nick).'\',\''.mysql_escape_string($email).'\',\''.md5($pwd).'\', \''.mysql_escape_string($r).'\', \''.mysql_escape_string($ts).'\', \''.mysql_escape_string($ts).'\', 0, \''.mysql_escape_string($ts).'\',\'no\');');
}
$ownerid=mysql_insert_id();
db_query('UPDATE pcs SET owner=\''.mysql_escape_string($ownerid).'\', owner_name=\''.mysql_escape_string($nick).'\', owner_points=0, owner_cluster=0, owner_cluster_code=\'\' WHERE id='.mysql_escape_string($r));
db_query('INSERT INTO rank_users VALUES(0, '.mysql_escape_string($ownerid).', \''.mysql_escape_string($nick).'\', 0, 0);');
$rank=mysql_insert_id();
db_query('UPDATE users SET rank='.mysql_escape_string($rank).' WHERE id='.mysql_escape_string($ownerid).';');
/*setcookie('ref_user');
setcookie('regc1','yes',time()+24*60*60);
$dummy=reloadsperre_CheckIP(true); # IP speichern
*/
createlayout_top('HackTheNet - Account aktivieren');
echo '
Account aktivieren
';
echo '
Account aktiviert! ';
echo '
Herzlichen Glückwunsch! Dein Account wurde aktiviert! Du kannst dich jetzt auf der Startseite einloggen!
';
} else {
createlayout_top();
echo '
Account aktivieren
';
echo '
Sorry
Das gewählte Land ist schon "voll"! Bitte such dir ein anderes Land aus!
';
}
echo '
'.LF.'
'; createlayout_bottom();
}
break;
case 'newpwdsubmit': // ----------------------- NEW PWD SUBMIT --------------------------
$usrname=strtolower(trim($_REQUEST['nick']));
$email=strtolower(trim($_REQUEST['email']));
$server=(int)$_POST['server'];
if($server<1 || $server>2) $server=1;
mysql_select_db(dbname($server));
if(check_email($email)===true) {
$usr=getuser($usrname,'name');
if($usr!==false) {
if($email==strtolower($usr[email])) {
$pwd=generateMnemonicPassword();
db_query('UPDATE users SET password=\''.md5($pwd).'\' WHERE id=\''.mysql_escape_string($usr['id']).'\';');
if(@mail($email,'Zugangsdaten für HTN.LAN',"\n".'http://www.htn-lan.com/'."\n".'Benutzername: '.$usr['name'].LF.'Passwort: '.$pwd."\n",'From: HTN.LAN
')) {
db_query('UPDATE users SET sid=\'\' WHERE id=\''.mysql_escape_string($usr['id']).'\' LIMIT 1;');
unset($usr);
simple_message_single('Das neue Passwort wurde an Deine Email-Adresse geschickt!');
} else {
# simple_message('Beim Verschicken der Email trat ein Fehler auf!'); // 1. Alte Version
simple_message_single('Neues Passwort: '.$pwd); // 1. Neue Version
/*if($_SERVER[HTTP_HOST]==localhost) echo ' Neues Passwort: '.$pwd;*/ // 1. Wird nicht mehr gebraucht
}
} else { unset($usr); simple_message_single('Falsche Email-Adresse!'); }
} else { unset($usr); simple_message_single('Benutzername unbekannt!'); }
} else { unset($usr); simple_message_single('Email-Adresse ungültig!'); }
break;
case 'stats_old': // ----------------------- STATS --------------------------
createlayout_top('HackTheNet - Statistik');
echo ''."\n";
echo '
Statistik '."\n";
if(mysql_select_db($database_prefix)) {
$uinfo=gettableinfo('users',$database_prefix);
$pcinfo=gettableinfo('pcs',$database_prefix);
$cnt1=$uinfo['Rows'];
$cnt2=$pcinfo['Rows'];
$cnt=$cnt2-$cnt1;
$cnt3=(int)@file_get('data/_server1/logins_'.strftime('%x').'.txt');
$cnt4=GetOnlineUserCnt($server);
echo '
Allgemein
Registrierte User:
'.$cnt1.'
Computer:
'.$cnt2.'
Spieler online:
'.$cnt4.'
Logins heute:
'.$cnt3.'
';
$fn='data/_server1/logins_'.strftime('%Y%m%d',time()-86400).'.txt';
if(file_exists($fn)) {
$cnt=(int)file_get($fn);
echo ''.LF.'Logins gestern: '.LF.''.$cnt.' '.LF.' '."\n";
}
echo '
'."\n";
}
echo "
Erweitert ";
include("statistik/index.php");
echo "\n".'
';
createlayout_bottom();
break;
case 'stats': // ----------------------- STATS --------------------------
createlayout_top();
if(mysql_select_db($database_prefix)) {
$uinfo=gettableinfo('users',$database_prefix);
$pcinfo=gettableinfo('pcs',$database_prefix);
$cnt1=$uinfo['Rows'];
$cnt2=$pcinfo['Rows'];
$cnt=$cnt2-$cnt1;
$cnt3=(int)file_get('data/_server1/logins_'.strftime('%Y%m%d').'.txt');
$cnt4=GetOnlineUserCnt($server);
echo 'Allgemein
Registrierte User:
'.$cnt1.'
Computer:
'.$cnt2.'
Spieler online:
'.$cnt4.'
Logins heute:
'.$cnt3.'
';
$fn='data/_server1/logins_'.strftime('%Y%m%d',time()-86400).'.txt';
if(file_exists($fn)) {
$cnt=(int)file_get($fn);
echo ''.LF.'Logins gestern: '.LF.''.$cnt.' '.LF.' '."\n";
}
echo '
'."\n";
}
echo "
Erweitert ";
include("statistik/index.php");
echo "\n".'
';
createlayout_bottom();
break;
case 'deleteaccount': // ----------------------- DELETE ACCOUNT --------------------------
$code=$_GET['code'];
$x=@file_get('data/regtmp/del_account_'.$code.'.txt');
if($x) {
$x=explode('|',$x);
mysql_select_db(dbname($x[1]));
if($usr=@delete_account($x[0])) {
db_query('INSERT INTO logs SET type=\'deluser\', usr_id=\''.mysql_escape_string($usr['id']).'\', payload=\''.mysql_escape_string($usr['name']).' '.mysql_escape_string($usr['email']).' self-deleted\';');
simple_message('Account '.$usr['name'].' ('.$usrid.') gelöscht!');
} else {
simple_message('Account '.$usr['name'].' existiert nicht!');
}
} else simple_message('Ungültiger Account-Lösch-Code!');
break;
default: // ----------------------- STARTSEITE --------------------------
if (!$htnlan_installed)
{
header("Location: install.php");
} else {
createlayout_top('HTN.LAN');
include('data/pubtxt/startseite.php');
createlayout_bottom();
}
}
/*
function listnews($file) {
$f = fopen($file,'r');
$blub = fread($f,65535);
fclose($f);
$p = xml_parser_create();
xml_parse_into_struct($p,$blub,$values,$index);
xml_parser_free($p);
$pointer = 0;
for($i=0;$i<=sizeof($values);$i++) {
if($values[$i]['tag']=='TITLE') {
$linktitle[$pointer] = $values[$i]['value'];
}
if($values[$i]['tag']=='LINK') {
$linkurl[$pointer] = $values[$i]['value'];
$pointer++;
}
}
echo '';
for($i=1;$i<=sizeof($linktitle);$i++) {
if($linkurl[$i]!='' && $linktitle[$i]!='')
echo ''.$linktitle[$i].' ';
}
echo "
";
}*/
function generateMnemonicPassword() {
$charset[0] = array('a', 'e', 'i', 'o', 'u');
$charset[1] = array('b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'r', 's', 't', 'v', 'w', 'x', 'z');
$specials=array('!', '$', '%', '&', '/', '=', '?', '+', '-', '.', ':', ',', ';', '*', '#','_');
$password = '';
for ($i = 1; $i <= 2; $i++) {
$password .= $charset[$i % 2][array_rand($charset[$i % 2])];
}
$password.=$specials[mt_rand(0,count($specials)-1)];
for ($i = 1; $i <= 2; $i++) {
$password .= $charset[$i % 2][array_rand($charset[$i % 2])];
}
for ($i = 1; $i <= 2; $i++) {
$password .= rand(0, 9);
}
$password.=$charset[1][mt_rand(0,count($charset[1])-1)];
return $password;
}
?>