Seeding & download

Started by Proiect, November 08, 2011, 06:38:03 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Mindless

#2
Code (php) Select
$headers = getallheaders();
   if (isset($headers['Cookie']) || isset($headers['Accept-Language']) || isset($headers['Accept-Charset']))
   exit('It takes 46 muscles to frown but only 4 to flip \'em the bird.');


Without even looking thats what the server will fail on, start using your head and error logs cos i sure aint running and answering the same old shit over and over. ANd i dont need to see bittorrent.php -= the issue like you were told is your server not having the correct dependencies for the code so it errors out simple as that.

Proiect

#1
Seeding problem and if I want to download it gives me this error in uTorrent
HTTP Error 500

Does anyone know why I have this problem?


announce.php


<?php
/**
 *   http://btdev.net:1337/svn/test/Installer09_Beta
 *   Licence Info: GPL
 *   Copyright (C) 2010 BTDev Installer v.2
 *   A bittorrent tracker source based on TBDev.net/tbsource/bytemonsoon.
 *   Project Leaders: Mindless,putyn.
 **/
error_reporting(0);
////////////////// GLOBAL VARIABLES ////////////////////////////
$TBDEV['baseurl'] = 'http:********';
$TBDEV['announce_interval'] = 60 30;
$TBDEV['connectable_check'] = 1;
$TBDEV['max_slots'] = 1//1=On 0=Off
$TBDEV['user_slots'] = 20;
$TBDEV['p_user_slots'] = 30;
$TBDEV['user_ratio1_slots'] = 2;
$TBDEV['user_ratio2_slots'] = 3;
$TBDEV['user_ratio3_slots'] = 5;
$TBDEV['user_ratio4_slots'] = 10;
define('TIME_NOW'time());
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);
// DB setup
$TBDEV['mysql_host'] = "*****";
$TBDEV['mysql_user'] = "******";
$TBDEV['mysql_pass'] = "******";
$TBDEV['mysql_db']   = "******";
require_once(
"include/class/class_cache.php");
$mc1 = NEW CACHE();
$TBDEV['expires']['user_passkey'] = 900// 900 = 15 min
$TBDEV['cache'] = dirname(__FILE__).DIRECTORY_SEPARATOR.'cache'.DIRECTORY_SEPARATOR;
////////////////// GLOBAL VARIABLES ////////////////////////////
// DO NOT EDIT BELOW UNLESS YOU KNOW WHAT YOU'RE DOING!!
   //=== bad stuff let's just kill this right off
   
$agent $_SERVER["HTTP_USER_AGENT"];
   
$detectedclient $_SERVER["HTTP_USER_AGENT"];
   
$headers getallheaders();
   if (isset(
$headers['Cookie']) || isset($headers['Accept-Language']) || isset($headers['Accept-Charset']))
   exit(
'It takes 46 muscles to frown but only 4 to flip \'em the bird.');
   
/////////////////////// FUNCTION DEFS ///////////////////////////////////
   
   
function crazyhour_announce() {
   global 
$TBDEV;
   
$crazyhour_filename $TBDEV['cache'].'crazy_hour.txt';
   
$crazyhour_cache fopen($crazyhour_filename,'r+');
   
$crazyhour_var fread($crazyhour_cachefilesize($crazyhour_filename));
   
fclose($crazyhour_cache);
   
   if (
$crazyhour_var >= TIME_NOW && $crazyhour_var TIME_NOW 3600// is crazyhour
       
return true;
       
    elseif (
$crazyhour_var 3600 TIME_NOW) {   // crazyhour over
        
$crazyhour['crazyhour_new']       = mktime(235959date('m'), date('d'), date('y'));
        
$crazyhour['crazyhour']['var']    = mt_rand($crazyhour['crazyhour_new'], ($crazyhour['crazyhour_new'] + 86400));
        
$fp fopen($crazyhour_filename'w');
        
fwrite($fp$crazyhour['crazyhour']['var']);
        
fclose($fp); 
        
/** log, shoutbot **/
        //$text = 'Next Crazyhour is at '.$crazyhour['crazyhour'];
        //mysql_query('INSERT INTO sitelog (added, txt) VALUES('.TIME_NOW.', '.sqlesc($text).')') or err("Crazyhour Err");     
        //mysql_query('INSERT INTO shoutbox (userid, date, text, text_parsed) VALUES (2, '.TIME_NOW.', '.sqlesc($text).', '.sqlesc($text).')') or err("Crazyhour Err 1");
        
return false;
        }
        else
        return 
false;
        }
      // crazyhour end

  
/*Strip magic*/
function strip_magic_quotes($arr)
{
foreach (
$arr as $k => $v)
{
if (
is_array($v))
$arr[$k] = strip_magic_quotes($v); }
else
$arr[$k] = stripslashes($v); }
}
return 
$arr;
}
if (
get_magic_quotes_gpc())
{
if (!empty(
$_GET)) { $_GET strip_magic_quotes($_GET); }
if (!empty(
$_POST)) { $_POST strip_magic_quotes($_POST); }
if (!empty(
$_COOKIE)) { $_COOKIE strip_magic_quotes($_COOKIE); }
}
/*End*/   
  
