GetAll("SELECT * FROM `".KU_DBPREFIX."banlist` WHERE ((`type` = '0' AND ( `ipmd5` = '" . md5($ip) . "' OR `ipmd5` = '". md5($_COOKIE['tc_previousip']) . "' )) OR `type` = '1') AND (`expired` = 0)" );
if (count($results)>0) {
foreach($results AS $line) {
if(($line['type'] == 1 && strpos($ip, md5_decrypt($line['ip'], KU_RANDOMSEED)) === 0) || $line['type'] == 0) {
if ($line['until'] != 0 && $line['until'] < time()){
$tc_db->Execute("UPDATE `".KU_DBPREFIX."banlist` SET `expired` = 1 WHERE `id` = ".$line['id']);
$line['expired'] = 1;
$this->UpdateHtaccess();
}
if ($line['globalban']!=1) {
if ((in_array($board, explode('|', $line['boards'])) || $board == '')) {
$line['appealin'] = substr(timeDiff($line['appealat'], true, 2), 0, -1);
$bans[] = $line;
}
} else {
$line['appealin'] = substr(timeDiff($line['appealat'], true, 2), 0, -1);
$bans[] = $line;
}
}
}
}
if(count($bans) > 0){
$tc_db->Execute("END TRANSACTION");
echo $this->DisplayBannedMessage($bans);
die();
}
if ($force_display) {
/* Instructed to display a page whether banned or not, so we will inform them today is their rucky day */
echo '
'._gettext('YOU ARE NOT BANNED!').'
'._gettext('Unable to find record of your IP being banned.').'
';
} else {
return true;
}
}
/* Add a ip/ip range ban */
function BanUser($ip, $modname, $globalban, $duration, $boards, $reason, $staffnote, $appealat=0, $type=0, $allowread=1, $proxyban=false) {
global $tc_db;
if ($proxyban) {
$check = $tc_db->GetOne("SELECT COUNT(*) FROM `".KU_DBPREFIX."banlist` WHERE `type` = '".$type."' AND `ipmd5` = '".md5($ip)."'");
if ($check[0] > 0) {
return false;
}
}
if ($duration>0) {
$ban_globalban = '0';
} else {
$ban_globalban = '1';
}
if ($duration>0) {
$ban_until = time()+$duration;
} else {
$ban_until = '0';
}
$tc_db->Execute("INSERT INTO `".KU_DBPREFIX."banlist` ( `ip` , `ipmd5` , `type` , `allowread` , `globalban` , `boards` , `by` , `at` , `until` , `reason`, `staffnote`, `appealat` ) VALUES ( ".$tc_db->qstr(md5_encrypt($ip, KU_RANDOMSEED))." , ".$tc_db->qstr(md5($ip))." , ".intval($type)." , ".intval($allowread)." , ".intval($globalban)." , ".$tc_db->qstr($boards)." , ".$tc_db->qstr($modname)." , ".time()." , ".intval($ban_until)." , ".$tc_db->qstr($reason)." , ".$tc_db->qstr($staffnote).", ".intval($appealat)." ) ");
if (!$proxyban && $type == 1) {
$this->UpdateHtaccess();
}
return true;
}
/* Return the page which will inform the user a quite unfortunate message */
function DisplayBannedMessage($bans, $board='') {
/* Set a cookie with the users current IP address in case they use a proxy to attempt to make another post */
setcookie('tc_previousip', $_SERVER['REMOTE_ADDR'], (time() + 604800), KU_BOARDSFOLDER);
require_once KU_ROOTDIR . 'lib/dwoo.php';
$dwoo_data->assign('bans', $bans);
return $dwoo->get(KU_TEMPLATEDIR .'/banned.tpl', $dwoo_data);
}
function UpdateHtaccess() {
global $tc_db;
$htaccess_contents = file_get_contents(KU_BOARDSDIR.'.htaccess');
$htaccess_contents_preserve = substr($htaccess_contents, 0, strpos($htaccess_contents, '## !KU_BANS:')+12)."\n";
$htaccess_contents_bans_iplist = '';
$results = $tc_db->GetAll("SELECT `ip` FROM `".KU_DBPREFIX."banlist` WHERE `allowread` = 0 AND `type` = 0 AND (`expired` = 1) ORDER BY `ip` ASC");
if (count($results) > 0) {
$htaccess_contents_bans_iplist .= 'RewriteCond %{REMOTE_ADDR} (';
foreach($results AS $line) {
$htaccess_contents_bans_iplist .= str_replace('.', '\\.', md5_decrypt($line['ip'], KU_RANDOMSEED)) . '|';
}
$htaccess_contents_bans_iplist = substr($htaccess_contents_bans_iplist, 0, -1);
$htaccess_contents_bans_iplist .= ')$' . "\n";
}
if ($htaccess_contents_bans_iplist!='') {
$htaccess_contents_bans_start = "\nRewriteEngine On\n";
$htaccess_contents_bans_end = "RewriteRule !^(banned.php|youarebanned.jpg|favicon.ico|css/site_futaba.css)$ " . KU_BOARDSFOLDER . "banned.php [L]\n";
} else {
$htaccess_contents_bans_start = '';
$htaccess_contents_bans_end = '';
}
$htaccess_contents_new = $htaccess_contents_preserve.$htaccess_contents_bans_start.$htaccess_contents_bans_iplist.$htaccess_contents_bans_end;
file_put_contents(KU_BOARDSDIR.'.htaccess', $htaccess_contents_new);
}
}
?>