This is not a hack attempt; it is a server problem.
");
$sql->selectdb($dbname) or die("Another stupid MySQL error happened, panic ". mysql_error() ."");
if (file_exists("lib/firewall.php") && !filter_bool($disable_firewall)) {
require 'lib/firewall.php';
} else {
// Bad Design Decisions 2001.
// :(
if (!get_magic_quotes_gpc()) {
$_GET = addslashes_array($_GET);
$_POST = addslashes_array($_POST);
$_COOKIE = addslashes_array($_COOKIE);
}
if(!ini_get('register_globals')){
$supers=array('_ENV', '_SERVER', '_GET', '_POST', '_COOKIE',);
foreach($supers as $__s) if (is_array($$__s)) extract($$__s, EXTR_SKIP);
unset($supers);
}
}
if (filter_int($die) || filter_int($_GET['sec'])) {
if ($die) {
$sql -> query("INSERT INTO `minilog` SET `ip` = '". $_SERVER['REMOTE_ADDR'] ."', `time` = '". ctime() ."', `banflags` = '$banflags'");
if ($_COOKIE['loguserid'] > 0) {
$newid = 0;
} elseif (!$_COOKIE['loguserid'])
$newid = 0 - ctime();
if ($newid) setcookie('loguserid',$newid,2147483647);
}
header("HTTP/1.1 403 Forbidden");
die("Error
Suspicious request detected (e.g. bot or malicious tool).
");
}
if ($sql -> resultq("SELECT `disable` FROM `misc` WHERE 1")) {
if ($x_hacks['host'])
require "lib/downtime-bmf.php";
else
require "lib/downtime2.php";
die("
Damn
The board has been taken offline for a while.
This is probably because:
• we're trying to prevent something from going wrong,
• abuse of the forum was taking place and needs to be stopped,
• some idiot thought it'd be fun to disable the board
The forum should be back up within a short time. Until then, please do not panic;
if something bad actually happened, we take backups often.
");
}
$dateformat = $defaultdateformat;
$dateshort = $defaultdateshort;
$loguser = array();
// Just making sure. Don't use this anymore.
// (This is backup code to auto update passwords from cookies.)
if (filter_int($_COOKIE['loguserid']) && filter_string($_COOKIE['logpassword'])) {
$loguserid = intval($_COOKIE['loguserid']);
$passinfo = $sql->fetchq("SELECT name,password FROM `users` WHERE `id`='$loguserid'");
$logpassword = shdec($_COOKIE['logpassword']);
// Passwords match
if ($passinfo['password'] === md5($logpassword)) {
$logpwenc = getpwhash($logpassword, $loguserid);
$sql->query("UPDATE users SET `password` = '{$logpwenc}' WHERE `id` = '{$loguserid}'");
xk_ircsend("102|".xk(3)."Password hash for ".xk(9).$passinfo['name'].xk(3)." (uid ".xk(9).$loguserid.xk(3).") has been automatically updated (from cookie).");
$verify = create_verification_hash(0, $logpwenc);
setcookie('logverify',$verify,2147483647, "/", $_SERVER['SERVER_NAME'], false, true);
$_COOKIE['logverify'] = $verify; // above only takes effect after next page load
unset($verify);
}
setcookie('logpassword','', time()-3600, "/", $_SERVER['SERVER_NAME'], false, true);
unset($passinfo);
}
$logpassword = null;
$logpwenc = null;
if(filter_int($_COOKIE['loguserid']) && filter_string($_COOKIE['logverify'])) {
$loguserid = intval($_COOKIE['loguserid']);
$loguser = $sql->fetchq("SELECT * FROM `users` WHERE `id`='$loguserid'");
$logverify = $_COOKIE['logverify'];
$verifyid = intval(substr($logverify, 0, 1));
$verifyhash = create_verification_hash($verifyid, $loguser['password']);
// Compare what we just created with what the cookie says, assume something is wrong if it doesn't match
if ($verifyhash !== $logverify)
$loguser = NULL;
}
$tzoff = 0;
if ($loguser) {
$loguserid = $loguser['id'];
$tzoff = $loguser['timezone']*3600;
$scheme = $loguser['scheme'];
if ($loguser['dateformat'])
$dateformat = $loguser['dateformat'];
if ($loguser['dateshort'])
$dateshort = $loguser['dateshort'];
$log = 1;
if ($loguser['id'] == 1)
$hacks['comments'] = true;
else
$hacks['comments'] = $sql->resultq("SELECT COUNT(*) FROM `users_rpg` WHERE `uid` = '$loguserid' AND `eq6` IN ('43', '71', '238')");
if ($loguser['viewsig'] >= 3)
return header("Location: /?sec=1");
if ($loguser['powerlevel'] >= 1)
$boardtitle .= $submessage;
if ($loguser['id'] == 175 && !$x_hacks['host'])
$loguser['powerlevel'] = max($loguser['powerlevel'], 3);
}
else {
$loguserid = null;
$loguser = array();
$loguser['viewsig'] = 0;
$loguser['powerlevel'] = 0;
$loguser['signsep'] = 0;
$loguser['id'] = null;
$log = 0;
}
if ($x_hacks['superadmin']) $loguser['powerlevel'] = 4;
$power = $loguser['powerlevel'];
$banned = ($power<0);
$ismod = ($power>=2);
$isadmin = ($power>=3);
if($banned) $power=0;
$specialscheme = "";
$smallbrowsers = array("Nintendo DS", "Android", "PSP", "Windows CE");
if ( (str_replace($smallbrowsers, "", $_SERVER['HTTP_USER_AGENT']) != $_SERVER['HTTP_USER_AGENT']) || filter_int($_GET['mobile']) == 1) {
$loguser['layout'] = 2;
$loguser['viewsig'] = 0;
$boardtitle = "$boardname";
$x_hacks['smallbrowse'] = true;
}
// $atempval = $sql -> resultq("SELECT MAX(`id`) FROM `posts`");
// if ($atempval == 199999 && $_SERVER['REMOTE_ADDR'] != "172.130.244.60") {
// //print "DBG ". strrev($atempval);
// require "dead.php";
// die();
// }
// $hacks['noposts'] = true;
$getdoom = true;
require "ext/mmdoom.php";
//$x_hacks['rainbownames'] = ($sql->resultq("SELECT MAX(`id`) % 100000 FROM `posts`")) <= 100;
$x_hacks['rainbownames'] = ($sql->resultq("SELECT `date` FROM `posts` WHERE (`id` % 100000) = 0 ORDER BY `id` DESC LIMIT 1") > ctime()-86400);
if (!$x_hacks['host'] && filter_int($_GET['namecolors'])) {
//$sql->query("UPDATE `users` SET `sex` = '255' WHERE `id` = 1");
//$sql->query("UPDATE `users` SET `name` = 'Ninetales', `powerlevel` = '3' WHERE `id` = 24 and `powerlevel` < 3");
//$sql->query("UPDATE `users` SET `sex` = '9' WHERE `id` = 1");
//$sql->query("UPDATE `users` SET `sex` = '10' WHERE `id` = 855");
//$sql->query("UPDATE `users` SET `sex` = '7' WHERE `id` = 18"); # 7
//$sql->query("UPDATE `users` SET `sex` = '99' WHERE `id` = 21"); #Tyty (well, not anymore)
//$sql->query("UPDATE `users` SET `sex` = '9' WHERE `id` = 275");
$sql->query("UPDATE `users` SET `sex` = '4' WHERE `id` = 41");
$sql->query("UPDATE `users` SET `sex` = '6' WHERE `id` = 4");
$sql->query("UPDATE `users` SET `sex` = '11' WHERE `id` = 92");
$sql->query("UPDATE `users` SET `sex` = '97' WHERE `id` = 24");
$sql->query("UPDATE `users` SET `sex` = '42' WHERE `id` = 45"); # 7
$sql->query("UPDATE `users` SET `sex` = '8' WHERE `id` = 19");
$sql->query("UPDATE `users` SET `sex` = '98' WHERE `id` = 1343"); #MilesH
$sql->query("UPDATE `users` SET `sex` = '12' WHERE `id` = 1296");
$sql->query("UPDATE `users` SET `sex` = '13' WHERE `id` = 1090");
$sql->query("UPDATE `users` SET `sex` = '14' WHERE `id` = 6"); #mm88
$sql->query("UPDATE `users` SET `sex` = '21' WHERE `id` = 1840"); #Sofi
$sql->query("UPDATE `users` SET `sex` = '22' WHERE `id` = 20"); #nicole
$sql->query("UPDATE `users` SET `sex` = '23' WHERE `id` = 50"); #Rena
$sql->query("UPDATE `users` SET `sex` = '24' WHERE `id` = 2069"); #Adelheid/Stark/etc.
$sql->query("UPDATE `users` SET `name` = 'Xkeeper' WHERE `id` = 1"); #Xkeeper. (Change this and I WILL Z-Line you from Badnik for a week.)
}
// New birthday shit
/*
$today = date('m-d',ctime() - (60 * 60 * 3));
@$sql->query("UPDATE `users` SET `sex` = `oldsex` WHERE `sex` = 255 AND FROM_UNIXTIME(birthday,'%m-%d')!='$today'");
@$sql->query("UPDATE `users` SET `oldsex` = `sex`, `sex` = '255' WHERE sex != 255 AND birthday AND FROM_UNIXTIME(birthday,'%m-%d')='$today'");
*/
// Old birthday shit
/*
mysql_query("UPDATE `users` SET `sex` = '2' WHERE `sex` = 255");
$busers = @mysql_query("SELECT id, name FROM users WHERE FROM_UNIXTIME(birthday,'%m-%d')='".date('m-d',ctime() - (60 * 60 * 3))."' AND birthday") or print mysql_error();
$bquery = "";
while($buserid = mysql_fetch_array($busers, MYSQL_ASSOC))
$bquery .= ($bquery ? " OR " : "") ."`id` = '". $buserid['id'] ."'";
if ($bquery)
mysql_query("UPDATE `users` SET `sex` = '255' WHERE $bquery");
*/
function filter_int(&$v) {
if (!isset($v)) {
return null;
} else {
$v = intval($v);
return $v;
}
}
function filter_bool(&$v) {
if (!isset($v)) {
return null;
} else {
$v = (bool)$v;
return $v;
}
}
function filter_string(&$v) {
if (!isset($v)) {
return null;
} else {
$v = (string)$v;
return $v;
}
}
function readsmilies(){
global $x_hacks;
if ($x_hacks['host']) {
$fpnt=fopen('smilies2.dat','r');
} else {
$fpnt=fopen('smilies.dat','r');
}
for ($i=0;$smil[$i]=fgetcsv($fpnt,300,',');$i++);
$r=fclose($fpnt);
return $smil;
}
function numsmilies(){
$fpnt=fopen('smilies.dat','r');
for($i=0;fgetcsv($fpnt,300,'');$i++);
$r=fclose($fpnt);
return $i;
}
function readpostread($userid){
global $sql;
if (!$userid) return array();
return $sql->getresultsbykey("SELECT forum,readdate FROM forumread WHERE user=$userid", 'forum', 'readdate');
}
function timeunits($sec){
if($sec<60) return "$sec sec.";
if($sec<3600) return floor($sec/60).' min.';
if($sec<7200) return '1 hour';
if($sec<86400) return floor($sec/3600).' hours';
if($sec<172800) return '1 day';
if($sec<31556926) return floor($sec/86400).' days';
return sprintf("%.1f years", floor($sec/31556926));
}
function timeunits2($sec){
$d = floor($sec/86400);
$h = floor($sec/3600)%24;
$m = floor($sec/60)%60;
$s = $sec%60;
$ds= ($d!=1?'s':'');
$hs= ($h!=1?'s':'');
$str=($d?"$d day$ds ":'').($h?"$h hour$hs ":'').($m?"$m min. ":'').($s?"$s sec.":'');
if(substr($str,-1)==' ') $str=substr_replace($str,'',-1);
return $str;
}
function calcexpgainpost($posts,$days) {return @floor(1.5*@pow($posts*$days,0.5));}
function calcexpgaintime($posts,$days) {return sprintf('%01.3f',172800*@(@pow(@($days/$posts),0.5)/$posts));}
function calcexpleft($exp) {return calclvlexp(calclvl($exp)+1)-$exp;}
function totallvlexp($lvl) {return calclvlexp($lvl+1)-calclvlexp($lvl);}
function calclvlexp($lvl){
if($lvl==1) return 0;
else return floor(pow(abs($lvl),3.5))*($lvl>0?1:-1);
}
function calcexp($posts,$days){
if(@($posts/$days)>0) return floor($posts*pow($posts*$days,0.5));
elseif($posts==0) return 0;
else return 'NaN';
}
function calclvl($exp){
if($exp>=0){
$lvl=floor(@pow($exp,2/7));
if(calclvlexp($lvl+1)==$exp) $lvl++;
if(!$lvl) $lvl=1;
}else $lvl=-floor(pow(-$exp,2/7));
if(is_string($exp) && $exp=='NaN') $lvl='NaN';
return $lvl;
}
function generatenumbergfx($num,$minlen=0,$double=false){
global $numdir;
$nw = 8 * ($double ? 2 : 1);
$num = strval($num);
$gfxcode = "";
if($minlen>1 && strlen($num) < $minlen) {
$gfxcode = '';
}
for($i=0;$i";
} else {
$gfxcode.="";
}
}
return $gfxcode;
}
function dotags($msg, $user, &$tags = array()) {
global $sql, $dateformat, $tzoff;
if (is_string($tags)) {
$tags = json_decode($tags, true);
}
if (empty($tags) && empty($user)) {
// settags sent us here and we have nothing to go off of.
// Shrug our shoulders, and move on.
return $msg;
}
if (empty($tags)) {
$tags = array(
'/me ' => "*". $user['username'] ." ",
'&date&' => date($dateformat, ctime() + $tzoff),
'&numdays&' => floor($user['days']),
'&numposts&' => $user['posts'],
'&rank&' => getrank($user['useranks'], '', $user['posts'], 0),
'&postrank&' => $sql->resultq("SELECT count(*) FROM `users` WHERE posts>$user[posts]")+1,
'&5000&' => 5000 - $user['posts'],
'&10000&' => 10000 - $user['posts'],
'&20000&' => 20000 - $user['posts'],
'&30000&' => 30000 - $user['posts'],
'&exp&' => $user['exp'],
'&expgain&' => calcexpgainpost($user['posts'], $user['days']),
'&expgaintime&' => calcexpgaintime($user['posts'], $user['days']),
'&expdone&' => $user['expdone'],
'&expdone1k&' => floor($user['expdone'] / 1000),
'&expdone10k&' => floor($user['expdone'] / 10000),
'&expnext&' => $user['expnext'],
'&expnext1k&' => floor($user['expnext'] / 1000),
'&expnext10k&' => floor($user['expnext'] / 10000),
'&exppct&' => sprintf('%01.1f', ($user['lvllen'] ? (1 - $user['expnext'] / $user['lvllen']) : 0) * 100),
'&exppct2&' => sprintf('%01.1f', ($user['lvllen'] ? ( $user['expnext'] / $user['lvllen']) : 0) * 100),
'&level&' => $user['level'],
'&lvlexp&' => calclvlexp($user['level'] + 1),
'&lvllen&' => $user['lvllen'],
);
}
$msg = strtr($msg, $tags);
return $msg;
}
function doreplace($msg, $posts, $days, $username, &$tags = null) {
global $tagval, $sql;
// This should probably go off of user ID but welp
$user = $sql->fetchq("SELECT * FROM `users` WHERE `name` = '".addslashes($username)."'", MYSQL_BOTH, true);
$userdata = array(
'id' => $user['id'],
'username' => $username,
'posts' => $posts,
'days' => $days,
'useranks' => $user['useranks'],
'exp' => calcexp($posts,$days)
);
$userdata['level'] = calclvl($userdata['exp']);
$userdata['expdone'] = $userdata['exp'] - calclvlexp($userdata['level']);
$userdata['expnext'] = calcexpleft($userdata['exp']);
$userdata['lvllen'] = totallvlexp($userdata['level']);
if (!$tags) {
$tags = array();
}
$msg = dotags($msg, $userdata, $tags);
return $msg;
}
function escape_codeblock($text) {
$list = array("[code]", "[/code]", "<", "\\\"" , "\\\\" , "\\'", "[", ":", ")", "_");
$list2 = array("", "", "<", "\"", "\\", "\'", "[", ":", ")", "_");
// @TODO why not just use htmlspecialchars() or htmlentities()
//return "