function 
whitelist($useragent$agentversion)
{
switch ($useragent)
{
case '-UT':
if($agentversion >= 1760 || in_array($agentversion, array(1610180)))
$result true;
break;
case '-AZ':
if($agentversion >= 2504)
$result true;
break;
case '-lt':
$result true;
break;
case '-T03':
$result true;
break;
case '-TR':
if($agentversion >= 960)
$result true;
break;
case 'M6-':
if($agentversion >= 603)
$result true;
break;
case '-KT':
if($agentversion >= 2240)
$result true;
break;
case '-BR':
if($agentversion >= 332)
$result true;
break;
case '-DE':
if($agentversion >= 570)
$result true;
break;
case '-HL':
if($agentversion >= 302)
$result true;
break;
default:
$result false;
}
return $result;
}

function 
auto_enter_cheater($userid$rate$upthis$diff$torrentid$client$ip$last_up)
{
mysql_query("INSERT INTO cheaters (added, userid, client, rate, beforeup, upthis, timediff, userip, torrentid) VALUES(" sqlesc(TIME_NOW) . ", " sqlesc($userid) . ", " sqlesc($client) . ", " sqlesc($rate) . ", " sqlesc($last_up) . ", " sqlesc($upthis) . ", " sqlesc($diff) . ", " sqlesc($ip) . ", " sqlesc($torrentid) . ")") or err("Cheater Err");
}

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)
{
    
//=== new portblacklisted ....... ==> direct connect 411 ot 413,  bittorrent 6881 to 6889, kazaa 1214, gnutella 6346 to 6347, emule 4662, winmx 6699, IRC bot based trojans 65535
    
$portblacklisted = array(4114124136881 ,68826883688468856886688768891214634663474662669965535);
        if (
in_array($port$portblacklisted)) return true;

    return 
false;
}
/////////////////////// FUNCTION DEFS END ///////////////////////////////
$parts = array();
if( !isset(
$_GET['passkey']) OR !preg_match('/^[0-9a-fA-F]{32}$/i'$_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";

if (!(
$db = @mysql_connect ($TBDEV['mysql_host'], $TBDEV['mysql_user'], $TBDEV['mysql_pass']) AND $select = @mysql_select_db($TBDEV['mysql_db'], $db)))
err('Please call back later');

$useragent substr($peer_id12);
$agentversion substr($peer_id34);
//===  make white list and ban others
if(($useragent == "UT" && $agentversion 1800) || ($useragent == "AZ" && $agentversion >= 3000 || $useragent == "AZ" && $agentversion 2500) || ($useragent == "UT" && $agentversion 2000) || ($useragent == "T" && $agentversion 0317) || ($useragent == "BC" && $agentversion 0070) || ($useragent == "BS" && $agentversion 0412) || ($useragent == "LH" && $agentversion 3200) || ($useragent == "QB" && $agentversion 1000) || ($useragent == "HL" && $agentversion 0290))
err("$agent is banned. Please read the FAQ for a list of allowed clients!");

$white_list = array("AZ""UT""TO""BC""BS""LH""QB""HL""T""03");
if (!
in_array($useragent$white_list))
err("$agent is banned. Please read the FAQ for a list of allowed clients!");

$user $mc1->get_value('u_passkey_'.$passkey);
if (
$user === false) {
$user_query mysql_query("SELECT id, uploaded, downloaded, class, downloadpos, parked, free_switch, highspeed, enabled FROM users WHERE passkey=".sqlesc($passkey)) or err("Tracker error 2");
if (
mysql_num_rows($user_query) != 1)
err("Unknown passkey. Please redownload the torrent from {$TBDEV['baseurl']}.");
$user mysql_fetch_assoc($user_query);
        
$user['id']         = (int)$user['id'];
        
$user['uploaded']   = (float)$user['uploaded'];
        
$user['downloaded'] = (float)$user['downloaded'];
        
$user['class']      = (int)$user['class'];
        
$user['downloadpos']      = (int)$user['downloadpos'];
        
$user['free_switch']  = (int)$user['free_switch'];
        
$mc1->cache_value('u_passkey_'.$passkey$user$TBDEV['expires']['user_passkey']);
}

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

$res mysql_query("SELECT torrents.id, torrents.banned, torrents.free, 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"];

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

$numpeers $torrent["numpeers"];
$limit "";
if (
$numpeers $rsize)
$limit "ORDER BY RAND() LIMIT $rsize";
// If user is a seeder, then only supply leechers.
// This helps with the zero upload cheat, as it doesn't supply anyone who has
// a full copy.
$wantseeds "";
if ( 
$seeder == 'yes' )
$wantseeds "AND seeder = 'no'";
$res mysql_query"SELECT $fields FROM peers WHERE torrent = $torrentid AND connectable = 'yes' $wantseeds $limit) or err'peers query failure' );
//////////////////// 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_NOW 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!");
}
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]");
  
