Tracker sending invalid data <NULL>

Started by MJF, August 04, 2012, 05:20:38 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

dopeonarope

np you my also want to turn off magic quets also like rickandmary said. that will pervent any other error from occuring that don't like magic quoets on.

the only part i changed was this
$TBDEV['announce_urls'][] = 'http://localhost/tbdev/announce.php';

from this
$TBDEV['announce_urls'][] = "http://localhost/tbdev/announce.php";

MJF

Quote from: dopeonarope on August 05, 2012, 05:25:33 AM
try this config file :

<?php
/*
+------------------------------------------------
|   TBDev.net BitTorrent Tracker PHP
|   =============================================
|   by CoLdFuSiOn
|   (c) 2003 - 2009 TBDev.Net
|   http://www.tbdev.net
|   =============================================
|   svn: http://sourceforge.net/projects/tbdevnet/
|   Licence Info: GPL
+------------------------------------------------
|   $Date$
|   $Revision$
|   $Author$
|   $URL$
+------------------------------------------------
*/
error_reporting(E_ALL);

define('SQL_DEBUG'2);

/* Compare php version for date/time stuff etc! */
if (version_compare(PHP_VERSION"5.1.0RC1"">="))
date_default_timezone_set('Europe/London');


define('TIME_NOW'time());

$TBDEV['time_adjust'] =  0;
$TBDEV['time_offset'] = '0';
$TBDEV['time_use_relative'] = 1;
$TBDEV['time_use_relative_format'] = '{--}, h:i A';
$TBDEV['time_joined'] = 'j-F y';
$TBDEV['time_short'] = 'jS F Y - h:i A';
$TBDEV['time_long'] = 'M j Y, h:i A';
$TBDEV['time_tiny'] = '';
$TBDEV['time_date'] = '';
$TBDEV['bot_id'] = 1;
$TBDEV['forums_online'] = 1;
$TBDEV['forums_autoshout_on'] = 0;
$TBDEV['forums_seedbonus_on'] = 1;

$TBDEV['staffmsg_alert'] = 1;
$TBDEV['donationmail_alert'] = 1;


// DB setup
// FYNNON FUCKWIT FRENCH RETARD
$TBDEV['mysql_host'] = "localhost";
$TBDEV['mysql_user'] = "root";
$TBDEV['mysql_pass'] = "ozgurcan";
$TBDEV['mysql_db']   = "tbdev";

// Cookie setup
$TBDEV['cookie_prefix']  = 'tbdev_'// This allows you to have multiple trackers, eg for demos, testing etc.
$TBDEV['cookie_path']    = ''// ATTENTION: You should never need this unless the above applies eg: /tbdev
$TBDEV['cookie_domain']  = ''// set to eg: .somedomain.com or is subdomain set to: .sub.somedomain.com

$TBDEV['site_online'] = 1;
$TBDEV['tracker_post_key'] = 'changethisorelse';
$TBDEV['max_torrent_size'] = 1000000;
$TBDEV['announce_interval'] = 60 30;
$TBDEV['signup_timeout'] = 86400 3;
$TBDEV['minvotes'] = 1;
$TBDEV['max_dead_torrent_time'] = 3600;

//paypal shit
$TBDEV['paypal']['email'] = 'sercan_1309699716_biz@googlemail.com'#address where payment will be sent
$TBDEV['paypal']['currency'] = 'USD';
$TBDEV['paypal']['staff'] = 1#user which get pms when donations are made
$TBDEV['paypal']['sandbox'] = 'sandbox.'#sandbox


// Free category
$TBDEV['freecat'] = array('6');

// Max users on site
$TBDEV['maxusers'] = 5000// LoL Who we kiddin' here?
$TBDEV['openreg'] = true//==true=open, false = closed

if ( strtouppersubstr(PHP_OS03) ) == 'WIN' )
  {
    
$file_path str_replace"\\""/"dirname(__FILE__) );
    
$file_path str_replace"/include"""$file_path );
  }
  else
  {
    
$file_path dirname(__FILE__);
    
$file_path str_replace"/include"""$file_path );
  }

define('ROOT_PATH'$file_path);
$TBDEV['torrent_dir'] = ROOT_PATH '/torrents'# must be writable for httpd user

# the first one will be displayed on the pages
$TBDEV['announce_urls'] = array();
$TBDEV['announce_urls'][] = 'http://localhost/tbdev/announce.php';
//$TBDEV['announce_urls'] = "http://localhost:2710/announce";
//$TBDEV['announce_urls'] = "http://domain.com:83/announce.php";

if ($_SERVER["HTTP_HOST"] == "")
  
$_SERVER["HTTP_HOST"] = $_SERVER["SERVER_NAME"];

$TBDEV['baseurl'] = "http://" $_SERVER["HTTP_HOST"]."/tbdev";

/*
## DO NOT UNCOMMENT THIS: IT'S FOR LATER USE!
$host = getenv( 'SERVER_NAME' );
$script = getenv( 'SCRIPT_NAME' );
$script = str_replace( "\\", "/", $script );

  if( $host AND $script )
  {
    $script = str_replace( '/index.php', '', $script );

    $TBDEV['baseurl'] = "http://{$host}{$script}";
  }
*/

//set this to true to make this a tracker that only registered users may use
//$TBDEV['membersonly'] = 1; //deprecated no longer needed

//maximum number of peers (seeders+leechers) allowed before torrents starts to be deleted to make room...
//set this to something high if you don't require this feature
//$TBDEV['peerlimit'] = 50000; //deprecated. no longer used.

// Email for sender/return path.
$TBDEV['site_email'] = "coldfusion@localhost";

$TBDEV['site_name'] = "SportBits";

$TBDEV['language'] = 'en';
//charset
$TBDEV['char_set'] = 'UTF-8'//also to be used site wide in meta tags
if (ini_get('default_charset') != $TBDEV['char_set']) {
ini_set('default_charset',$TBDEV['char_set']);
}
$TBDEV['msg_alert'] = 1// saves a query when off
$TBDEV['report_alert'] = 1// saves a query when off


$TBDEV['autoclean_interval'] = 900;
$TBDEV['sql_error_log'] = ROOT_PATH.'/logs/sql_err_'.date("M_D_Y").'.log';
$TBDEV['pic_base_url'] = "./pic/";
$TBDEV['stylesheet'] = "./1.css";
$TBDEV['readpost_expiry'] = 14*86400// 14 days
//set this to size of user avatars
$TBDEV['av_img_height'] = 250;
$TBDEV['av_img_width'] = 250;
$TBDEV['allowed_ext'] = array('image/gif''image/png''image/jpeg');
// Set this to the line break character sequence of your system
//$TBDEV['linebreak'] = "\r\n"; // not used at present.

define ('UC_USER'0);
define ('UC_POWER_USER'1);
define ('UC_VIP'2);
define ('UC_UPLOADER'3);
define ('UC_MODERATOR'4);
define ('UC_ADMINISTRATOR'5);
define ('UC_SYSOP'6);

//latest posts limit
$TBDEV['latest_posts_limit'] = 5//query limit for latest forum posts on index
$TBDEV['latest_torrents_limit'] = 5//query limit for latest forum posts on index
//Do not modify -- versioning system
//This will help identify code for support issues at tbdev.net
define ('TBVERSION','TBDev_2009_svn');

?>


i changed the "announce" to 'announce' in the announce url. that is what the problem is. thats is why you get the tracker sending invalid data (null)

I dont know what you have changed here   ??? but it works now  :)

Thank you all for the help..

Much love!!  :)

rickandmary

try disabling magic quotes in your php.ini file

dopeonarope

try this config file :

<?php
/*
+------------------------------------------------
|   TBDev.net BitTorrent Tracker PHP
|   =============================================
|   by CoLdFuSiOn
|   (c) 2003 - 2009 TBDev.Net
|   http://www.tbdev.net
|   =============================================
|   svn: http://sourceforge.net/projects/tbdevnet/
|   Licence Info: GPL
+------------------------------------------------
|   $Date$
|   $Revision$
|   $Author$
|   $URL$
+------------------------------------------------
*/
error_reporting(E_ALL);

define('SQL_DEBUG'2);

/* Compare php version for date/time stuff etc! */
if (version_compare(PHP_VERSION"5.1.0RC1"">="))
date_default_timezone_set('Europe/London');


define('TIME_NOW'time());

$TBDEV['time_adjust'] =  0;
$TBDEV['time_offset'] = '0';
$TBDEV['time_use_relative'] = 1;
$TBDEV['time_use_relative_format'] = '{--}, h:i A';
$TBDEV['time_joined'] = 'j-F y';
$TBDEV['time_short'] = 'jS F Y - h:i A';
$TBDEV['time_long'] = 'M j Y, h:i A';
$TBDEV['time_tiny'] = '';
$TBDEV['time_date'] = '';
$TBDEV['bot_id'] = 1;
$TBDEV['forums_online'] = 1;
$TBDEV['forums_autoshout_on'] = 0;
$TBDEV['forums_seedbonus_on'] = 1;

$TBDEV['staffmsg_alert'] = 1;
$TBDEV['donationmail_alert'] = 1;


// DB setup
// FYNNON FUCKWIT FRENCH RETARD
$TBDEV['mysql_host'] = "localhost";
$TBDEV['mysql_user'] = "root";
$TBDEV['mysql_pass'] = "ozgurcan";
$TBDEV['mysql_db']   = "tbdev";

// Cookie setup
$TBDEV['cookie_prefix']  = 'tbdev_'// This allows you to have multiple trackers, eg for demos, testing etc.
$TBDEV['cookie_path']    = ''// ATTENTION: You should never need this unless the above applies eg: /tbdev
$TBDEV['cookie_domain']  = ''// set to eg: .somedomain.com or is subdomain set to: .sub.somedomain.com

$TBDEV['site_online'] = 1;
$TBDEV['tracker_post_key'] = 'changethisorelse';
$TBDEV['max_torrent_size'] = 1000000;
$TBDEV['announce_interval'] = 60 30;
$TBDEV['signup_timeout'] = 86400 3;
$TBDEV['minvotes'] = 1;
$TBDEV['max_dead_torrent_time'] = 3600;

//paypal shit
$TBDEV['paypal']['email'] = 'sercan_1309699716_biz@googlemail.com'#address where payment will be sent
$TBDEV['paypal']['currency'] = 'USD';
$TBDEV['paypal']['staff'] = 1#user which get pms when donations are made
$TBDEV['paypal']['sandbox'] = 'sandbox.'#sandbox


// Free category
$TBDEV['freecat'] = array('6');

// Max users on site
$TBDEV['maxusers'] = 5000// LoL Who we kiddin' here?
$TBDEV['openreg'] = true//==true=open, false = closed

if ( strtouppersubstr(PHP_OS03) ) == 'WIN' )
  {
    
$file_path str_replace"\\""/"dirname(__FILE__) );
    
$file_path str_replace"/include"""$file_path );
  }
  else
  {
    
$file_path dirname(__FILE__);
    
$file_path str_replace"/include"""$file_path );
  }

define('ROOT_PATH'$file_path);
$TBDEV['torrent_dir'] = ROOT_PATH '/torrents'# must be writable for httpd user

# the first one will be displayed on the pages
$TBDEV['announce_urls'] = array();
$TBDEV['announce_urls'][] = 'http://localhost/tbdev/announce.php';
//$TBDEV['announce_urls'] = "http://localhost:2710/announce";
//$TBDEV['announce_urls'] = "http://domain.com:83/announce.php";

if ($_SERVER["HTTP_HOST"] == "")
  
$_SERVER["HTTP_HOST"] = $_SERVER["SERVER_NAME"];

$TBDEV['baseurl'] = "http://" $_SERVER["HTTP_HOST"]."/tbdev";

/*
## DO NOT UNCOMMENT THIS: IT'S FOR LATER USE!
$host = getenv( 'SERVER_NAME' );
$script = getenv( 'SCRIPT_NAME' );
$script = str_replace( "\\", "/", $script );

  if( $host AND $script )
  {
    $script = str_replace( '/index.php', '', $script );

    $TBDEV['baseurl'] = "http://{$host}{$script}";
  }
*/

//set this to true to make this a tracker that only registered users may use
//$TBDEV['membersonly'] = 1; //deprecated no longer needed

//maximum number of peers (seeders+leechers) allowed before torrents starts to be deleted to make room...
//set this to something high if you don't require this feature
//$TBDEV['peerlimit'] = 50000; //deprecated. no longer used.

// Email for sender/return path.
$TBDEV['site_email'] = "coldfusion@localhost";

$TBDEV['site_name'] = "SportBits";

$TBDEV['language'] = 'en';
//charset
$TBDEV['char_set'] = 'UTF-8'//also to be used site wide in meta tags
if (ini_get('default_charset') != $TBDEV['char_set']) {
ini_set('default_charset',$TBDEV['char_set']);
}
$TBDEV['msg_alert'] = 1// saves a query when off
$TBDEV['report_alert'] = 1// saves a query when off


$TBDEV['autoclean_interval'] = 900;
$TBDEV['sql_error_log'] = ROOT_PATH.'/logs/sql_err_'.date("M_D_Y").'.log';
$TBDEV['pic_base_url'] = "./pic/";
$TBDEV['stylesheet'] = "./1.css";
$TBDEV['readpost_expiry'] = 14*86400// 14 days
//set this to size of user avatars
$TBDEV['av_img_height'] = 250;
$TBDEV['av_img_width'] = 250;
$TBDEV['allowed_ext'] = array('image/gif''image/png''image/jpeg');
// Set this to the line break character sequence of your system
//$TBDEV['linebreak'] = "\r\n"; // not used at present.

define ('UC_USER'0);
define ('UC_POWER_USER'1);
define ('UC_VIP'2);
define ('UC_UPLOADER'3);
define ('UC_MODERATOR'4);
define ('UC_ADMINISTRATOR'5);
define ('UC_SYSOP'6);