//==sitepot
  
$Pot_query mysql_query("SELECT value_u FROM avps WHERE arg = 'sitepot'") or err("Sitepot Err");
  
$SitePot mysql_fetch_assoc($Pot_query);
  
///////////////////happyhour by putyn
  
$happy mysql_query"SELECT id, multiplier from happyhour where userid=" sqlesc$userid ) . " AND torrentid=" sqlesc$torrentid ) . " " );
  
$happyhour mysql_num_rows$happy ) == false true;
  
$happy_multi mysql_fetch_row$happy );
  
$multiplier $happy_multi["multiplier"];
  if ( 
$happyhour ) {
  
$upthis $upthis $multiplier;
  
$downthis 0;
  }

   
//==freeleech/doubleupload system by ezero - recoded block by putyn
   
$q mysql_query("SELECT * FROM events ORDER BY startTime DESC LIMIT 1") or err("Events Err");
 $a mysql_fetch_assoc($q);
 if($a["startTime"] < TIME_NOW && $a["endTime"] > TIME_NOW)
 {
 if($a['freeleechEnabled'] == 1)
 $downthis 0;
 if($a['duploadEnabled'] == 1){
 $upthis *=2;
 $downthis 0;
 }
 if($a['hdownEnabled'] == 1){
 $downthis $downthis 2;
 }
 }
   
   if (
$upthis || $downthis 0)
   {
   
$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;
   }
   }
   
   
$crazyhour crazyhour_announce();
   if (!(
$crazyhour || $user['free_switch'] != || $isfree || $torrent['free'] != || $SitePot['value_u'] >= 10000 || $torrent['vip'] != || ($torrent['freeslot'] != 0)))
   
$updq[0] = "downloaded = downloaded + $downthis";
   if (
$crazyhour// crazyhour
   
$updq[1]="uploaded = uploaded + ($upthis*3)";
   else
   
$updq[1] = "uploaded = uploaded + ".(($torrent['doubleslot'] != || $isdouble) ? ($upthis*2) : $upthis);
   
$udq=implode(',',$updq);
   
mysql_query("UPDATE users SET $udq WHERE id=".$user['id']) or err('Tracker error 3');
   }

      
//=== abnormal upload detection
if ($user['highspeed'] == 'no' && $upthis 103872)
{
      
//=== Work out difference
      
$diff = (TIME_NOW $self['ts']);
      
$rate = ($upthis / ($diff 1));
      
$last_up $user['uploaded'];
      
//=== about 1 MB/s
      
if ($rate 103872
      {
  auto_enter_cheater($user['id'], $rate$upthis$diff$torrentid$agent$ip$last_up );
      }
//=== end abnormal upload detection
      
}

///////////////////////////////////////////////////////////////////////////////
 
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);
}
}

 
$finished $finished1 '';
 