//latest posts limit
$TBDEV['latest_posts_limit'] = 5//query limit for latest forum posts on index
$TBDEV['latest_torrents_limit'] = 5//query limit for latest forum posts on index
//Do not modify -- versioning system
//This will help identify code for support issues at tbdev.net
define ('TBVERSION','TBDev_2009_svn');

?>


i changed the "announce" to 'announce' in the announce url. that is what the problem is. thats is why you get the tracker sending invalid data (null)

MJF

Well, i looked over the announce and download files with phpDesigner but didnt show up any errors.

Yes, i´m testing on my computer with xampp, do you know any good sites for free hosting, that i can test my source on a real tracker. Maybe would work on other hosting service then on my own PC.


Thank you for you help, and i hope you can help me with the other question also :)

Hyperion (noobKID)

a question is comming over my mind when i see announce and config.php file(s)...

1. in config to db connection. i see localhost, and same on announce...

so my question would be this, are you testing on your PC?...
if so... i suggest putting it up onto a live server to get (useally) correct failure notices and such...

that, or else try look over announce,or download file... i think the failure might be in there :)...

(dont have time to look over them.. have my own trouble... sorry...)

hoping fixed soon ;)...

MJF

Sorry the error is:

Tracker sending invalid data: .

Thanks for help :)

MJF

#1
Hey everyone there,

i have a problem. When i upload a torrent and download it back to seed it i get Tracker sending invalid data <NULL>. I have opened the announce.php with phpDesigner to see where the failure is but its not showing me anything. Download.php also shows nothing. I dont know where the failure is but maybe you guys can find out something. I will post my announce.php, download.php, bittorrent.php, cleanup.php, config.php and the sql for the torrents section.

Announce.php

<?php
/*
+------------------------------------------------
|   TBDev.net BitTorrent Tracker PHP
|   =============================================
|   by CoLdFuSiOn
|   (c) 2003 - 2009 TBDev.Net
|   http://www.tbdev.net
|   =============================================
|   svn: http://sourceforge.net/projects/tbdevnet/
|   Licence Info: GPL
+------------------------------------------------
|   $Date$
|   $Revision$
|   $Author$
|   $URL$
+------------------------------------------------
*/
error_reporting(0);
////////////////// GLOBAL VARIABLES ////////////////////////////
$TBDEV['baseurl'] = 'http://localhost/tbdev/';
$TBDEV['announce_interval'] = 60 30;
$TBDEV['user_ratios'] = 0;
$TBDEV['connectable_check'] = 1;
define ('UC_VIP'2);
// DB setup
$TBDEV['mysql_host'] = "localhost";
$TBDEV['mysql_user'] = "root";
$TBDEV['mysql_pass'] = "ozgurcan";
$TBDEV['mysql_db']   = "tbdev";
////////////////// GLOBAL VARIABLES ////////////////////////////

// DO NOT EDIT BELOW UNLESS YOU KNOW WHAT YOU'RE DOING!!

$agent $_SERVER["HTTP_USER_AGENT"];

// Deny access made with a browser...
if (
    
ereg("^Mozilla\\/"$agent) ||
    
ereg("^Opera\\/"$agent) ||
    
ereg("^Links "$agent) ||
    
ereg("^Lynx\\/"$agent) ||
    isset(
$_SERVER['HTTP_COOKIE']) ||
    isset(
$_SERVER['HTTP_ACCEPT_LANGUAGE']) ||
    isset(
$_SERVER['HTTP_ACCEPT_CHARSET'])
    )
    
err("torrent not registered with this tracker CODE 1");

/////////////////////// FUNCTION DEFS ///////////////////////////////////
function dbconn()
{
    global 
$TBDEV;

    if (!@
mysql_connect($TBDEV['mysql_host'], $TBDEV['mysql_user'], $TBDEV['mysql_pass']))
    {
  err('Please call back later');
    }
    
mysql_select_db($TBDEV['mysql_db']) or err('Please call back later');
}

function 
err($msg)
{
benc_resp(array('failure reason' => array('type' => 'string''value' => $msg)));

exit();
}

function 
benc_resp($d)
{
benc_resp_raw(benc(array('type' => 'dictionary''value' => $d)));
}

function 
benc_resp_raw($x)
{
    
header"Content-Type: text/plain" );
    
header"Pragma: no-cache" );

    if ( 
$_SERVER['HTTP_ACCEPT_ENCODING'] == 'gzip' )
    {
        
header"Content-Encoding: gzip" );
        echo 
gzencode$x9FORCE_GZIP );
    }
    else
        echo 
$x ;
}

function 
benc($obj) {
if (!is_array($obj) || !isset($obj["type"]) || !isset($obj["value"]))
return;
$c $obj["value"];
switch ($obj["type"]) {
case "string":
return benc_str($c);
case "integer":
return benc_int($c);
case "list":
return benc_list($c);
case "dictionary":
return benc_dict($c);
default:
return;
}
}

function 
benc_str($s) {
return strlen($s) . ":$s";
}

function 
benc_int($i) {
return "i" $i "e";
}

function 
benc_list($a) {
$s "l";
foreach ($a as $e) {
$s .= benc($e);
}
$s .= "e";
return $s;
}

function 
benc_dict($d) {
$s "d";
$keys array_keys($d);
sort($keys);
foreach ($keys as $k) {
$v $d[$k];
$s .= benc_str($k);
$s .= benc($v);
}
$s .= "e";
return $s;
}

function 
hash_where($name$hash) {
    
$shhash preg_replace('/ *$/s'""$hash);
    return 
"($name = " sqlesc($hash) . " OR $name = " sqlesc($shhash) . ")";
}

function 
sqlesc($x) {
    return 
"'".mysql_real_escape_string($x)."'";
}

function 
portblacklisted($port)
{
// direct connect
if ($port >= 411 && $port <= 413) return true;

// bittorrent
if ($port >= 6881 && $port <= 6889) return true;

// kazaa
if ($port == 1214) return true;

// gnutella
if ($port >= 6346 && $port <= 6347) return true;

// emule
if ($port == 4662) return true;

// winmx
if ($port == 6699) return true;

return false;
}
/////////////////////// FUNCTION DEFS END ///////////////////////////////

$parts = array();
$pattern '[0-9a-fA-F]{32}';
if( !isset(
$_GET['passkey']) OR !ereg($pattern$_GET['passkey'], $parts) )
err("Invalid Passkey");
else
$GLOBALS['passkey'] = $parts[0];

foreach (array(
"info_hash","peer_id","event","ip","localip") as $x)
{
if(isset(
$_GET["$x"]))
$GLOBALS[$x] = "" $_GET[$x];
}

foreach (array(
"port","downloaded","uploaded","left") as $x)
{
$GLOBALS[$x] = $_GET[$x];
}


foreach (array(
"passkey","info_hash","peer_id","port","downloaded","uploaded","left") as $x)

if (!isset(
$x)) err("Missing key: $x");



foreach (array(
"info_hash","peer_id") as $x)