$updateset = array();
 
 if (isset(
$self) && $event == "stopped") {
 
mysql_query("DELETE FROM peers WHERE $selfwhere") or err("Delete Err");

 
//===09 sir_snuggles hit and run
 
$res_snatch mysql_query("SELECT seedtime, uploaded, downloaded, finished, start_date AS start_snatch FROM snatched WHERE torrentid = $torrentid AND userid = {$user['id']}") or err('Snatch Error 1');
 
$a mysql_fetch_array($res_snatch);
 
//=== only run the function if the ratio is below 1
 
if( ($a['uploaded'] + $upthis) < ($a['downloaded'] + $downthis) && $a['finished'] == 'yes')
 {
 
$HnR_time_seeded = ($a['seedtime'] + $self['announcetime']);
 
//=== get times per class
 
switch (true)
 { 
 
//=== user
 
case ($user['class'] < UC_POWER_USER):
 
$days_3 2*86400//== 2 days
 
$days_14 2*86400//== 2 days
 
$days_over_14 86400//== 1 day
 
break;
 
//=== poweruser
 
case ($user['class'] == UC_POWER_USER):
 
$days_3 129600//== 36 hours
 
$days_14 129600//== 36 hours
 
$days_over_14 64800//== 18 hours
 
break;
 
//=== vip / donor?
 
case ($user['class'] == UC_VIP):
 
$days_3 129600//== 36 hours
 
$days_14 86400//== 24 hours
 
$days_over_14 43200//== 12 hours
 
break;
 
//=== uploader / staff and above (we don't need this for uploaders now do we?
 
case ($user['class'] >= UC_UPLOADER):
 
$days_3 43200//== 12 hours
 
$days_14 43200//== 12 hours
 
$days_over_14 43200//== 12 hours
 
break;
 }

 switch(
true
 {
 case ((
$a['start_snatch'] - $torrent['ts']) < 7*86400):
 
$minus_ratio = ($days_3 $HnR_time_seeded);
 break;
 case ((
$a['start_snatch'] - $torrent['ts']) < 21*86400):
 
$minus_ratio = ($days_14 $HnR_time_seeded);
 break;
 case ((
$a['start_snatch'] - $torrent['ts']) >= 21*86400):
 
$minus_ratio = ($days_over_14 $HnR_time_seeded);
 break;
 }
 
$hit_and_run = (($minus_ratio && ($a['uploaded'] + $upthis) < ($a['downloaded'] + $downthis)) ? ", seeder='no', hit_and_run= '".TIME_NOW."'" ", hit_and_run = '0'");
 } 
//=== end if not 1:1 ratio
 
else
 
$hit_and_run ", hit_and_run = '0'";
 
//=== end hit and run
 
 
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_NOW.", seeder = '$seeder', agent = ".sqlesc($agent).$hit_and_run 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 ", finishedat = ".TIME_NOW."";
 
$finished1 ", complete_date = ".TIME_NOW.", finished = 'yes'";
 }

 
mysql_query("UPDATE peers SET ip = ".sqlesc($ip).", port = $port, connectable = '$connectable', uploaded = $uploaded, downloaded = $downloaded, to_go = $left, last_action = ".TIME_NOW.", 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_NOW.", seeder = '$seeder', agent = ".sqlesc($agent).$finished1$anntime WHERE torrentid = $torrentid AND userid = {$user['id']}") or err("SL Err 2");
 }
 } else {
 if (
$user["parked"] == "yes")
 
err("Your account is parked! (Read the FAQ)");
 elseif (
$user["downloadpos"] == OR $user["downloadpos"] > )
 
err("Your downloading priviledges have been disabled! (Read the rules)");

 
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_NOW.", ".TIME_NOW.", '$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_NOW.", seeder = '$seeder', agent = ".sqlesc($agent).", $anntime, hit_and_run = '0', mark_of_cain = 'no' 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_NOW.", ".TIME_NOW.", '$seeder', ".sqlesc($agent).")") or err("SL Err 4");
 }
 }

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

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

benc_resp_raw($resp);
?>


bittorrent.php

<?php
/**
 *   http://btdev.net:1337/svn/test/Installer09_Beta
 *   Licence Info: GPL
 *   Copyright (C) 2010 BTDev Installer v.1
 *   A bittorrent tracker source based on TBDev.net/tbsource/bytemonsoon.
 *   Project Leaders: Mindless,putyn.
 **/
//==Start execution time
$q['start'] = microtime(true);
//==End
require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'config.php');
require_once(
CACHE_DIR.'free_cache.php');
require_once(
INCL_DIR.'function_happyhour.php');
//==Start memcache
require_once(INCL_DIR.'class_cache.php');
$mc1 = NEW CACHE();
/**** 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','0.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;
}

// 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_set_charset('utf8');
    
userlogin();
    if (
$autoclean)
        
register_shutdown_function("autoclean");
}

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

function 
hashit($var,$addtext="")
{
return 
md5("Th15T3xt".$addtext.$var.$addtext."is5add3dto66uddy6he@water...");
}

function 
userlogin() {
    global 
$TBDEV$mc1;
    unset(
$GLOBALS["CURUSER"]);
    
$dt time();
    
$ip getip();
  $nip ip2long($ip);
    if (isset(
$CURUSER)) 
    return;
    require_once(
INCL_DIR.'user_functions.php');
    require_once(
CACHE_DIR.'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')|| !get_mycookie('hashv') )
       return;
    
$id get_mycookie('uid');
    if (!
$id OR (strlenget_mycookie('pass') ) != 32) OR (get_mycookie('hashv') != hashit($id,get_mycookie('pass'))))
       return;
   
// ==Retro's Announcement mod
   
$prefix '09skan';
   
/** let's cache $CURUSER **/
   
$row $mc1->get_value('MyUser_'.$id);
   if (
$row === false) { // $row not found
   
$res sql_query("SELECT ".$prefix.".*, ann_main.subject AS curr_ann_subject, ann_main.body AS curr_ann_body, s.last_status, s.last_update, s.archive FROM users AS ".$prefix." LEFT JOIN announcement_main AS ann_main " "ON ann_main.main_id = ".$prefix.".curr_ann_id LEFT JOIN ustatus as s ON s.userid = ".$prefix.".id WHERE ".$prefix.".id = $id AND ".$prefix.".enabled='yes' AND ".$prefix.".status = 'confirmed'") or sqlerr(__FILE____LINE__); 
   if(
mysql_num_rows($res) == 0) {
       
logoutcookie();
       return;
   }
   
$row mysql_fetch_assoc($res);
   
//== Do all ints and floats
        
$row['id'] = (int)$row['id'];
        
$row['added'] = (int)$row['added'];
        
$row['last_login'] = (int)$row['last_login'];
        
$row['last_access'] = (int)$row['last_access'];
        
$row['curr_ann_last_check'] = (int)$row['curr_ann_last_check'];
        
$row['curr_ann_id'] = (int)$row['curr_ann_id'];
        
$row['stylesheet'] = (int)$row['stylesheet'];
        
$row['class'] = (int)$row['class'];
        
$row['override_class']  = (int)$row['override_class'];
        
$row['av_w'] = (int)$row['av_w'];
        
$row['av_h'] = (int)$row['av_h'];
        
$row['uploaded'] = (float)$row['uploaded'];
        
$row['downloaded'] = (float)$row['downloaded'];
        
$row['country'] = (int)$row['country'];
        
$row['warned'] = (int)$row['warned'];
        
$row['torrentsperpage'] = (int)$row['torrentsperpage'];
        
$row['topicsperpage'] = (int)$row['topicsperpage'];
        
$row['postsperpage'] = (int)$row['postsperpage'];
        
$row['reputation'] = (int)$row['reputation'];
        
$row['time_offset'] = (float)$row['time_offset'];
        
$row['dst_in_use'] = (int)$row['dst_in_use'];
        
$row['auto_correct_dst'] = (int)$row['auto_correct_dst'];
        
$row['chatpost'] = (int)$row['chatpost'];
        
$row['smile_until'] = (int)$row['smile_until'];
        
$row['seedbonus'] = (float)$row['seedbonus'];
        
$row['vip_until'] = (int)$row['vip_until'];
        
$row['freeslots'] = (int)$row['freeslots'];
        
$row['free_switch'] = (int)$row['free_switch'];
        
$row['invites'] = (int)$row['invites'];
        
$row['invitedby'] = (int)$row['invitedby'];
        
$row['anonymous'] = $row['anonymous'];
        
$row['uploadpos'] = (int)$row['uploadpos'];
        
$row['forumpost'] = (int)$row['forumpost'];
        
$row['downloadpos'] = (int)$row['downloadpos'];
        
$row['immunity'] = (int)$row['immunity'];
        
$row['leechwarn'] = (int)$row['leechwarn'];
        
$row['last_browse'] = (int)$row['last_browse'];
        
$row['sig_w'] = (int)$row['sig_w'];
        
$row['sig_h'] = (int)$row['sig_h'];
        
$row['forum_access'] = (int)$row['forum_access'];
        
$row['mood'] = (int)$row['mood'];
        
$row['hit_and_run_total'] = (int)$row['hit_and_run_total'];
        
$row['donoruntil'] = (int)$row['donoruntil'];
        
$row['donated'] = (int)$row['donated'];
        
$row['total_donated'] = (float)$row['total_donated'];
        
$row['vipclass_before'] = (int)$row['vipclass_before'];
        
$row['passhint'] = (int)$row['passhint'];
        
$row['avatarpos'] = (int)$row['avatarpos'];
        
$row['sendpmpos'] = (int)$row['sendpmpos'];
        
$row['invitedate'] = (int)$row['invitedate'];
        
$row['anonymous_until'] = (int)$row['anonymous_until'];
        
$row['pirate'] = (int)$row['pirate'];
        
$row['king'] = (int)$row['king'];
        
$row['ssluse'] = (int)$row['ssluse'];     
        
$row['paranoia'] = (int)$row['paranoia'];
        
$row['parked_until'] = (int)$row['parked_until'];
        
$row['bjwins'] = (int)$row['bjwins'];
        
$row['bjlosses'] = (int)$row['bjlosses'];
        
$ratio = ($row['downloaded'] > $row['uploaded'] / $row['downloaded'] : 0);
        
$row['ratio'] = number_format($ratio2);
        
$row['rep'] = get_reputation($row);
        
$mc1->cache_value('MyUser_'.$id$row$TBDEV['expires']['curuser']); // set $Cache
        
unset($res);
        }
 
        if (
get_mycookie('pass') !== md5($row["passhash"].$_SERVER["REMOTE_ADDR"]))
        return; 
        
        
//==Allowed staff
        