if (
strlen($GLOBALS[$x]) != 20err("Invalid $x (" strlen($GLOBALS[$x]) . " - " urlencode($GLOBALS[$x]) . ")");

unset(
$x);

$info_hash bin2hex($info_hash);

$ip $_SERVER['REMOTE_ADDR'];

$port $port;
$downloaded $downloaded;
$uploaded $uploaded;
$left $left;

$rsize 50;
foreach(array(
"num want""numwant""num_want") as $k)
{
if (isset($_GET[$k]))
{
$rsize $_GET[$k];
break;
}
}


if (!
$port || $port 0xffff)
err("invalid port");

if (!isset(
$event))
$event "";

$seeder = ($left == 0) ? "yes" "no";

// Banned Clients - By Petr1fied
$filename "include/banned_clients.txt";
if (
filesize($filename)==|| !file_exists($filename))
 
$banned_clients=array();
else
{
 
$handle fopen($filename"r");
 
$banned_clients unserialize(fread($handlefilesize($filename)));
 
fclose($handle);
}
$client_ban '';
foreach(
$banned_clients as $k => $v)
{
 if(
substr(bin2hex($peer_id), 016) == $v["peer_id"] || substr(bin2hex($peer_id), 06) == $v["peer_id"])
 {
 
$client_ban=array($v["client_name"], $v["reason"]);
 }
}

if(
$client_ban)
 
err("I'm sorry, $client_ban[0] is banned from this tracker (".stripslashes($client_ban[1]).")");
// Banned Clients - By Petr1fied

dbconn();


$user_query mysql_query("SELECT id, uploaded, downloaded, class, free_switch, enabled FROM users WHERE passkey=".sqlesc($passkey)) or err("Tracker error 2");

if ( 
mysql_num_rows($user_query) != )

 
err("Unknown passkey. Please redownload the torrent from {$TBDEV['baseurl']}.");

        
$user mysql_fetch_assoc($user_query);
        if( 
$user['enabled'] == 'no' err('Permission denied, you\'re not enabled');


$res mysql_query("SELECT torrents.id, torrents.banned, torrents.category, torrents.free, torrents.freecat, torrents.seeders + torrents.leechers AS numpeers, torrents.added AS ts, freeslots.free AS freeslot, freeslots.double AS doubleslot FROM torrents LEFT JOIN freeslots ON (torrents.id=freeslots.tid AND freeslots.uid=".sqlesc($user['id']).") WHERE info_hash = ".sqlesc($info_hash));//" . hash_where("info_hash", $info_hash));

$torrent mysql_fetch_assoc($res);
if (!
$torrent)
err("torrent not registered with this tracker CODE 2");

$torrentid $torrent["id"];
$freecat $torrent['category'];

$fields 'seeder, peer_id, ip, port, uploaded, downloaded, userid, ('.time().' - last_action) AS announcetime';

$numpeers $torrent["numpeers"];
$limit "";
if (
$numpeers $rsize)
$limit "ORDER BY RAND() LIMIT $rsize";
$res mysql_query("SELECT $fields FROM peers WHERE torrent = $torrentid AND connectable = 'yes' $limit");

//////////////////// START NEW COMPACT MODE/////////////////////////////

if($_GET['compact'] != 1)

{

$resp "d" benc_str("interval") . "i" $TBDEV['announce_interval'] . "e" benc_str("private") . 'i1e' benc_str("peers") . "l";

}

else

{

$resp "d" benc_str("interval") . "i" $TBDEV['announce_interval'] ."e" benc_str("private") . 'i1e'benc_str("min interval") . "i" 300 ."e5:"."peers" ;
}

$peer = array();

$peer_num 0;
while (
$row mysql_fetch_assoc($res))

{

    if(
$_GET['compact'] != 1)

{



$row["peer_id"] = str_pad($row["peer_id"], 20);



if (
$row["peer_id"] === $peer_id)

{

 
$self $row;

 continue;

}



$resp .= "d" .

 
benc_str("ip") . benc_str($row["ip"]);

       if (!
$_GET['no_peer_id']) {

  
$resp .= benc_str("peer id") . benc_str($row["peer_id"]);

 }

 
$resp .= benc_str("port") . "i" $row["port"] . "e" .

 
"e";

      }

      else

      {

         
$peer_ip explode('.'$row["ip"]);

$peer_ip pack("C*"$peer_ip[0], $peer_ip[1], $peer_ip[2], $peer_ip[3]);

$peer_port pack("n*", (int)$row["port"]);

$time intval((time() % 7680) / 60);

if(
$_GET['left'] == 0)

{

$time += 128;

}

$time pack("C"$time);



   
$peer[] = $time $peer_ip $peer_port;

$peer_num++;


      }

}



if (
$_GET['compact']!=1)

$resp .= "ee";

else

{
$o "";
for(
$i=0;$i<$peer_num;$i++)

 {

  
$o .= substr($peer[$i], 16);

 }

$resp .= strlen($o) . ':' $o 'e';

}

$selfwhere "torrent = $torrentid AND " hash_where("peer_id"$peer_id);

///////////////////////////// END NEW COMPACT MODE////////////////////////////////



if (!isset($self))
{
$res mysql_query("SELECT $fields FROM peers WHERE $selfwhere");
$row mysql_fetch_assoc($res);
if ($row)
{
$userid $row["userid"];
$self $row;
}
}

//// Up/down stats ////////////////////////////////////////////////////////////



if (!isset($self))

{

$valid = @mysql_fetch_row(@mysql_query("SELECT COUNT(*) FROM peers WHERE torrent=$torrentid AND passkey=" sqlesc($passkey)));

if (
$valid[0] >= && $seeder == 'no'err("Connection limit exceeded! You may only leech from one location at a time.");

if (
$valid[0] >= && $seeder == 'yes'err("Connection limit exceeded!");


if ($left && $user['class'] < UC_VIP && $TBDEV['user_ratios'])
{
$gigs $user["uploaded"] / (1024*1024*1024);
$elapsed floor((time() - $torrent["ts"]) / 3600);
$ratio = (($user["downloaded"] > 0) ? ($user["uploaded"] / $user["downloaded"]) : 1);
if ($ratio 0.5 || $gigs 5$wait 48;
elseif ($ratio 0.65 || $gigs 6.5$wait 24;
elseif ($ratio 0.8 || $gigs 8$wait 12;
elseif ($ratio 0.95 || $gigs 9.5$wait 6;
else $wait 0;
if ($elapsed $wait)
err("Not authorized (" . ($wait $elapsed) . "h) - READ THE FAQ!");
}
}
else
{
$upthis max(0$uploaded $self["uploaded"]);
$downthis max(0$downloaded $self["downloaded"]);
$upspeed = ($upthis $upthis $self["announcetime"] : 0);
$downspeed = ($downthis $downthis $self["announcetime"] : 0);
$announcetime = ($self["seeder"] == "yes" "seedtime = seedtime + $self[announcetime]"leechtime = leechtime + $self[announcetime]");

if (
$upthis || $downthis 0)
{
/** free addon start **/
$isfree $isdouble '';
include 
'cache/free_cache.php';
if (isset(
$free)) {
foreach (
$free as $fl) {
$isfree =   ($fl['modifier'] == || $fl['modifier'] == 3) && $fl['expires'] > TIME_NOW;
$isdouble = ($fl['modifier'] == || $fl['modifier'] == 3) && $fl['expires'] > TIME_NOW;
}
}

//$freecat = $torrent['category'];


if (!($user['free_switch'] != || $isfree || $torrent['free'] != || $torrent['category'] =='6' || ($torrent['freeslot'] != 0)))

$updq[0] = "downloaded = downloaded + $downthis";

$updq[1] = "uploaded = uploaded + ".(($torrent['doubleslot'] != || $torrent['category'] =='12' || $isdouble) ? ($upthis*2) : $upthis);

$udq=implode(',',$updq);
mysql_query("UPDATE users SET $udq WHERE id=".$user['id']) or err('Tracker error 3');
}
}

///////////////////////////////////////////////////////////////////////////////
if (portblacklisted($port))
{
err("Port $port is blacklisted.");
}
elseif ( $TBDEV['connectable_check'] )
{
$sockres = @fsockopen($ip$port$errno$errstr5);
if (!$sockres)
$connectable "no";
else
{
$connectable "yes";
@fclose($sockres);
}
}

$updateset = array();

if (isset(
$self) && $event == "stopped") {
 
mysql_query("DELETE FROM peers WHERE $selfwhere") or err("D Err");

 if (
mysql_affected_rows()) {
 
$updateset[] = ($self["seeder"] == "yes" "seeders = seeders - 1" "leechers = leechers - 1");
 
mysql_query("UPDATE snatched SET ip = ".sqlesc($ip).", port = $port, connectable = '$connectable', uploaded = uploaded + $upthis, downloaded = downloaded + $downthis, to_go = $left, upspeed = $upspeed, downspeed = $downspeed$announcetime, last_action = ".time().", seeder = '$seeder', agent = ".sqlesc($agent)." WHERE torrentid = $torrentid AND userid = {$user['id']}") or err("SL Err 1");
 }
 } elseif (isset(
$self)) {

 if (
$event == "completed") {
 
$updateset[] = "times_completed = times_completed + 1";
 
$finished '';
 
$finished1 '';
 
$finished ", finishedat = ".time()."";
 
$finished1 ", complete_date = ".time()."";
 }

 
mysql_query("UPDATE peers SET ip = ".sqlesc($ip).", port = $port, connectable = '$connectable', uploaded = $uploaded, downloaded = $downloaded, to_go = $left, last_action = " time() . ", seeder = '$seeder', agent = ".sqlesc($agent).$finished WHERE $selfwhere") or err("PL Err 1");

 if (
mysql_affected_rows()) {
 if (
$seeder <> $self["seeder"])
 
$updateset[] = ($seeder == "yes" "seeders = seeders + 1, leechers = leechers - 1" "seeders = seeders - 1, leechers = leechers + 1");
 
$anntime "timesann = timesann + 1";
 
mysql_query("UPDATE snatched SET ip = ".sqlesc($ip).", port = $port, connectable = '$connectable', uploaded = uploaded + $upthis, downloaded = downloaded + $downthis, to_go = $left, upspeed = $upspeed, downspeed = $downspeed$announcetime, last_action = ".time().", seeder = '$seeder', agent = ".sqlesc($agent).$finished1$anntime WHERE torrentid = $torrentid AND userid = {$user['id']}") or err("SL Err 2");
 }
 } else {
 
//if ($user["parked"] == "yes") //== uncommet if you use parked
 //err("Your account is parked! (Read the FAQ)"); //== uncommet if you use parked
 //elseif ($user["downloadpos"] == "no") //== uncommet if you use downloapos
 //err("Your downloading priviledges have been disabled! (Read the rules)"); //== uncommet if you use downloapos

 
mysql_query("INSERT INTO peers (torrent, userid, peer_id, ip, port, connectable, uploaded, downloaded, to_go, started, last_action, seeder, agent, downloadoffset, uploadoffset, passkey) VALUES ($torrentid{$user['id']}, ".sqlesc($peer_id).", ".sqlesc($ip).", $port, '$connectable', $uploaded$downloaded$left, ".time().", ".time().", '$seeder', ".sqlesc($agent).", $downloaded$uploaded, ".sqlesc($passkey).")") or err("PL Err 2");

 if (
mysql_affected_rows()) {
 
$updateset[] = ($seeder == "yes" "seeders = seeders + 1" "leechers = leechers + 1");
 
$anntime "timesann = timesann + 1";
 
mysql_query("UPDATE snatched SET ip = ".sqlesc($ip).", port = $port, connectable = '$connectable', to_go = $left, last_action = ".time().", seeder = '$seeder', agent = ".sqlesc($agent).", $anntime WHERE torrentid = $torrentid AND userid = {$user['id']}") or err("SL Err 3");

 if (!
mysql_affected_rows() && $seeder == "no")
 
mysql_query("INSERT INTO snatched (torrentid, userid, peer_id, ip, port, connectable, uploaded, downloaded, to_go, start_date, last_action, seeder, agent) VALUES ($torrentid{$user['id']}, ".sqlesc($peer_id).", ".sqlesc($ip).", $port, '$connectable', $uploaded$downloaded$left, ".time().", ".time().", '$seeder', ".sqlesc($agent).")") or err("SL Err 4");
 }
 }

if (
$seeder == "yes")
{
if ($torrent["banned"] != "yes")
$updateset[] = "visible = 'yes'";
$updateset[] = "last_action = ".time();
}

if (
count($updateset))
mysql_query("UPDATE torrents SET " join(","$updateset) . " WHERE id = $torrentid");

benc_resp_raw($resp);



?>


Download.php

<?php
/*
+------------------------------------------------
|   TBDev.net BitTorrent Tracker PHP
|   =============================================
|   by CoLdFuSiOn
|   (c) 2003 - 2009 TBDev.Net
|   http://www.tbdev.net
|   =============================================
|   svn: http://sourceforge.net/projects/tbdevnet/
|   Licence Info: GPL
+------------------------------------------------
|   $Date$
|   $Revision$
|   $Author$
|   $URL$
+------------------------------------------------
*/
require_once "include/bittorrent.php";
require_once 
"include/user_functions.php";

dbconn();

loggedinorreturn();


  
$lang array_mergeload_language('global'), load_language('download') );

  
$id = isset($_GET['torrent']) ? intval($_GET['torrent']) : 0;

  if ( !
is_valid_id($id) )
    
stderr("{$lang['download_user_error']}""{$lang['download_no_id']}");


  
$res mysql_query("SELECT name, filename, owner FROM torrents WHERE id = $id") or sqlerr(__FILE____LINE__);
  
$row mysql_fetch_assoc($res);
  if (!(
$CURUSER["id"] == $row["owner"])) {
if (
$CURUSER["downloadpos"] == "no")
stderr("{$lang['download_error']}""{$lang['download_not_allowed']}");
}
  
$fn "{$TBDEV['torrent_dir']}/$id.torrent";

  if (!
$row || !is_file($fn) || !is_readable($fn))
    
httperr();


  @
mysql_query("UPDATE torrents SET hits = hits + 1 WHERE id = $id");

/** free mod for TBDev 09 by pdq **/
include ROOT_PATH.'/mods/freeslots_inc.php';
/** end **/

  
require_once "include/benc.php";



  if (!isset(
$CURUSER['passkey']) || strlen($CURUSER['passkey']) != 32)
  {

    
$CURUSER['passkey'] = md5($CURUSER['username'].time().$CURUSER['passhash']);

    @
mysql_query("UPDATE users SET passkey='{$CURUSER['passkey']}' WHERE id={$CURUSER['id']}");

  }



  
$dict bdec_file($fnfilesize($fn));

  
$dict['value']['announce']['value'] = "{$TBDEV['announce_urls'][0]}?passkey={$CURUSER['passkey']}";

  
$dict['value']['announce']['string'] = strlen($dict['value']['announce']['value']).":".$dict['value']['announce']['value'];

  
$dict['value']['announce']['strlen'] = strlen($dict['value']['announce']['string']);



  
header('Content-Disposition: attachment; filename="[TBDev]'.$row['filename'].'"');

  
header("Content-Type: application/x-bittorrent");



  print(
benc($dict));



?>


Config.php

<?php
/*
+------------------------------------------------
|   TBDev.net BitTorrent Tracker PHP
|   =============================================
|   by CoLdFuSiOn
|   (c) 2003 - 2009 TBDev.Net
|   http://www.tbdev.net
|   =============================================
|   svn: http://sourceforge.net/projects/tbdevnet/
|   Licence Info: GPL
+------------------------------------------------
|   $Date$
|   $Revision$
|   $Author$
|   $URL$
+------------------------------------------------
*/
error_reporting(E_ALL);

define('SQL_DEBUG'2);

/* Compare php version for date/time stuff etc! */
if (version_compare(PHP_VERSION"5.1.0RC1"">="))
date_default_timezone_set('Europe/London');


define('TIME_NOW'time());

$TBDEV['time_adjust'] =  0;
$TBDEV['time_offset'] = '0';
$TBDEV['time_use_relative'] = 1;
$TBDEV['time_use_relative_format'] = '{--}, h:i A';
$TBDEV['time_joined'] = 'j-F y';
$TBDEV['time_short'] = 'jS F Y - h:i A';
$TBDEV['time_long'] = 'M j Y, h:i A';
$TBDEV['time_tiny'] = '';
$TBDEV['time_date'] = '';
$TBDEV['bot_id'] = 1;
$TBDEV['forums_online'] = 1;
$TBDEV['forums_autoshout_on'] = 0;
$TBDEV['forums_seedbonus_on'] = 1;

$TBDEV['staffmsg_alert'] = 1;
$TBDEV['donationmail_alert'] = 1;


// DB setup
// FYNNON FUCKWIT FRENCH RETARD
$TBDEV['mysql_host'] = "localhost";
$TBDEV['mysql_user'] = "root";
$TBDEV['mysql_pass'] = "ozgurcan";
$TBDEV['mysql_db']   = "tbdev";

// Cookie setup
$TBDEV['cookie_prefix']  = 'tbdev_'// This allows you to have multiple trackers, eg for demos, testing etc.
$TBDEV['cookie_path']    = ''// ATTENTION: You should never need this unless the above applies eg: /tbdev
$TBDEV['cookie_domain']  = ''// set to eg: .somedomain.com or is subdomain set to: .sub.somedomain.com

$TBDEV['site_online'] = 1;
$TBDEV['tracker_post_key'] = 'changethisorelse';
$TBDEV['max_torrent_size'] = 1000000;
$TBDEV['announce_interval'] = 60 30;
$TBDEV['signup_timeout'] = 86400 3;
$TBDEV['minvotes'] = 1;
$TBDEV['max_dead_torrent_time'] = 3600;

//paypal shit
$TBDEV['paypal']['email'] = 'sercan_1309699716_biz@googlemail.com'#address where payment will be sent
$TBDEV['paypal']['currency'] = 'USD';
$TBDEV['paypal']['staff'] = 1#user which get pms when donations are made
$TBDEV['paypal']['sandbox'] = 'sandbox.'#sandbox


// Free category
$TBDEV['freecat'] = array('6');

// Max users on site
$TBDEV['maxusers'] = 5000// LoL Who we kiddin' here?
$TBDEV['openreg'] = true//==true=open, false = closed

if ( strtouppersubstr(PHP_OS03) ) == 'WIN' )
  {
    
$file_path str_replace"\\""/"dirname(__FILE__) );
    
$file_path str_replace"/include"""$file_path );
  }
  else
  {
    
$file_path dirname(__FILE__);
    
$file_path str_replace"/include"""$file_path );
  }

define('ROOT_PATH'$file_path);
$TBDEV['torrent_dir'] = ROOT_PATH '/torrents'# must be writable for httpd user

# the first one will be displayed on the pages
$TBDEV['announce_urls'] = array();
$TBDEV['announce_urls'][] = "http://localhost/tbdev/announce.php";
//$TBDEV['announce_urls'] = "http://localhost:2710/announce";
//$TBDEV['announce_urls'] = "http://domain.com:83/announce.php";

if ($_SERVER["HTTP_HOST"] == "")
  
$_SERVER["HTTP_HOST"] = $_SERVER["SERVER_NAME"];

$TBDEV['baseurl'] = "http://" $_SERVER["HTTP_HOST"]."/tbdev";

/*
## DO NOT UNCOMMENT THIS: IT'S FOR LATER USE!
$host = getenv( 'SERVER_NAME' );
$script = getenv( 'SCRIPT_NAME' );
$script = str_replace( "\\", "/", $script );

  if( $host AND $script )
  {
    $script = str_replace( '/index.php', '', $script );

    $TBDEV['baseurl'] = "http://{$host}{$script}";
  }
*/

//set this to true to make this a tracker that only registered users may use
//$TBDEV['membersonly'] = 1; //deprecated no longer needed

//maximum number of peers (seeders+leechers) allowed before torrents starts to be deleted to make room...
//set this to something high if you don't require this feature
//$TBDEV['peerlimit'] = 50000; //deprecated. no longer used.

// Email for sender/return path.
$TBDEV['site_email'] = "coldfusion@localhost";

$TBDEV['site_name'] = "SportBits";

$TBDEV['language'] = 'en';
//charset
$TBDEV['char_set'] = 'UTF-8'//also to be used site wide in meta tags
if (ini_get('default_charset') != $TBDEV['char_set']) {
ini_set('default_charset',$TBDEV['char_set']);
}
$TBDEV['msg_alert'] = 1// saves a query when off
$TBDEV['report_alert'] = 1// saves a query when off


$TBDEV['autoclean_interval'] = 900;
$TBDEV['sql_error_log'] = ROOT_PATH.'/logs/sql_err_'.date("M_D_Y").'.log';
$TBDEV['pic_base_url'] = "./pic/";
$TBDEV['stylesheet'] = "./1.css";
$TBDEV['readpost_expiry'] = 14*86400// 14 days
//set this to size of user avatars
$TBDEV['av_img_height'] = 250;
$TBDEV['av_img_width'] = 250;
$TBDEV['allowed_ext'] = array('image/gif''image/png''image/jpeg');
// Set this to the line break character sequence of your system
//$TBDEV['linebreak'] = "\r\n"; // not used at present.

define ('UC_USER'0);
define ('UC_POWER_USER'1);
define ('UC_VIP'2);
define ('UC_UPLOADER'3);
define ('UC_MODERATOR'4);
define ('UC_ADMINISTRATOR'5);
define ('UC_SYSOP'6);

//latest posts limit
$TBDEV['latest_posts_limit'] = 5//query limit for latest forum posts on index
$TBDEV['latest_torrents_limit'] = 5//query limit for latest forum posts on index
//Do not modify -- versioning system
//This will help identify code for support issues at tbdev.net
define ('TBVERSION','TBDev_2009_svn');

?>


Cleanup.php

<?php
/*
+------------------------------------------------
|   TBDev.net BitTorrent Tracker PHP
|   =============================================
|   by CoLdFuSiOn
|   (c) 2003 - 2009 TBDev.Net
|   http://www.tbdev.net
|   =============================================
|   svn: http://sourceforge.net/projects/tbdevnet/
|   Licence Info: GPL
+------------------------------------------------
|   $Date$
|   $Revision$
|   $Author$
|   $URL$
+------------------------------------------------
*/
require_once("bittorrent.php");

function 
deadtime() {
    global 
$TBDEV;
    return 
time() - floor($TBDEV['announce_interval'] * 1.3);
}

function 
docleanup() {
global $TBDEV;

set_time_limit(0);
ignore_user_abort(1);

do {
$res mysql_query("SELECT id FROM torrents");
$ar = array();
while ($row mysql_fetch_array($res,MYSQL_NUM)) {
$id $row[0];
$ar[$id] = 1;
}

if (!count($ar))
break;

$dp = @opendir($TBDEV['torrent_dir']);
if (!$dp)
break;

$ar2 = array();
while (($file readdir($dp)) !== false) {
if (!preg_match('/^(\d+)\.torrent$/'$file$m))
continue;
$id $m[1];
$ar2[$id] = 1;
if (isset($ar[$id]) && $ar[$id])
continue;
$ff $TBDEV['torrent_dir'] . "/$file";
unlink($ff);
}
closedir($dp);

if (!count($ar2))
break;

$delids = array();
foreach (array_keys($ar) as $k) {
if (isset($ar2[$k]) && $ar2[$k])
continue;
$delids[] = $k;
unset($ar[$k]);
}
if (count($delids))
mysql_query("DELETE FROM torrents WHERE id IN (" join(","$delids) . ")");

$res mysql_query("SELECT torrent FROM peers GROUP BY torrent");
$delids = array();
while ($row mysql_fetch_array($res,MYSQL_NUM)) {
$id $row[0];
if (isset($ar[$id]) && $ar[$id])
continue;
$delids[] = $id;
}
if (count($delids))
mysql_query("DELETE FROM peers WHERE torrent IN (" join(","$delids) . ")");

$res mysql_query("SELECT torrent FROM files GROUP BY torrent");
$delids = array();
while ($row mysql_fetch_array($res,MYSQL_NUM)) {
$id $row[0];
if (isset($ar[$id]) && $ar[$id])
continue;
$delids[] = $id;
}
if (count($delids))
mysql_query("DELETE FROM files WHERE torrent IN (" join(","$delids) . ")");
} while (0);

$deadtime deadtime();
@mysql_query("DELETE FROM peers WHERE last_action < $deadtime");

$deadtime -= $TBDEV['max_dead_torrent_time'];
@mysql_query("UPDATE torrents SET visible='no' WHERE visible='yes' AND last_action < $deadtime");

$deadtime time() - $TBDEV['signup_timeout'];
@mysql_query("DELETE FROM users WHERE status = 'pending' AND added < $deadtime AND last_login < $deadtime AND last_access < $deadtime");

$torrents = array();
$res = @mysql_query("SELECT torrent, seeder, COUNT(*) AS c FROM peers GROUP BY torrent, seeder");
while ($row mysql_fetch_assoc($res)) {
if ($row["seeder"] == "yes")
$key "seeders";
else
$key "leechers";
$torrents[$row["torrent"]][$key] = $row["c"];
}

$res = @mysql_query("SELECT torrent, COUNT(*) AS c FROM comments GROUP BY torrent");
while ($row mysql_fetch_assoc($res)) {
$torrents[$row["torrent"]]["comments"] = $row["c"];
}


$fields explode(":""comments:leechers:seeders");
$res = @mysql_query("SELECT id, seeders, leechers, comments FROM torrents");
while ($row mysql_fetch_assoc($res)) {
$id $row["id"];
if(isset($torrents[$id]))
$torr $torrents[$id];
foreach ($fields as $field) {
if (!isset($torr[$field]))
$torr[$field] = 0;
}
$update = array();
foreach ($fields as $field) {
if ($torr[$field] != $row[$field])
$update[] = "$field = " $torr[$field];
}
if (count($update))
@mysql_query("UPDATE torrents SET " implode(","$update) . " WHERE id = $id");
}



// === Update karma seeding bonus... made nicer by devinkray :D
      // ==   Updated and optimized by pdq :)
      // === using this will work for multiple torrents UP TO 5!... change the 5 to whatever... 1 to give the karma for only 1 torrent at a time, or 100 to make it unlimited (almost) your choice :P
      // /======seeding bonus per torrent
      $res mysql_query('SELECT COUNT(torrent) As tcount, userid FROM peers WHERE seeder =\'yes\' GROUP BY userid') or sqlerr(__FILE____LINE__);
      if (mysql_num_rows($res) > 0) {
        while ($arr mysql_fetch_assoc($res)) {
            if ($arr['tcount'] >= 1000)
                $arr['tcount'] = 100;
            $users_buffer[] = '(' $arr['userid'] . ',0.225 * ' $arr['tcount'] . ')';
        }
        if (sizeof($users_buffer) > 0) {
            mysql_query("INSERT INTO users (id,seedbonus) VALUES " implode(', '$users_buffer) . " ON DUPLICATE key UPDATE seedbonus=seedbonus+values(seedbonus)") or sqlerr(__FILE____LINE__);
            $count mysql_affected_rows();
            write_log("Cleanup - " $count " users received seedbonus");
        }
        unset ($users_buffer);
    }

    
// === Updated remove karma vip by Bigjoos - change class number '1' in the users_buffer to whatever is under your vip class number
    $res mysql_query("SELECT id, modcomment FROM users WHERE vip_added='yes' AND vip_until < ".TIME_NOW."") or sqlerr(__FILE____LINE__);
    $msgs_buffer $users_buffer = array();
    if (mysql_num_rows($res) > 0) {
         $subject "VIP status expired.";
         $msg "Your VIP status has timed out and has been auto-removed by the system. Become a VIP again by donating to {$TBDEV['site_name']} , or exchanging some Karma Bonus Points. Cheers !\n";
         while ($arr mysql_fetch_assoc($res)) {
            $modcomment sqlesc(get_datetime(), 'DATE') . " - Vip status Automatically Removed By System\n");
            $msgs_buffer[] = '(0,' $arr['id'] . ','.time().', ' sqlesc($msg) . ', ' sqlesc($subject) . ')';
            $users_buffer[] = '(' $arr['id'] . ',1, \'no\', \'0\' , ' $modcomment ')';
        }
        if (sizeof($msgs_buffer) > 0) {
            mysql_query("INSERT INTO messages (sender,receiver,added,msg,subject) VALUES " implode(', '$msgs_buffer)) or sqlerr(__FILE____LINE__);
            mysql_query("INSERT INTO users (id, class, vip_added, vip_until, modcomment) VALUES " implode(', '$users_buffer) . " ON DUPLICATE key UPDATE class=values(class),
vip_added=values(vip_added),vip_until=values(vip_until),modcomment=concat(values(modcomment),modcomment)"
) or sqlerr(__FILE____LINE__);
        $count mysql_affected_rows();
        write_log("Cleanup - Karma Vip status expired on - " $count " Member(s)");
        }
        unset ($users_buffer);
        unset ($msgs_buffer);
    }

    
//09 Auto leech warn by Bigjoos
    // /==Updated/modified autoleech warning system////
    $minratio 0.3// ratio < 0.3
    $downloaded 10 1024 1024 1024// + 10 GB
    $length 7// Give 3 weeks to let them sort there shit
    $res mysql_query("SELECT id FROM users WHERE enabled='yes' AND class = ".UC_USER." AND leechwarn = 'no' AND uploaded / downloaded < $minratio AND downloaded >= $downloaded") or sqlerr(__FILE____LINE__);
    $msgs_buffer $users_buffer = array();
    if (mysql_num_rows($res) > 0) {
        $subject "Auto leech warned";
        $msg "You have been warned and your download rights have been removed due to your low ratio. You need to get a ratio of 0.5 within the next 3 weeks or your Aaccount will be disabled.";
        $leechwarnuntil sqlesc(time() + ($length 86400));
        while ($arr mysql_fetch_assoc($res)) {
            $modcomment sqlesc(get_datetime(), 'DATE') . " - Automatically Leech warned and downloads disabled By System\n");
            $msgs_buffer[] = '(0,' $arr['id'] . ','.time().', ' sqlesc($msg) . ', ' sqlesc($subject) . ')';
            $users_buffer[] = '(' $arr['id'] . ',\'yes\',' $leechwarnuntil ',\'no\', ' $modcomment ')';
        }
        if (sizeof($msgs_buffer) > 0) {
            mysql_query("INSERT INTO messages (sender,receiver,added,msg,subject) VALUES " implode(', '$msgs_buffer)) or sqlerr(__FILE____LINE__);
            mysql_query("INSERT INTO users (id, leechwarn, leechwarnuntil, downloadpos, modcomment) VALUES " implode(', '$users_buffer) . " ON DUPLICATE key UPDATE leechwarn=values(leechwarn),
leechwarnuntil=values(leechwarnuntil),downloadpos=values(downloadpos),modcomment=concat(values(modcomment),modcomment)"
) or sqlerr(__FILE____LINE__);
            $count mysql_affected_rows();
            write_log("Cleanup: System applied auto leech Warning(s) to  " $count " Member(s)");
        }
        unset ($users_buffer);
        unset ($msgs_buffer);
    }
    // //////////////////////////////////////////////////
    // ==Remove warning and enable downloads
    $minratio 0.5// ratio > 0.5
    $res mysql_query("SELECT id FROM users WHERE downloadpos = 'no' AND leechwarn = 'yes' AND uploaded / downloaded >= $minratio") or sqlerr(__FILE____LINE__);
    $msgs_buffer $users_buffer = array();
    if (mysql_num_rows($res) > 0) {
       $subject "Auto leech warning removed";
        $msg "Your warning for a low ratio has been removed and your downloads enabled. We highly recommend you to keep your ratio positive to avoid being automatically warned again.\n";
        while ($arr mysql_fetch_assoc($res)) {
            $modcomment sqlesc(get_datetime(), 'DATE') . " - Leech warn removed and download enabled By System\n");
            $msgs_buffer[] = '(0,' $arr['id'] . ','.time().', ' sqlesc($msg) . ',  ' sqlesc($subject) . ')';
            $users_buffer[] = '(' $arr['id'] . ',\'no\',\'0\',\'yes\', ' $modcomment ')';
        }
        if (sizeof($msgs_buffer) > 0) {
            mysql_query("INSERT INTO messages (sender,receiver,added,msg,subject) VALUES " implode(', '$msgs_buffer)) or sqlerr(__FILE____LINE__);
            mysql_query("INSERT INTO users (id, leechwarn, leechwarnuntil, downloadpos, modcomment) VALUES " implode(', '$users_buffer) . " ON DUPLICATE key UPDATE leechwarn=values(leechwarn),
leechwarnuntil=values(leechwarnuntil),downloadpos=values(downloadpos),modcomment=concat(values(modcomment),modcomment)"
) or sqlerr(__FILE____LINE__);
            $count mysql_affected_rows();
            write_log("Cleanup: System removed auto leech Warning(s) and renabled download(s) - " $count " Member(s)");
        }
        unset ($users_buffer);
        unset ($msgs_buffer);
    }
    //09 Auto leech warn
    //==Disable expired leechwarned users
    $res mysql_query("SELECT id FROM users WHERE leechwarn='yes' AND leechwarnuntil < ".TIME_NOW." AND leechwarnuntil <> '0' ") or sqlerr(__FILE____LINE__);
    $users_buffer = array();
    if (mysql_num_rows($res) > 0) {
        while ($arr mysql_fetch_assoc($res)) {
            $modcomment sqlesc(get_datetime(), 'DATE') . " - User disabled - Low ratio\n");
            $users_buffer[] = '(' $arr['id'] . ' ,\'no\', \'0\', \'no\', ' $modcomment ')';
        }
        if (sizeof($users_buffer) > 0) {
            mysql_query("INSERT INTO users (id, leechwarn, leechwarnuntil, enabled, modcomment) VALUES " implode(', '$users_buffer) . " ON DUPLICATE key UPDATE leechwarn=values(leechwarn),leechwarnuntil=values(leechwarnuntil),enabled=values(enabled),modcomment=concat(values(modcomment),modcomment)") or sqlerr(__FILE____LINE__);
            $count mysql_affected_rows();
            write_log("Cleanup: Disabled " $count " Member(s) - Leech warning expired");
        }
        unset ($users_buffer);
    }
    
//==End

$registered get_row_count('users');
$unverified get_row_count('users'"WHERE status='pending'");
$torrents get_row_count('torrents');
$seeders get_row_count('peers'"WHERE seeder='yes'");
$leechers get_row_count('peers'"WHERE seeder='no'");
$torrentstoday get_row_count('torrents''WHERE added > '.time().' - 86400');
$donors get_row_count('users'"WHERE donor='yes'");
$unconnectables get_row_count("peers"" WHERE connectable='no'");
$forumposts get_row_count("posts");
$forumtopics get_row_count("topics");
$dt sqlesc(time() - 300); // Active users last 5 minutes
$numactive get_row_count("users""WHERE last_access >= $dt");
mysql_query("UPDATE stats SET regusers = '$registered', unconusers = '$unverified', torrents = '$torrents', seeders = '$seeders', leechers = '$leechers', unconnectables = '$unconnectables', torrentstoday = '$torrentstoday', donors = '$donors', forumposts = '$forumposts', forumtopics = '$forumtopics', numactive = '$numactive' WHERE id = '1' LIMIT 1");

mysql_query("UPDATE `freeslots` SET `double` = 0 WHERE `double` != 0 AND `double` < ".TIME_NOW) or sqlerr(__FILE____LINE__);
mysql_query("UPDATE `freeslots` SET `free` = 0 WHERE `free` != 0 AND `free` < ".TIME_NOW) or sqlerr(__FILE____LINE__);
mysql_query("DELETE FROM `freeslots` WHERE `double` = 0 AND `free` = 0") or sqlerr(__FILE____LINE__);
mysql_query("UPDATE `users` SET `free_switch` = 0 WHERE `free_switch` > 1 AND `free_switch` < ".TIME_NOW) or sqlerr(__FILE____LINE__);
mysql_query("UPDATE `torrents` SET `free` = 0 WHERE `free` > 1 AND `free` < ".TIME_NOW) or sqlerr(__FILE____LINE__);


//-- delete old backup's
$days 7;
$backup_dir 'backup_dir'//-- path to the backup folder
$res mysql_query("SELECT id, name FROM dbbackup WHERE added < ".sqlesc(time() - ($days 86400))) or sqlerr(__FILE____LINE__);
if (
mysql_num_rows($res) > 0)
{
        
$ids = array();

        while (
$arr mysql_fetch_assoc($res))
        {
                
$ids[] = (int)$arr['id'];
                
$filename $backup_dir.'/'.$arr['name'];

                if (
is_file($filename))
                        
unlink($filename);
        }

        
mysql_query('DELETE FROM dbbackup WHERE id IN ('.implode(', '$ids).')') or sqlerr(__FILE____LINE__);
}
//-- end


// ===clear funds after one month
 
$secs 28 86400;
 
$dt sqlesc(time() - $secs);
 
mysql_query("DELETE FROM funds WHERE added < $dt");
 
// ===end
 // === Remove donor status if time is up AND set class back to power user... remember to set the class number for your system in the users_buffer
 //== Donation Progress Mod Updated For Tbdev 2009/2010 by Bigjoos
 
$res mysql_query("SELECT id, modcomment FROM users WHERE donor='yes' AND donoruntil < ".TIME_NOW." AND donoruntil <> '0'") or sqlerr(__FILE____LINE__);
 
$msgs_buffer $users_buffer = array();
 if (
mysql_num_rows($res) > 0) {
 
$subject "Donor status removed by system.";
 
$msg "Your Donor status has timed out and has been auto-removed by the system, and your Vip status has been removed. We would like to thank you once again for your support to {$TBDEV['site_name']}. If you wish to re-new your donation, Visit the site paypal link. Cheers!\n";
 while (
$arr mysql_fetch_assoc($res)) {
 
$modcomment sqlesc(get_datetime(), 'DATE') . " - Donation status Automatically Removed By System\n");
 
$msgs_buffer[] = '(0,' $arr['id'] . ','.time().', ' sqlesc($msg) . ',' sqlesc($subject) . ')';
 
$users_buffer[] = '(' $arr['id'] . ',1,\'no\',\'0\', ' $modcomment ')';
 }
 if (
sizeof($msgs_buffer) > 0) {
 
mysql_query("INSERT INTO messages (sender,receiver,added,msg,subject) VALUES " implode(', '$msgs_buffer)) or sqlerr(__FILE____LINE__);
 
mysql_query("INSERT INTO users (id, class, donor, donoruntil, modcomment) VALUES " implode(', '$users_buffer) . " ON DUPLICATE key UPDATE class=values(class),
 donor=values(donor),donoruntil=values(donoruntil),modcomment=concat(values(modcomment),modcomment)"
) or sqlerr(__FILE____LINE__);
 
$count mysql_affected_rows();
 
write_log("Cleanup: Donation status expired - " $count " Member(s)");
 }
 unset (
$users_buffer);
 unset (
$msgs_buffer);
 }
 
// ===end===//


//delete inactive user accounts
$secs 42*86400;
$dt = (time() - $secs);
$maxclass UC_POWER_USER;
@mysql_query("DELETE FROM users WHERE status='confirmed' AND class <= $maxclass AND last_access < $dt");

// lock topics where last post was made more than x days ago
/* $secs = 7*86400;
$res = mysql_query("SELECT topics.id FROM topics LEFT JOIN posts ON topics.lastpost = posts.id WHERE topics.locked = 'no' AND topics.sticky = 'no' AND " . gmtime() . " - UNIX_TIMESTAMP(posts.added) > $secs") or sqlerr(__FILE__, __LINE__);
  if(mysql_num_rows($res) > 0) {
while ($arr = mysql_fetch_assoc($res))
    $pids[] = $arr['id'];
mysql_query("UPDATE topics SET locked='yes' WHERE id IN (".join(',', $pids).")") or sqlerr(__FILE__, __LINE__);
  }
*/
  //remove expired warnings
  
$res = @mysql_query("SELECT id FROM users WHERE warned='yes' AND warneduntil < ".time()." AND warneduntil <> 0") or sqlerr(__FILE____LINE__);
  if (
mysql_num_rows($res) > 0)
  {
    
$dt time();
    
$msg sqlesc("Your warning has been removed. Please keep in your best behaviour from now on.\n");
    while (
$arr mysql_fetch_assoc($res))
    {
      @
mysql_query("UPDATE users SET warned = 'no', warneduntil = 0 WHERE id = {$arr['id']}") or sqlerr(__FILE____LINE__);
      @
mysql_query("INSERT INTO messages (sender, receiver, added, msg, poster) VALUES(0, {$arr['id']}$dt$msg, 0)") or sqlerr(__FILE____LINE__);
    }
  }

// promote power users
$limit 25*1024*1024*1024;
$minratio 1.05;
$maxdt = (time() - 86400*28);
$res = @mysql_query("SELECT id FROM users WHERE class = 0 AND uploaded >= $limit AND uploaded / downloaded >= $minratio AND added < $maxdt") or sqlerr(__FILE____LINE__);
if (mysql_num_rows($res) > 0)
{
$dt time();
$msg sqlesc("Congratulations, you have been auto-promoted to [b]Power User[/b]. :)\nYou can now download dox over 1 meg and view torrent NFOs.\n");

{
@mysql_query("UPDATE users SET class = 1 WHERE id = {$arr['id']}") or sqlerr(__FILE____LINE__);
@mysql_query("INSERT INTO messages (sender, receiver, added, msg, poster) VALUES(0, {$arr['id']}$dt$msg, 0)") or sqlerr(__FILE____LINE__);
}
}

// demote power users
$minratio 0.95;
$res mysql_query("SELECT id FROM users WHERE class = 1 AND uploaded / downloaded < $minratio") or sqlerr(__FILE____LINE__);
if (mysql_num_rows($res) > 0)
{
$dt time();
$msg sqlesc("You have been auto-demoted from [b]Power User[/b] to [b]User[/b] because your share ratio has dropped below $minratio.\n");
while (
$arr mysql_fetch_assoc($res))
                {
                        @
mysql_query("UPDATE users SET class = 1 WHERE id = {$arr['id']}") or sqlerr(__FILE____LINE__);
                        @
mysql_query("INSERT INTO messages (sender, receiver, added, msg, poster) VALUES(0, {$arr['id']}$dt$msg, 0)") or sqlerr(__FILE____LINE__);
 
status_change($arr['id']);
}
}

$secs 86400;
  $dt sqlesc(time() - $secs);
  
mysql_query("DELETE FROM shoutbox WHERE " time() . " - date > $secs") or sqlerr(__FILE____LINE__);

// Update stats
$seeders get_row_count("peers""WHERE seeder='yes'");
$leechers get_row_count("peers""WHERE seeder='no'");
@mysql_query("UPDATE avps SET value_u=$seeders WHERE arg='seeders'") or sqlerr(__FILE____LINE__);
@mysql_query("UPDATE avps SET value_u=$leechers WHERE arg='leechers'") or sqlerr(__FILE____LINE__);

// update forum post/topic count
//$forums = @mysql_query("SELECT t.forumid, count( DISTINCT p.topicid ) AS topics, count( * ) AS posts FROM posts p LEFT JOIN topics t ON t.id = p.topicid LEFT JOIN forums f ON f.id = t.forumid GROUP BY t.forumid");
$forums = @mysql_query("SELECT f.id, count( DISTINCT t.id ) AS topics, count( * ) AS posts
                          FROM forums f
                          LEFT JOIN topics t ON f.id = t.forumid
                          LEFT JOIN posts p ON t.id = p.topicid
                          GROUP BY f.id"
);
while ($forum mysql_fetch_assoc($forums))
{/*
$postcount = 0;
$topiccount = 0;
$topics = mysql_query("select id from topics where forumid=$forum[id]");
while ($topic = mysql_fetch_assoc($topics))
{
$res = mysql_query("select count(*) from posts where topicid=$topic[id]");
$arr = mysql_fetch_row($res);
$postcount += $arr[0];
++$topiccount;
} */
$forum['posts'] = $forum['topics'] > $forum['posts'] : 0;
@mysql_query("update forums set postcount={$forum['posts']}, topiccount={$forum['topics']} where id={$forum['id']}");
}

// delete old torrents
$days 28;
$dt = (time() - ($days 86400));
$res mysql_query("SELECT id, name FROM torrents WHERE added < $dt");
while ($arr mysql_fetch_assoc($res))
{
@unlink("{$TBDEV['torrent_dir']}/{$arr['id']}.torrent");
@mysql_query("DELETE FROM torrents WHERE id={$arr['id']}");
@mysql_query("DELETE FROM snatched WHERE torrentid ={$arr['id']}");
@mysql_query("DELETE FROM peers WHERE torrent={$arr['id']}");
@mysql_query("DELETE FROM comments WHERE torrent={$arr['id']}");
@mysql_query("DELETE FROM files WHERE torrent={$arr['id']}");
write_log("Torrent {$arr['id']} ({$arr['name']}) was deleted by system (older than $days days)");
}

    
// Remove expired readposts...
    
$dt = (time() - $TBDEV['readpost_expiry']);

    @
mysql_query("DELETE readposts FROM readposts ".
        
"LEFT JOIN posts ON readposts.lastpostread = posts.id ".
        
"WHERE posts.added < $dt") or sqlerr(__FILE__,__LINE__);

}

?>


Torrents Table in phpMyAdmin

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `torrents`
--

CREATE TABLE IF NOT EXISTS `torrents` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `info_hash` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `filename` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `save_as` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `search_text` text COLLATE utf8_unicode_ci NOT NULL,
  `descr` text COLLATE utf8_unicode_ci NOT NULL,
  `ori_descr` text COLLATE utf8_unicode_ci NOT NULL,
  `category` int(10) unsigned NOT NULL DEFAULT '0',
  `size` bigint(20) unsigned NOT NULL DEFAULT '0',
  `added` int(11) NOT NULL,
  `type` enum('single','multi') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'single',
  `numfiles` int(10) unsigned NOT NULL DEFAULT '0',
  `comments` int(10) unsigned NOT NULL DEFAULT '0',
  `views` int(10) unsigned NOT NULL DEFAULT '0',
  `hits` int(10) unsigned NOT NULL DEFAULT '0',
  `times_completed` int(10) unsigned NOT NULL DEFAULT '0',
  `leechers` int(10) unsigned NOT NULL DEFAULT '0',
  `seeders` int(10) unsigned NOT NULL DEFAULT '0',
  `last_action` int(11) NOT NULL,
  `visible` enum('yes','no') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'yes',
  `banned` enum('yes','no') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'no',
  `owner` int(10) unsigned NOT NULL DEFAULT '0',
  `numratings` int(10) unsigned NOT NULL DEFAULT '0',
  `ratingsum` int(10) unsigned NOT NULL DEFAULT '0',
  `nfo` text COLLATE utf8_unicode_ci NOT NULL,
  `client_created_by` char(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'unknown',
  `free` int(11) unsigned NOT NULL DEFAULT '0',
  `url` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL,
  `poster` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT 'pic/noposter.jpg',
  `screen1` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `screen2` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `screen3` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `screen4` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `screen5` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `freecat` int(11) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `info_hash` (`info_hash`),
  KEY `owner` (`owner`),
  KEY `visible` (`visible`),
  KEY `category_visible` (`category`,`visible`),
  FULLTEXT KEY `ft_search` (`search_text`,`ori_descr`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=16 ;


Bittorrent.php

<?php
/*
+------------------------------------------------
|   TBDev.net BitTorrent Tracker PHP
|   =============================================
|   by CoLdFuSiOn
|   (c) 2003 - 2009 TBDev.Net
|   http://www.tbdev.net
|   =============================================
|   svn: http://sourceforge.net/projects/tbdevnet/
|   Licence Info: GPL
+------------------------------------------------
|   $Date$
|   $Revision$
|   $Author$
|   $URL$
+------------------------------------------------
*/
require_once("include/config.php");
require_once(
"cleanup.php");
require_once 
ROOT_PATH.'/cache/free_cache.php';

/**** validip/getip courtesy of manolete <manolete@myway.com> ****/

// IP Validation
function validip($ip)
{
if (!empty($ip) && $ip == long2ip(ip2long($ip)))
{
// reserved IANA IPv4 addresses
// http://www.iana.org/assignments/ipv4-address-space
$reserved_ips = array (
array('0.0.0.0','2.255.255.255'),
array('10.0.0.0','10.255.255.255'),
array('127.0.0.0','127.255.255.255'),
array('169.254.0.0','169.254.255.255'),
array('172.16.0.0','172.31.255.255'),
array('192.0.2.0','192.0.2.255'),
array('192.168.0.0','192.168.255.255'),
array('255.255.255.0','255.255.255.255')
);

foreach ($reserved_ips as $r)
{
$min ip2long($r[0]);
$max ip2long($r[1]);
if ((ip2long($ip) >= $min) && (ip2long($ip) <= $max)) return false;
}
return true;
}
else return false;
}

if (!
function_exists("stripos")) {
 function 
stripos($str,$needle,$offset=0)
 {
 return 
strpos(strtolower($str),strtolower($needle),$offset);
 }
}

function 
autoshout($msg '')
{
    
$message $msg;
    
mysql_query("INSERT INTO shoutbox (date, text, userid, username) VALUES (" implode(", "array_map("sqlesc", array(time(), $message'1''System'))) . ")") or sqlerr(__FILE____LINE__);
}

/////////Strip slashes by system//////////
function cleanquotes(&$in){
if(is_array($in)) return array_walk($in,'cleanquotes');
return $in=stripslashes($in);
}
if(
get_magic_quotes_gpc()){
array_walk($_GET,'cleanquotes');
array_walk($_POST,'cleanquotes');
array_walk($_COOKIE,'cleanquotes');
array_walk($_REQUEST,'cleanquotes');
}
/////////Strip slashes by system//////////

// Patched function to detect REAL IP address if it's valid
function getip() {
   if (isset(
$_SERVER)) {
     if (isset(
$_SERVER['HTTP_X_FORWARDED_FOR']) && validip($_SERVER['HTTP_X_FORWARDED_FOR'])) {
       
$ip $_SERVER['HTTP_X_FORWARDED_FOR'];
     } elseif (isset(
$_SERVER['HTTP_CLIENT_IP']) && validip($_SERVER['HTTP_CLIENT_IP'])) {
       
$ip $_SERVER['HTTP_CLIENT_IP'];
     } else {
       
$ip $_SERVER['REMOTE_ADDR'];
     }
   } else {
     if (
getenv('HTTP_X_FORWARDED_FOR') && validip(getenv('HTTP_X_FORWARDED_FOR'))) {
       
$ip getenv('HTTP_X_FORWARDED_FOR');
     } elseif (
getenv('HTTP_CLIENT_IP') && validip(getenv('HTTP_CLIENT_IP'))) {
       
$ip getenv('HTTP_CLIENT_IP');
     } else {
       
$ip getenv('REMOTE_ADDR');
     }
   }

   return 
$ip;
 }

function 
dbconn($autoclean false)
{
    global 
$TBDEV;

    if (!@
mysql_connect($TBDEV['mysql_host'], $TBDEV['mysql_user'], $TBDEV['mysql_pass']))
    {
  switch (mysql_errno())
  {
case 1040:
case 2002:
if ($_SERVER['REQUEST_METHOD'] == "GET")
die("<html><head><meta http-equiv='refresh' content=\"5 $_SERVER[REQUEST_URI]\"></head><body><table border='0' width='100%' height='100%'><tr><td><h3 align='center'>The server load is very high at the moment. Retrying, please wait...</h3></td></tr></table></body></html>");
else
die("Too many users. Please press the Refresh button in your browser to retry.");
        default:
    
    die("[" mysql_errno() . "] dbconn: mysql_connect: " mysql_error());
      }
    }
    
mysql_select_db($TBDEV['mysql_db'])
        or die(
'dbconn: mysql_select_db: ' mysql_error());
    
//mysql_query("SET NAMES utf8");
    
mysql_set_charset('utf8');

    
userlogin();

    if (
$autoclean)
        
register_shutdown_function("autoclean");
}


function 
userlogin() {
    global 
$TBDEV;
    unset(
$GLOBALS["CURUSER"]);

    
$ip getip();
$nip ip2long($ip);

    require_once 
"cache/bans_cache.php";
    if(
count($bans) > 0)
    {
      foreach(
$bans as $k) {
        if(
$nip >= $k['first'] && $nip <= $k['last']) {
        
header("HTTP/1.0 403 Forbidden");
        print 
"<html><body><h1>403 Forbidden</h1>Unauthorized IP address.</body></html>\n";
        exit();
        }
      }
      unset(
$bans);
    }
    if ( !
$TBDEV['site_online'] || !get_mycookie('uid') || !get_mycookie('pass') )
        return;
    
$id get_mycookie('uid');
    if (!
$id || strlenget_mycookie('pass') ) != 32)
        return;
    
$res mysql_query("SELECT * FROM users WHERE id = $id AND enabled='yes' AND status = 'confirmed'");// or die(mysql_error());
    
$row mysql_fetch_assoc($res);
    if (!
$row)
        return;
    
//$sec = hash_pad($row["secret"]);
    
if (get_mycookie('pass') !== $row["passhash"])
        return;
    
mysql_query("UPDATE users SET last_access='" TIME_NOW "', ip=".sqlesc($ip)." WHERE id=" $row["id"]);// or die(mysql_error());
    
$row['ip'] = $ip;

//==Ip log
    if (($ip != $row["ip"]) && $row["ip"])
    mysql_query('INSERT INTO iplog (ip, userid, access) VALUES (' sqlesc($ip) . ', ' $row['id'] . ', \'' $row['last_access'] . '\') on DUPLICATE KEY update access=values(access)');
    
//==End
    
$GLOBALS["CURUSER"] = $row;

    
//$GLOBALS['CURUSER']['group'] = $TBDEV['groups'][$row['class']];
    //$GLOBALS['CURUSER']['ismod'] = ( $GLOBALS['CURUSER']['group']['g_is_mod'] OR $GLOBALS['CURUSER']['group']['g_is_supmod'] ) ? 1:0;
}

function 
autoclean() {
    global 
$TBDEV;

    
$now time();
    
//$docleanup = 0;

    
$res mysql_query("SELECT value_u FROM avps WHERE arg = 'lastcleantime'");
    
$row mysql_fetch_array($res);
    if (!
$row) {
        
mysql_query("INSERT INTO avps (arg, value_u) VALUES ('lastcleantime',$now)");
        return;
    }
    
$ts $row[0];
    if (
$ts $TBDEV['autoclean_interval'] > $now)
        return;
    
mysql_query("UPDATE avps SET value_u=$now WHERE arg='lastcleantime' AND value_u = $ts");
    if (!
mysql_affected_rows())
        return;


    
docleanup();
}

function 
unesc($x) {
    if (
get_magic_quotes_gpc())
        return 
stripslashes($x);
    return 
$x;
}

function 
mksize($bytes)
{
if ($bytes 1000 1024)
return number_format($bytes 10242) . " kB";
elseif ($bytes 1000 1048576)
return number_format($bytes 10485762) . " MB";
elseif ($bytes 1000 1073741824)
return number_format($bytes 10737418242) . " GB";
else
return number_format($bytes 10995116277762) . " TB";
}
/*
function mksizeint($bytes)
{
$bytes = max(0, $bytes);
if ($bytes < 1000)
return floor($bytes) . " B";
elseif ($bytes < 1000 * 1024)
return floor($bytes / 1024) . " kB";
elseif ($bytes < 1000 * 1048576)
return floor($bytes / 1048576) . " MB";
elseif ($bytes < 1000 * 1073741824)
return floor($bytes / 1073741824) . " GB";
else
return floor($bytes / 1099511627776) . " TB";
}
*/

function mkprettytime($s) {
    if (
$s 0)
        
$s 0;
    
$t = array();
    foreach (array(
"60:sec","60:min","24:hour","0:day") as $x) {
        
$y explode(":"$x);
        if (
$y[0] > 1) {
            
$v $s $y[0];
            
$s floor($s $y[0]);
        }
        else
            
$v $s;
        
$t[$y[1]] = $v;
    }

    if (
$t["day"])
        return 
$t["day"] . "d " sprintf("%02d:%02d:%02d"$t["hour"], $t["min"], $t["sec"]);
    if (
$t["hour"])
        return 
sprintf("%d:%02d:%02d"$t["hour"], $t["min"], $t["sec"]);
//    if ($t["min"])
        
return sprintf("%d:%02d"$t["min"], $t["sec"]);
//    return $t["sec"] . " secs";
}

function 
mkglobal($vars) {
    if (!
is_array($vars))
        
$vars explode(":"$vars);
    foreach (
$vars as $v) {
        if (isset(
$_GET[$v]))
            
$GLOBALS[$v] = unesc($_GET[$v]);
        elseif (isset(
$_POST[$v]))
            
$GLOBALS[$v] = unesc($_POST[$v]);
        else
            return 
0;
    }
    return 
1;
}


function 
validfilename($name) {
    return 
preg_match('/^[^\0-\x1f:\\\\\/?*\xff#<>|]+$/si'$name);
}

function 
validemail($email) {
    return 
preg_match('/^[\w.-]+@([\w.-]+\.)+[a-z]{2,6}$/is'$email);
}

function 
sqlesc($x) {
    return 
"'".mysql_real_escape_string($x)."'";
}

function 
sqlwildcardesc($x) {
    return 
str_replace(array("%","_"), array("\\%","\\_"), mysql_real_escape_string($x));
}

function 
status_change($id) {
 
mysql_query('UPDATE announcement_process SET status = 0 WHERE user_id = '.sqlesc($id).' AND status = 1');
}

function 
hashit($var,$addtext="")
{
return 
md5("This Text ".$addtext.$var.$addtext." is added to muddy the water...");
}

function 
stdhead($title ""$msgalert true) {
    global 
$CURUSER$TBDEV$lang$free;

    if (!
$TBDEV['site_online'])
      die(
"Site is down for maintenance, please check back again later... thanks<br />");

    
//header("Content-Type: text/html; charset=iso-8859-1");
    //header("Pragma: No-cache");
    
if ($title == "")
        
$title $TBDEV['site_name'] .(isset($_GET['tbv'])?" (".TBVERSION.")":'');
    else
        
$title $TBDEV['site_name'].(isset($_GET['tbv'])?" (".TBVERSION.")":''). " :: " htmlspecialchars($title);

    if (
$CURUSER)
    {
    
/*
    $ss_a = @mysql_fetch_array(@sql_query("select uri from stylesheets where id=" . $CURUSER["stylesheet"]));

    if ($ss_a) $ss_uri = $ss_a["uri"];
    */
      
$TBDEV['stylesheet'] = isset($CURUSER['stylesheet']) ? "{$CURUSER['stylesheet']}.css" $TBDEV['stylesheet'];
    }

    
//== 09 Cached Donation progress - MelvinMeow
    $cache_funds "./cache/funds.txt";
    $cache_funds_life 60 60// Hourly
    if (file_exists($cache_funds) && is_array(unserialize(file_get_contents($cache_funds))) && (time() - filemtime($cache_funds)) < $cache_funds_life)
    $row unserialize(@file_get_contents($cache_funds));
    else {
    $funds mysql_query("SELECT sum(cash) as total_funds FROM funds") or sqlerr(__FILE____LINE__);
    $row mysql_fetch_assoc($funds);
    $handle fopen($cache_funds"w+");
    fwrite($handleserialize($row));
    fclose($handle);
    }
    $funds_so_far $row["total_funds"];
    $totalneeded 100;    //=== set this to your monthly wanted amount
    $funds_difference $totalneeded $funds_so_far;
    $Progress_so_far number_format($funds_so_far $totalneeded 1001);
    if($Progress_so_far >= 100)
    $Progress_so_far 100;


if($Progress_so_far >= 100) {
$pic "pic/donation/100.png";
$Progress_so_far "100";
}
elseif($Progress_so_far >= 95) {
$pic "pic/donation/95.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 90) {
$pic "pic/donation/90.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 85) {
$pic "pic/donation/85.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 80) {
$pic "pic/donation/80.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 75) {
$pic "pic/donation/75.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 70) {
$pic "pic/donation/70.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 65) {
$pic "pic/donation/65.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 60) {
$pic "pic/donation/60.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 55) {
$pic "pic/donation/55.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 50) {
$pic "pic/donation/50.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 45) {
$pic "pic/donation/45.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 40) {
$pic "pic/donation/40.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 35) {
$pic "pic/donation/35.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 30) {
$pic "pic/donation/30.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 25) {
$pic "pic/donation/25.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 20) {
$pic "pic/donation/20.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 15) {
$pic "pic/donation/15.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 10) {
$pic "pic/donation/10.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far >= 5) {
$pic "pic/donation/5.png";
$Progress_so_far2 $Progress_so_far;
}
elseif($Progress_so_far == 0) {
$pic "pic/donation/blank.png";
$Progress_so_far2 '5';
}

    if (
$TBDEV['msg_alert'] && $msgalert && $CURUSER)
    {
      
$res mysql_query("SELECT COUNT(*) FROM messages WHERE receiver=" $CURUSER["id"] . " && unread='yes'") or sqlerr(__FILE__,__LINE__);
      
$arr mysql_fetch_row($res);
      
$unread $arr[0];
    }

    
$htmlout "<!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'>
<head>

<meta name='generator' content='TBDev.net' />
<meta http-equiv='Content-Language' content='en-us' />
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta name='MSSmartTagsPreventParsing' content='TRUE' />

<title>
{$title}</title>
<link rel='stylesheet' href='
{$TBDEV['stylesheet']}' type='text/css' />
<script type='text/javascript' src='scripts/jquery.js'></script>
<script type='text/javascript' src='scripts/java_klappe.js'></script>
<script type='text/javascript' src='scripts/shout.js'></script>
<script type='text/javascript' src='scripts/animatedcollapse.js'></script>
<script type='text/javascript' src='scripts/staffbox.js'></script>
<script type='text/javascript' src='ncode_imageresizer.js'></script>
<link rel='stylesheet' href='lightbox/css/jquery.lightbox-0.5.css' type='text/css' media='screen' />

    <!-- LightBox Plugin + Jquery -->
    <script type='text/javascript' src='lightbox/js/jquery.js'></script>
    <script type='text/javascript' src='lightbox/js/jquery.lightbox-0.5.min.js'></script>
    <script type='text/javascript'>$(function() { $('a[@rel*=lightbox]').lightBox(); });</script>
</head>

    <body>

<br/>"
;
    if (
$CURUSER ['donprog']=='yes')
    {
$htmlout .= "<div id='donations'>
<table width='150' height='27'><tr><td background='
$pic' style='border: none;' align='center'><a href='{$TBDEV['baseurl']}/donate.php'><font color='white' style='text-shadow: #000 0px 1px; float:left;'>Donate!</table></tr></td><div id='donationtext'><font color='white'>Donations: $Progress_so_far%</font></div></table></tr></td>
    </div>"
;
    }
$htmlout .= "<center><div id='logo'></center></div>

     </div>
      </td>

      </tr></table>

      <table class='mainouter' width='90%' align='center' border='1' cellspacing='0' cellpadding='10'>
<!-- STATUSBAR -->"
;



    
$htmlout .= "<!-- MENU -->
      <tr>
      <center><div id='submenu' style='-moz-border-radius: 6px;-webkit-border-radius: 6px;'>"
;

    if (
$CURUSER)
    {
      
$htmlout .= "<div class='tb-top-left-link'>
      <a href='index.php'>
{$lang['gl_home']}</a>&nbsp;&nbsp;
      &nbsp;&nbsp;<a href='browse.php'>
{$lang['gl_browse']}</a>
      &nbsp;&nbsp;<a href='upload.php'>
{$lang['gl_upload']}</a>&nbsp;&nbsp;
      &nbsp;&nbsp;<a href='chat.php'>
{$lang['gl_chat']}</a>&nbsp;&nbsp;
      &nbsp;&nbsp;<a href='forums.php'>
{$lang['gl_forums']}</a>&nbsp;&nbsp;
      <!--<a href='misc/dox.php'>DOX</a>-->
      &nbsp;&nbsp;<a href='donate.php'><font color='yellow'>Donate</font></a>&nbsp;&nbsp;
      &nbsp;&nbsp;<a href='topten.php'>
{$lang['gl_top_10']}</a>&nbsp;&nbsp;
      &nbsp;&nbsp;<a href='rules.php'>
{$lang['gl_rules']}</a>&nbsp;&nbsp;
      &nbsp;&nbsp;<a href='faq.php'>
{$lang['gl_faq']}</a>&nbsp;&nbsp;
      &nbsp;&nbsp;<a href='contactstaff.php'>Contact</a>&nbsp;&nbsp;
      &nbsp;&nbsp;<a href='staff.php'>
{$lang['gl_staff']}</a>&nbsp;&nbsp;
      </div>
      <div class='tb-top-right-link'>"
;

      if( 
$CURUSER['class'] >= UC_MODERATOR )
      {
        
$htmlout .= "<a href='admin.php'>{$lang['gl_admin']}</a>";
      }

    
$htmlout .= "<a href='my.php'>{$lang['gl_profile']}</a>
      <a href='logout.php'>
{$lang['gl_logout']}</a>
      </div>"
;
    }
    else
    {
      
$htmlout .= "<div class='tb-top-left-link'>
      <a href='login.php'>
{$lang['gl_login']}</a>
      <a href='signup.php'>
{$lang['gl_signup']}</a>
      <a href='recover.php'>
{$lang['gl_recover']}</a>
      </div>"
;
    }


    
$htmlout .= "</div>
    </td>
    </tr>"
;
    
$htmlout .= StatusBar();
    
$htmlout .= "<tr><td align='center' class='outer' style='padding-top: 20px; padding-bottom: 20px'>";


   if (
$TBDEV['msg_alert'] && isset($unread) && !empty($unread))
   {
   
$htmlout .= "
   <table border='0' cellspacing='0' cellpadding='10' bgcolor='red'>
   <tr><td style='padding: 10px; background: #890537'>\n
   <b><a href='
{$TBDEV['baseurl']}/messages.php'><font color='white'>".sprintf($lang['gl_msg_alert'], $unread) . ($unread "s" "") . "!</font></a></b>
   </td></tr></table><br />\n"
;
   }
/*
   if($TBDEV['staffmsg_alert'] && $CURUSER['class'] >= UC_MODERATOR) {
                   $num = mysql_result(mysql_query('SELECT count(id) FROM staffmessages WHERE answeredby = 0'),0);
                   if($num > 0)
                   $htmlout .= "<p><table border='0' cellspacing='0' cellpadding='10'>
                     <tr><td style='padding: 10px; background: #ccc'>\n
                     <b><a href='staffbox.php'>".sprintf($lang['gl_staffmsg_alert'], $num). "!</a></b>
                     </td></tr></table><br/>";
        }

   if($TBDEV['donationmail_alert'] && $CURUSER['class'] >= UC_MODERATOR) {
                   $num = mysql_result(mysql_query('SELECT count(id) FROM donationmsg WHERE answeredby = 0'),0);
                   if($num > 0)
                   $htmlout .= "<p><table border='0' cellspacing='0' cellpadding='10'>
                     <tr><td style='padding: 10px; background: #ccc'>\n
                     <b><a href='donationbox.php'>".sprintf($lang['gl_staffmsg_alert'], $num). "!</a></b>
                     </td></tr></table><br/>";
        }

*/
//=== free addon start
if ($CURUSER) {
if (isset(
$free)) {
  foreach (
$free as $fl) {
        switch (
$fl['modifier']) {
            case 
1:
                
$mode 'All Torrents Free';
                break;

            case 
2:
                
$mode 'All Double Upload';
                break;

            case 
3:
                
$mode 'All Torrents Free and Double Upload';
                break;

            default:
                
$mode 0;
        }

$htmlout .= ($fl['modifier'] != && ($fl['expires'] > TIME_NOW || $fl['expires'] == 1) ? '<table width="50%"><tr>
     <td class="colhead" colspan="3" align="center">'
.$fl['title'].'<br />'.$mode.'</td>
   </tr>
   <tr>
     <td width="42" align="center">
     <img src="'
.$TBDEV['baseurl'].'/pic/cat_free.gif" alt="FREE!" /></td>
     <td align="center">'
.$fl['message'].' set by '.$fl['setby'].'<br />'.($fl['expires'] != ?
'Until '.get_date($fl['expires'], 'DATE').' ('.mkprettytime($fl['expires'] - TIME_NOW).' to go)' '').'</td>
     <td width="42" align="center">
     <img src="'
.$TBDEV['baseurl'].'/pic/cat_free.gif" alt="FREE!" /></td>
</tr></table>
<br />' 
'');
}
}
}
//=== free addon end


//==Big red report thingy box:
if($TBDEV['report_alert'] && $CURUSER['class'] >= UC_MODERATOR) {
                
$num mysql_result(mysql_query('SELECT COUNT(id) FROM reports WHERE delt_with = 0'),0);
                if(
$num 0)
                
$htmlout .= "<table border='0' cellspacing='0' cellpadding='10'>
                  <tr><td style='padding: 10px; background: #ccc'>\n
                  <b><a href='reports.php'>"
.sprintf($lang['gl_reportmsg_alert'], $num). "!</a></b>
                  </td></tr></table><br/>"
;
        }
        
//==End

if($TBDEV['staffmsg_alert'] && $CURUSER['class'] >= UC_MODERATOR) {
         $num mysql_result(mysql_query('SELECT COUNT(id) FROM staffmessages WHERE delt_with = 0'),0);
         if($num 0)
         $htmlout .= "<table border='0' cellspacing='0' cellpadding='10'>
            <tr><td style='padding: 10px; background: #ccc'>\n
            <b><a href='staffbox.php'>"
.sprintf($lang['gl_staffmsg_alert'], $num). "!</a></b>
            </td></tr></table><br/>"
;
        }

if(
$TBDEV['donationmail_alert'] && $CURUSER['class'] >= UC_MODERATOR) {
         $num mysql_result(mysql_query('SELECT COUNT(id) FROM donationmsg WHERE answered = 0'),0);
         if($num 0)
         $htmlout .= "<table border='0' cellspacing='0' cellpadding='10'>
            <tr><td style='padding: 10px; background: #ccc'>\n
            <b><a href='donationbox.php'>"
.sprintf($lang['gl_staffmsg_alert'], $num). "!</a></b>
            </td></tr></table><br/>"
;
        }

        
/*
           if($TBDEV['staffmsg_alert'] && $CURUSER['class'] >= UC_MODERATOR) {
                   $num = mysql_result(mysql_query('SELECT count(id) FROM staffmessages WHERE answeredby = 0'),0);
                   if($num > 0)
                   $htmlout .= "<p><table border='0' cellspacing='0' cellpadding='10'>
                     <tr><td style='padding: 10px; background: #ccc'>\n
                     <b><a href='staffbox.php'>".sprintf($lang['gl_staffmsg_alert'], $num). "!</a></b>
                     </td></tr></table><br/>";
        }

   if($TBDEV['donationmail_alert'] && $CURUSER['class'] >= UC_MODERATOR) {
                   $num = mysql_result(mysql_query('SELECT count(id) FROM donationmsg WHERE answeredby = 0'),0);
                   if($num > 0)
                   $htmlout .= "<p><table border='0' cellspacing='0' cellpadding='10'>
                     <tr><td style='padding: 10px; background: #ccc'>\n
                     <b><a href='donationbox.php'>".sprintf($lang['gl_staffmsg_alert'], $num). "!</a></b>
                     </td></tr></table><br/>";
        }
        */
/*
    if ($TBDEV['msg_alert'] && isset($unread) && !empty($unread))
    {
      $htmlout .= "<p><table border='0' cellspacing='0' cellpadding='10' bgcolor='red'>
                  <tr><td style='padding: 10px; background: red'>\n
                  <b><a href='messages.php'><font color='white'>".sprintf($lang['gl_msg_alert'], $unread) . ($unread > 1 ? "s" : "") . "!</font></a></b>
                  </td></tr></table></p>\n";
    }
   */
    
return $htmlout;

// stdhead

function stdfoot() {
  global 
$TBDEV;

    return 
"<p align='center'>Remember, if you see any specific instance of this software running publically, it's within your rights under gpl to garner a copy of that derivitive from the person responsible for that webserver.
    <a href='http://www.tbdev.net'><img src='
{$TBDEV['pic_base_url']}tbdev_btn_red.png' border='0' alt='Powered By TBDev &copy;2010' title='Powered By TBDev &copy;2010' /></a></p>
    </td></tr></table>\n
    </body></html>\n"
;
}

function 
httperr($code 404) {
    
header("HTTP/1.0 404 Not found");
    print(
"<h1>Not Found</h1>\n");
    print(
"<p>Sorry pal :(</p>\n");
    exit();
}
/*
function gmtime()
{
    return strtotime(get_date_time());
}
*/
/*
function logincookie($id, $password, $secret, $updatedb = 1, $expires = 0x7fffffff) {
    $md5 = md5($secret . $password . $secret);
    setcookie("uid", $id, $expires, "/");
    setcookie("pass", $md5, $expires, "/");

    if ($updatedb)
        mysql_query("UPDATE users SET last_login = NOW() WHERE id = $id");
}
*/

function logincookie($id$passhash$updatedb 1$expires 0x7fffffff)
{
    
//setcookie("uid", $id, $expires, "/");
    //setcookie("pass", $passhash, $expires, "/");
    
set_mycookie"uid"$id$expires );
    
set_mycookie"pass"$passhash$expires );

    if (
$updatedb)
      @
mysql_query("UPDATE users SET last_login = ".TIME_NOW." WHERE id = $id");
}

function 
set_mycookie$name$value=""$expires_in=0$sticky=)
    {
global $TBDEV;

if ( $sticky == )
    {
      
$expires time() + 60*60*24*365;
    }
else if ( $expires_in )
{
$expires time() + ( $expires_in 86400 );
}
else
{
$expires FALSE;
}

$TBDEV['cookie_domain'] = $TBDEV['cookie_domain'] == "" ""  $TBDEV['cookie_domain'];
    
$TBDEV['cookie_path']   = $TBDEV['cookie_path']   == "" "/" $TBDEV['cookie_path'];

if ( PHP_VERSION 5.2 )
{
      if ( 
$TBDEV['cookie_domain'] )
      {
        @
setcookie$TBDEV['cookie_prefix'].$name$value$expires$TBDEV['cookie_path'], $TBDEV['cookie_domain'] . '; HttpOnly' );
      }
      else
      {
        @
setcookie$TBDEV['cookie_prefix'].$name$value$expires$TBDEV['cookie_path'] );
      }
    }
    else
    {
      @
setcookie$TBDEV['cookie_prefix'].$name$value$expires$TBDEV['cookie_path'], $TBDEV['cookie_domain'], NULLTRUE );
    }

}
function 
get_mycookie($name)
    {
      global 
$TBDEV;

    
if ( isset($_COOKIE[$TBDEV['cookie_prefix'].$name]) AND !empty($_COOKIE[$TBDEV['cookie_prefix'].$name]) )
    
{
    
return urldecode($_COOKIE[$TBDEV['cookie_prefix'].$name]);
    
}
    
else
    
{
    
return FALSE;
    
}
}