if ($row["class"]>=UC_STAFF){
      $allowed_ID =  $TBDEV['allowed_staff']['id'];
      if (!in_array(((int)$row["id"]),$allowed_ID,true)){
      $msg "Fake Account Detected: Username: ".$row["username"]." - UserID: ".$row["id"]." - UserIP : ".getip();
      /** Demote and disable **/
        
sql_query("UPDATE users SET enabled = 'no', class = 0 WHERE id =".sqlesc($row["id"])."") or sqlerr(__file____line__);
      write_log($msg);
      autoshout($msg);
      logoutcookie();
      }
        }
  
 // If curr_ann_id > 0 but curr_ann_body IS NULL, then force a refresh
 if (($row['curr_ann_id'] > 0) AND ($row['curr_ann_body'] == NULL)) {
 $row['curr_ann_id'] = 0;
 $row['curr_ann_last_check'] '0';
 }
// If elapsed > 10 minutes, force a announcement refresh.
if (($row['curr_ann_last_check'] != '0') AND
($row['curr_ann_last_check']) < (time($dt) - 600))
$row['curr_ann_last_check'] = '0';

 
 if (($row['curr_ann_id'] == 0) AND ($row['curr_ann_last_check'] == '0'))
 
 { // Force an immediate check...
 
 $query sprintf('SELECT m.*,p.process_id FROM announcement_main AS m '.
 
 'LEFT JOIN announcement_process AS p ON m.main_id = p.main_id '.
 
 'AND p.user_id = %s '.
 
 'WHERE p.process_id IS NULL '.
 
 'OR p.status = 0 '.
 
 'ORDER BY m.main_id ASC '.
 
 'LIMIT 1',
 
sqlesc($row['id']));

 
$result sql_query($query);

 
if (mysql_num_rows($result))
 
// Main Result set exists
 
$ann_row mysql_fetch_assoc($result);

 
$query $ann_row['sql_query'];

 
// Ensure it only selects...
 
if (!preg_match('/\\ASELECT.+?FROM.+?WHERE.+?\\z/'$query)) die();

 
// The following line modifies the query to only return the current user
 
// row if the existing query matches any attributes.
 
$query .= ' AND u.id = '.sqlesc($row['id']).' LIMIT 1';

 
$result sql_query($query);

 
if (mysql_num_rows($result))
 
// Announcement valid for member
 
$row['curr_ann_id'] = $ann_row['main_id'];

 
// Create two row elements to hold announcement subject and body.
 
$row['curr_ann_subject'] = $ann_row['subject'];
 
$row['curr_ann_body'] = $ann_row['body'];

 
// Create additional set for main UPDATE query.
 
$add_set ', curr_ann_id = '.sqlesc($ann_row['main_id']);
 
$status 2;
 
}
 
else
 
{
 
// Announcement not valid for member...
 
$add_set ', curr_ann_last_check = '.sqlesc($dt);
 
$status 1;
 
}

 
// Create or set status of process
 
if ($ann_row['process_id'] === NULL)
 
{
 
// Insert Process result set status = 1 (Ignore)
 
$query sprintf('INSERT INTO announcement_process (main_id, '.
 
'user_id, status) VALUES (%s, %s, %s)',
 
sqlesc($ann_row['main_id']),
 
sqlesc($row['id']),
 
sqlesc($status));
 
}
 
else
 
{
 
// Update Process result set status = 2 (Read)
 
$query sprintf('UPDATE announcement_process SET status = %s '.
 
'WHERE process_id = %s',
 
sqlesc($status),
 
sqlesc($ann_row['process_id']));
 
}
 
sql_query($query);
 
}
 
else
 
{
  
// No Main Result Set. Set last update to now...
 
$add_set ', curr_ann_last_check = '.sqlesc($dt);
 
}
 
unset($result);
 
unset($ann_row);
 
}

    
//$ip = ($row['class'] >= UC_UPLOADER ? '127.0.0.1' : $ip);  //==Null Staff ips
    
$add_set = (isset($add_set))?$add_set:'';
    
//==pdq update
    
if ($row['ip'] !== $ip) {
    
sql_query("UPDATE users SET last_access=".TIME_NOW.", ip=".sqlesc($ip).$add_set." WHERE id=".$row['id']);// or die(mysql_error());
    
sql_query('INSERT INTO iplog (ip, userid, access) VALUES (' ip2long($ip) . ', ' .$row['id']. ', \'' $row['last_access'] . '\') on DUPLICATE KEY update access=values(access)');
    
$mc1->delete_value('MyUser_'.$row['id']);
    }
    elseif ((
$row['last_access'] != '0') AND (($row['last_access']) < (time($dt) - 180))/** 3 mins **/) {
    
sql_query("UPDATE users SET last_access=".TIME_NOW.", ip=".sqlesc($ip).$add_set." WHERE id=".$row['id']);// or die(mysql_error());
    
$mc1->delete_value('MyUser_'.$row['id']);
    }
    
//==
    
if ($row['override_class'] < $row['class']) $row['class'] = $row['override_class']; // Override class and save in GLOBAL array below.
    
$GLOBALS["CURUSER"] = $row;
    
get_template();
    }

  function 