function 
logoutcookie() {
    
//setcookie("uid", "", 0x7fffffff, "/");
    //setcookie("pass", "", 0x7fffffff, "/");
    
set_mycookie('uid''-1');
    
set_mycookie('pass''-1');
}

function 
loggedinorreturn() {
    global 
$CURUSER$TBDEV;
    if (!
$CURUSER) {
        
header("Location: {$TBDEV['baseurl']}/login.php?returnto=" urlencode($_SERVER["REQUEST_URI"]));
        exit();
    }
}


function 
searchfield($s) {
    return 
preg_replace(array('/[^a-z0-9]/si''/^\s*/s''/\s*$/s''/\s+/s'), array(" """""" "), $s);
}

function 
genrelist() {
    
$ret = array();
    
$res mysql_query("SELECT id, image, name FROM categories ORDER BY name");
    while (
$row mysql_fetch_array($res))
        
$ret[] = $row;
    return 
$ret;
}

function 
genrelistfree() {
    
$ret = array();
    
$res mysql_query("SELECT id, image, name FROM categories ORDER BY name WHERE id='9'");
    while (
$row mysql_fetch_array($res))
        
$ret[] = $row;
    return 
$ret;
}


function 
get_row_count($table$suffix "")
{
  if (
$suffix)
    
$suffix $suffix";
  (
$r mysql_query("SELECT COUNT(*) FROM $table$suffix")) or die(mysql_error());
  (
$a mysql_fetch_row($r)) or die(mysql_error());
  return 
$a[0];
}

function 
stdmsg($heading$text)
{
    
$htmlout "<table class='main' width='750' border='0' cellpadding='0' cellspacing='0'>
    <tr><td class='embedded'>\n"
;

    if (
$heading)
      
$htmlout .= "<h2>$heading</h2>\n";

    
$htmlout .= "<table width='100%' border='1' cellspacing='0' cellpadding='10'><tr><td class='text'>\n";
    
$htmlout .= "{$text}</td></tr></table></td></tr></table>\n";

    return 
$htmlout;
}


function 
stderr($heading$text)
{
    
$htmlout stdhead();
    
$htmlout .= stdmsg($heading$text);
    
$htmlout .= stdfoot();

    print 
$htmlout;
    exit();
}

// Basic MySQL error handler

function sqlerr($file ''$line '') {
    global 
$TBDEV$CURUSER;

$the_error    mysql_error();
$the_error_no mysql_errno();

    
if ( SQL_DEBUG == )
    
{
exit();
    
}
     
else if ( $TBDEV['sql_error_log'] AND SQL_DEBUG == )
{
$_error_string  "\n===================================================";
$_error_string .= "\n Date: "date'r' );
$_error_string .= "\n Error Number: " $the_error_no;
$_error_string .= "\n Error: " $the_error;
$_error_string .= "\n IP Address: " $_SERVER['REMOTE_ADDR'];
$_error_string .= "\n in file ".$file." on line ".$line;
$_error_string .= "\n URL:".$_SERVER['REQUEST_URI'];
$_error_string .= "\n Username: {$CURUSER['username']}[{$CURUSER['id']}]";

if ( $FH = @fopen$TBDEV['sql_error_log'], 'a' ) )
{
@fwrite$FH$_error_string );
@fclose$FH );
}

print "<html><head><title>MySQL Error</title>
<style>P,BODY{ font-family:arial,sans-serif; font-size:11px; }</style></head><body>
        <blockquote><h1>MySQL Error</h1><b>There appears to be an error with the database.</b><br />
        You can try to refresh the page by clicking <a href=\"javascript:window.location=window.location;\">here</a>
  </body></html>"
;
}
else
{
    
$the_error "\nSQL error: ".$the_error."\n";
     $the_error .= "SQL error code: ".$the_error_no."\n";
     $the_error .= "Date: ".date("l dS \of F Y h:i:s A");

     $out "<html>\n<head>\n<title>MySQL Error</title>\n
        <style>P,BODY{ font-family:arial,sans-serif; font-size:11px; }</style>\n</head>\n<body>\n
        <blockquote>\n<h1>MySQL Error</h1><b>There appears to be an error with the database.</b><br />
        You can try to refresh the page by clicking <a href=\"javascript:window.location=window.location;\">here</a>.
        <br /><br /><b>Error Returned</b><br />
        <form name='mysql'><textarea rows=\"15\" cols=\"60\">"
.htmlentities($the_errorENT_QUOTES)."</textarea></form><br>We apologise for any inconvenience</blockquote></body></html>";


        print $out;
}

        exit();
}

/*
// Returns the current time in GMT in MySQL compatible format.
function get_date_time($timestamp = 0)
{
  if ($timestamp)
    return date("Y-m-d H:i:s", $timestamp);
  else
    return gmdate("Y-m-d H:i:s");
}
*/

function get_dt_num()
{
  return 
gmdate("YmdHis");
}



function 
write_log($text)
{
  
$text sqlesc($text);
  
$added TIME_NOW;
  
mysql_query("INSERT INTO sitelog (added, txt) VALUES($added$text)") or sqlerr(__FILE____LINE__);
}


function 
sql_timestamp_to_unix_timestamp($s)
{
  return 
mktime(substr($s112), substr($s142), substr($s172), substr($s52), substr($s82), substr($s04));
}

/*
function get_elapsed_time($ts)
{
  $mins = floor((gmtime() - $ts) / 60);
  $hours = floor($mins / 60);
  $mins -= $hours * 60;
  $days = floor($hours / 24);
  $hours -= $days * 24;
  $weeks = floor($days / 7);
  $days -= $weeks * 7;
//  $t = "";
  if ($weeks > 0)
    return "$weeks week" . ($weeks > 1 ? "s" : "");
  if ($days > 0)
    return "$days day" . ($days > 1 ? "s" : "");
  if ($hours > 0)
    return "$hours hour" . ($hours > 1 ? "s" : "");
  if ($mins > 0)
    return "$mins min" . ($mins > 1 ? "s" : "");
  return "< 1 min";
}
*/


function unixstamp_to_human$unix=)
    {
    
$offset get_time_offset();
    
$tmp    gmdate'j,n,Y,G,i'$unix $offset );

    
list( $day$month$year$hour$min ) = explode','$tmp );

    
return array( 'day'    => $day,
                    
'month'  => $month,
                    
'year'   => $year,
                    
'hour'   => $hour,
                    
'minute' => $min );
    }



function 
get_time_offset() {

    
global $CURUSER$TBDEV;
    
$r 0;

    
$r = ( ($CURUSER['time_offset'] != "") ? $CURUSER['time_offset'] : $TBDEV['time_offset'] ) * 3600;

      if ( 
$TBDEV['time_adjust'] )
      {
        
$r += ($TBDEV['time_adjust'] * 60);
      }

      if ( 
$CURUSER['dst_in_use'] )
      {
        
$r += 3600;
      }

        return 
$r;
}


function 
get_date($date$method$norelative=0$full_relative=0)
    {
        global 
$TBDEV;

        static 
$offset_set 0;
        static 
$today_time 0;
        static 
$yesterday_time 0;
        
$time_options = array(
        
'JOINED' => $TBDEV['time_joined'],
        
'SHORT'  => $TBDEV['time_short'],
'LONG'   => $TBDEV['time_long'],
'TINY'   => $TBDEV['time_tiny'] ? $TBDEV['time_tiny'] : 'j M Y - G:i',
'DATE'   => $TBDEV['time_date'] ? $TBDEV['time_date'] : 'j M Y'
);

        if ( ! 
$date )
        {
            return 
'--';
        }

        if ( empty(
$method) )
        {
        
$method 'LONG';
        }

        if (
$offset_set == 0)
        {
        
$GLOBALS['offset'] = get_time_offset();

          if ( 
$TBDEV['time_use_relative'] )
          {
            
$today_time     gmdate('d,m,Y', ( time() + $GLOBALS['offset']) );
            
$yesterday_time gmdate('d,m,Y', ( (time() - 86400) + $GLOBALS['offset']) );
          }

          
$offset_set 1;
        }

        if ( 
$TBDEV['time_use_relative'] == )
        {
        
$full_relative 1;
        }

        if ( 
$full_relative and ( $norelative != ) )
        {
          
$diff time() - $date;

          if ( 
$diff 3600 )
          {
            if ( 
$diff 120 )
            {
              return 
'< 1 minute ago';
            }
            else
            {
              return 
sprintf'%s minutes ago'intval($diff 60) );
            }
          }
          else if ( 
$diff 7200 )
          {
            return 
'< 1 hour ago';
          }
          else if ( 
$diff 86400 )
          {
            return 
sprintf'%s hours ago'intval($diff 3600) );
          }
          else if ( 
$diff 172800 )
          {
            return 
'< 1 day ago';
          }
          else if ( 
$diff 604800 )
          {
            return 
sprintf'%s days ago'intval($diff 86400) );
          }
          else if ( 
$diff 1209600 )
          {
            return 
'< 1 week ago';
          }
          else if ( 
$diff 3024000 )
          {
            return 
sprintf'%s weeks ago'intval($diff 604900) );
          }
          else
          {
            return 
gmdate($time_options[$method], ($date $GLOBALS['offset']) );
          }
        }
        else if ( 
$TBDEV['time_use_relative'] and ( $norelative != ) )
        {
          
$this_time gmdate('d,m,Y', ($date $GLOBALS['offset']) );

          if ( 
$TBDEV['time_use_relative'] == )
          {
            
$diff time() - $date;

            if ( 
$diff 3600 )
            {
              if ( 
$diff 120 )
              {
                return 
'< 1 minute ago';
              }
              else
              {
                return 
sprintf'%s minutes ago'intval($diff 60) );
              }
            }
          }

            if ( 
$this_time == $today_time )
            {
              return 
str_replace'{--}''Today'gmdate($TBDEV['time_use_relative_format'], ($date $GLOBALS['offset']) ) );
            }
            else if  ( 
$this_time == $yesterday_time )
            {
              return 
str_replace'{--}''Yesterday'gmdate($TBDEV['time_use_relative_format'], ($date $GLOBALS['offset']) ) );
            }
            else
            {
              return 
gmdate($time_options[$method], ($date $GLOBALS['offset']) );
            }
        }
        else
        {
          return 
gmdate($time_options[$method], ($date $GLOBALS['offset']) );
        }
}


function 
hash_pad($hash) {
    return 
str_pad($hash20);
}


function 
StatusBar() {

global $CURUSER$TBDEV$lang;

if (!$CURUSER)
return "";


$upped mksize($CURUSER['uploaded']);

$downed mksize($CURUSER['downloaded']);

$ratio $CURUSER['downloaded'] > $CURUSER['uploaded']/$CURUSER['downloaded'] : 0;

$ratio number_format($ratio2);

$IsDonor '';
if ($CURUSER['donor'] == "yes")

$IsDonor "<img src='pic/donorsmall.png' alt='donor' title='donor' />";


$warn '';
if ($CURUSER['warned'] == "yes")

$warn "<img src='pic/warnedsmall.png' alt='warned' title='warned' />";

$res1 = @mysql_query("SELECT COUNT(*) FROM messages WHERE receiver=" $CURUSER["id"] . " AND unread='yes'") or sqlerr(__LINE__,__FILE__);

$arr1 mysql_fetch_row($res1);

$unread $arr1[0];

$inbox = ($unread == "$unread&nbsp;{$lang['gl_msg_singular']}"$unread&nbsp;{$lang['gl_msg_plural']}");


$res2 = @mysql_query("SELECT seeder, COUNT(*) AS pCount FROM peers WHERE userid=".$CURUSER['id']." GROUP BY seeder") or sqlerr(__LINE__,__FILE__);

$seedleech = array('yes' => '0''no' => '0');

while( $row mysql_fetch_assoc($res2) ) {
if($row['seeder'] == 'yes')
$seedleech['yes'] = $row['pCount'];
else
$seedleech['no'] = $row['pCount'];

}

/////////////// REP SYSTEM /////////////
//$CURUSER['reputation'] = 49;

$member_reputation get_reputation($CURUSER1);
////////////// REP SYSTEM END //////////

$StatusBar '';
$StatusBar =
"<div id='statusbar'>
        
{$lang['gl_msg_welcome']}&nbsp;to SportBits.eu, <a href='userdetails.php?id={$CURUSER['id']}'>{$CURUSER['username']}</a>
$IsDonor$warn&nbsp;[<a href='logout.php'>Logout</a>]
&nbsp;|&nbsp;&nbsp;
{$lang['gl_uploaded']}{$upped}&nbsp;<img src='pic/uploaded.png' width='13px' height='13px'>|&nbsp;&nbsp;{$lang['gl_downloaded']}{$downed}&nbsp;<img src='pic/downloaded.png' width='13px' height='13px'>|&nbsp;&nbsp;{$lang['gl_ratio']}{$ratio}&nbsp;&nbsp;|&nbsp;&nbsp;<a href='messages.php'>$inbox</a>&nbsp;&nbsp;{$lang['gl_bonus']}&nbsp;<a href='mybonus.php'>{$CURUSER['seedbonus']}</a></div><div id='statusbar_left'>".date(DATE_RFC822)."</div>
  </div>"
;

return $StatusBar;

}


function 
load_language($file='') {

    global 
$TBDEV;

    if( !isset(
$GLOBALS['CURUSER']) OR empty($GLOBALS['CURUSER']['language']) )
    {
      if( !
file_exists(ROOT_PATH."/lang/{$TBDEV['language']}/lang_{$file}.php") )
      {
        
stderr('SYSTEM ERROR''Can\'t find language files');
      }

      require_once 
ROOT_PATH."/lang/{$TBDEV['language']}/lang_{$file}.php";
      return 
$lang;
    }

    if( !
file_exists(ROOT_PATH."/lang/{$GLOBALS['CURUSER']['language']}/lang_{$file}.php") )
    {
      
stderr('SYSTEM ERROR''Can\'t find language files');
    }
    else
    {
      require_once 
ROOT_PATH."/lang/{$GLOBALS['CURUSER']['language']}/lang_{$file}.php";
    }

    return 
$lang;
}


?>


Thanks all in advance, hope someone is smarter than i am to find it out!!  :) :)

Greets, MJF  :D