autoclean()
  {
global $TBDEV;
/* Better cleanup function with db-optimization and slow clean by x0r @ tbdev.net */
$w00p sql_query("SELECT arg, value_u FROM avps") or sqlerr(__FILE____LINE__);
while ($row mysql_fetch_assoc($w00p))
{
if ($row['arg'] == "lastcleantime" && ($row['value_u'] + $TBDEV['autoclean_interval']) < TIME_NOW)
{
sql_query("UPDATE avps SET value_u = ".TIME_NOW." WHERE arg = 'lastcleantime'") or sqlerr(__FILE____LINE__);
  require_once(
INCL_DIR.'cleanup.php');
  
docleanup();
  }
else if ($row['arg'] == "lastslowcleantime" && ($row['value_u'] + $TBDEV['autoslowclean_interval']) < TIME_NOW)
{
sql_query("UPDATE avps SET value_u = ".TIME_NOW." WHERE arg = 'lastslowcleantime'") or sqlerr(__FILE____LINE__);
require_once(INCL_DIR.'cleanup.php');
doslowcleanup();
}
else if ($row['arg'] == "lastslowcleantime2" && ($row['value_u'] + $TBDEV['autoslowclean_interval2']) < TIME_NOW)
{
sql_query("UPDATE avps SET value_u = ".TIME_NOW." WHERE arg = 'lastslowcleantime2'") or sqlerr(__FILE____LINE__);
require_once(INCL_DIR.'cleanup.php');
doslowcleanup2();
}
else if ($row['arg'] == "lastlottocleantime" && ($row['value_u'] + $TBDEV['lotteryclean_interval']) < TIME_NOW)
{
sql_query("UPDATE avps SET value_u = ".TIME_NOW." WHERE arg = 'lastlottocleantime'") or sqlerr(__FILE____LINE__);
require_once(INCL_DIR.'cleanup.php');
dolotterycleanup();
}
else if ($row['arg'] == "lastoptimizedbtime" && ($row['value_u'] + $TBDEV['optimizedb_interval']) < TIME_NOW)
{
sql_query("UPDATE avps SET value_u = ".TIME_NOW." WHERE arg = 'lastoptimizedbtime'") or sqlerr(__FILE____LINE__);
require_once(INCL_DIR.'cleanup.php');
dooptimizedb();
}
else if ($row['arg'] == "lastbackuptime" && ($row['value_u'] + $TBDEV['autobackup_interval']) < TIME_NOW)
{
sql_query("UPDATE avps SET value_u = ".TIME_NOW." WHERE arg = 'lastbackuptime'") or sqlerr(__FILE____LINE__);
require_once(INCL_DIR.'cleanup.php');
dobackupdb();
}
}
mysql_free_result($w00p);
return;
  }

  function 
get_template(){
global $CURUSER$TBDEV;
if(isset($CURUSER)){
if(file_exists(TEMPLATE_DIR."{$CURUSER['stylesheet']}/template.php")){
require_once(TEMPLATE_DIR."{$CURUSER['stylesheet']}/template.php");
}else{
if(isset($TBDEV)){
if(file_exists(TEMPLATE_DIR."{$TBDEV['stylesheet']}/template.php")){
require_once(TEMPLATE_DIR."{$TBDEV['stylesheet']}/template.php");
}else{
print("Sorry, Templates do not seem to be working properly and missing some code. Please report this to the programmers/owners.");
}
}else{
if(file_exists(TEMPLATE_DIR."1/template.php")){
require_once(TEMPLATE_DIR"1/template.php");
}else{
print("Sorry, Templates do not seem to be working properly and missing some code. Please report this to the programmers/owners.");
}
}
}
}else{
if(file_exists(TEMPLATE_DIR."{$TBDEV['stylesheet']}/template.php")){
require_once(TEMPLATE_DIR."{$TBDEV['stylesheet']}/template.php");
}else{
print("Sorry, Templates do not seem to be working properly and missing some code. Please report this to the programmers/owners.");
}
}
if(!function_exists("stdhead")){
print("stdhead function missing");
function stdhead($title=""$message=true){
return "<html><head><title>$title</title></head><body>";
}
}
if(!function_exists("stdfoot")){
print("stdfoot function missing");
function stdfoot(){
return "</body></html>";
}
}
if(!function_exists("stdmsg")){
print("stdmgs function missing");
function stdmsg($title$message){
return "<b>".$title."</b><br />$message";
}
}
if(!function_exists("StatusBar")){
print("StatusBar function missing");
function StatusBar(){
global $CURUSER$lang;
return "{$lang['gl_msg_welcome']}$CURUSER[username]";
}
}
}

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 
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"]);
        return 
sprintf("%d:%02d"$t["min"], $t["sec"]);
}

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 
httperr($code 404) {
    
header("HTTP/1.0 404 Not found");
    print(
"<h1>Not Found</h1>\n");
    print(
"<p>Sorry pal :(</p>\n");
    exit();
}

function 
logincookie($id$passhash$updatedb 1$expires 0x7fffffff)
{
    
set_mycookie"uid"$id$expires );
    
set_mycookie"pass"$passhash$expires );
    
set_mycookie"hashv"hashit($id,$passhash), $expires );
    if (
$updatedb)
      @
sql_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() {
    
set_mycookie('uid''-1');
    
set_mycookie('pass''-1');
    
set_mycookie('hashv''-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() {
   global 
$mc1$TBDEV;
    if ((
$ret $mc1->get_value('genrelist')) == false) {
        
$ret = array();
        
$res sql_query("SELECT id, image, name FROM categories ORDER BY name");
        while (
$row mysql_fetch_assoc($res))
        
$ret[] = $row;
        
$mc1->cache_value('genrelist'$ret$TBDEV['expires']['genrelist']);
    }
    return 
$ret;  
}

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


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();
}

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

function 
write_log($text)
{
  
$text sqlesc($text);
  
$added TIME_NOW;
  
sql_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 
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']) );
        }
}


    
/*Strip magic*/
function strip_magic_quotes($arr)
{
foreach (
$arr as $k => $v)
{
if (
is_array($v))
$arr[$k] = strip_magic_quotes($v); }
else
$arr[$k] = stripslashes($v); }
}
return 
$arr;
}
if (
get_magic_quotes_gpc())
{
if (!empty(
$_GET)) { $_GET strip_magic_quotes($_GET); }
if (!empty(
$_POST)) { $_POST strip_magic_quotes($_POST); }
if (!empty(
$_COOKIE)) { $_COOKIE strip_magic_quotes($_COOKIE); }
}
/*End*/

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

//=== shorten text by Laffin
function CutName ($txt$len){
$len 30;
return (
strlen($txt)>$len substr($txt,0,$len-4) .'...':$txt);
}

    function 
load_language($file='') {
    global 
$TBDEV;
    if( !isset(
$GLOBALS['CURUSER']) OR empty($GLOBALS['CURUSER']['language']) )
    {
    if( !
file_exists(LANG_DIR."lang_{$file}.php") )
    {
    
stderr('SYSTEM ERROR''Can\'t find language files');
    }   
    require_once(
LANG_DIR."lang_{$file}.php");
    return 
$lang;
    }
    if( !
file_exists(LANG_DIR."lang_{$file}.php") )
    {
    
stderr('SYSTEM ERROR''Can\'t find language files');
    }
    else
    {
    require_once 
LANG_DIR."lang_{$file}.php"
    }   
    return 
$lang;
}

function 
flood_limit($table) {
global 
$CURUSER,$TBDEV,$lang;
if(!file_exists($TBDEV['flood_file']) || !is_array($max unserialize(file_get_contents($TBDEV['flood_file']))))
return;
if(!isset($max[$CURUSER['class']]))
return;
$tb = array('posts'=>'posts.userid','comments'=>'comments.user','messages'=>'messages.sender');
$q sql_query('SELECT min('.$table.'.added) as first_post, count('.$table.'.id) as how_many FROM '.$table.' WHERE '.$tb[$table].' = '.$CURUSER['id'].' AND '.time().' - '.$table.'.added < '.$TBDEV['flood_time']);
$a mysql_fetch_assoc($q);
if($a['how_many'] > $max[$CURUSER['class']])
  
stderr($lang['gl_sorry'] ,$lang['gl_flood_msg'].''.mkprettytime($TBDEV['flood_time'] - (time() - $a['first_post'])));
}

//==Sql query count
$q['query_stat'] = 0;
$q['querytime'] = 0;
function 
sql_query($query) {
    global 
$queries$q$querytime$query_stat;
  $q = isset($q) && is_array($q) ? $q : array();
  $q['query_stat']= isset($q['query_stat']) && is_array($q['query_stat']) ? $q['query_stat'] : array();
    
$queries++;
    
$query_start_time  microtime(true); // Start time
    
$result            mysql_query($query);
    
$query_end_time    microtime(true); // End time
    
$query_time        = ($query_end_time $query_start_time);
    
$querytime $querytime $query_time;
    
$q['querytime']    = (isset($q['querytime']) ? $q['querytime'] : 0) + $query_time;
    
$query_time        substr($query_time08);
    
$q['query_stat'][] = array('seconds' => $query_time'query' => $query);
    return 
$result;
    }

    if (
file_exists("install/index.php")){
    
$HTMLOUT='';
    
$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>
    <title>Warning</title>
    </head>
    <body><div style='font-size:33px;color:white;background-color:red;text-align:center;'>Delete the install directory</div></body></html>"
;
    print 
$HTMLOUT;
    exit();
    }
?>
Dacă vrei să duci o viaţă fericită, ancoreaz-o de un scop, nu de oameni sau de obiecte.