Bravo List
Register
Go Back   > Bravo List > Source Code > Archived Trackers > Free Torrent Source
Reply
  #1  
Old 29th October 2013, 08:23
unomas unomas is offline
Member
 
Join Date: Jun 2009
P2P
Posts: 5
Default problem announce.php
upgrade server and php 5.3, announce.php is bad error urgently help

PHP Code:
<?php
include ('include/bittorrent_announce.php');
require_once (
'include/benc.php');
function 
err$msg )
{
    
benc_resp( array('failure reason' => array(type => 'string'value => $msg)) ) ;
    exit() ;
}
function 
benc_resp$d )
{
    
benc_resp_rawbenc(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 ;
}
foreach (array(
"passkey""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];
}

if (
strpos($passkey"?")) {
    
$tmp substr($passkeystrpos($passkey"?"));
    
$passkey substr($passkey0strpos($passkey"?"));
    
$tmpname substr($tmp1strpos($tmp"=") - 1);
    
$tmpvalue substr($tmpstrpos($tmp"=") + 1);
    
$GLOBALS[$tmpname] = $tmpvalue;

}

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]) != 20)
        
err("Invalido $x (" strlen($GLOBALS[$x]) . " - " urlencode($GLOBALS[$x]) .
            
")");
if (
strlen($passkey) != 32)
    
err("Invalido passkey (" strlen($passkey) . " - $passkey)");
$ip ip::getip();
$rsize 50;

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

// BLOCK ACCESS WITH WEB BROWSERS AND CHEATS!

$agent $_SERVER["HTTP_USER_AGENT"];
if (
ereg("^Mozilla\/"$agent) || ereg("^Opera\/"$agent) || ereg("^Links "$agent) ||
    
ereg("^Lynx\/"$agent))
    
err("torrent no registrados en el tracker");

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

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

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

$valid = @mysql_query("SELECT COUNT(*) FROM users WHERE passkey=" sqlesc($passkey)) or
    
err(mysql_error());
$valid = @mysql_fetch_row($valid);

if (
$valid[0] != 1)
    
err("Invalido passkey! Vuelva a descargar el archivo Torrent de $BASEURL");

$res mysql_query("SELECT id, name, category, banned, free, silver, doubleupload, seeders + leechers AS numpeers, UNIX_TIMESTAMP(added) AS ts FROM torrents WHERE " .
    
hash_where("info_hash"$info_hash));

$torrent mysql_fetch_assoc($res);

if (!
$torrent)
    
err("torrent no registrados en el tracker");

$torrentid $torrent["id"];
$torrentname $torrent["name"];
$torrentcategory $torrent["category"];
$fields "seeder, peer_id, ip, port, uploaded, downloaded, userid, last_action,  UNIX_TIMESTAMP(NOW()) AS nowts, UNIX_TIMESTAMP(prev_action) AS prevts, (UNIX_TIMESTAMP() - UNIX_TIMESTAMP(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");
    global 
$announce_interval;
    
$resp "d" benc_str("interval") . "i" $announce_interval "e" benc_str("peers") . "l";
unset(
$self);
while (
$row mysql_fetch_assoc($res)) {
    
$row["peer_id"] = hash_pad($row["peer_id"]);

    if (
$row["peer_id"] === $peer_id) {
        
$userid $row["userid"];
        
$self $row;
        continue;
    }
    
$a = @mysql_query("SELECT class FROM users WHERE id = '$userid'");
    
$a = @mysql_fetch_assoc($a);
    
$b = @mysql_query("SELECT hasfreeleech FROM usergroups WHERE id = $a[class]");
    
$b = @mysql_fetch_assoc($b);
    
$hasfreeleech $b['hasfreeleech'];
    
$userclass $a['class'];


    
$resp .= "d" benc_str("ip") . benc_str($row["ip"]) . benc_str("peer id") .
        
benc_str($row["peer_id"]) . benc_str("port") . "i" $row["port"] . "e" "e";
}

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

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

///////////// Comentado para que funcione  con php-CGI ////////////////////////////////
/*
if (function_exists('getallheaders'))
    $headers = getallheaders();
else
    $headers = emu_getallheaders();
*/
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (isset($headers["Cookie"]) || isset($headers["Accept-Language"]) || isset($headers["Accept-Charset"]))
    
err("Anti-Cheater=     Usted no puede utilizar este agente");


$announce_wait 900;
if (isset(
$self) && ($self['prevts'] > ($self['nowts'] - $announce_wait)))
    
err('Existe un mínimo de tiempo para anunciar al tracker y es 15 minutos');

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("Límite de conexiones se ha superado Para Este torrent! Usted no puede descargar por un tiempo prudente.");
    if (
$valid[0] >= && $seeder == 'yes')
        
err("Límite de conexiones se ha superado!");

    
$rz mysql_query("SELECT id, uploaded, downloaded, class, parked FROM users WHERE passkey=" .
        
sqlesc($passkey) . " AND enabled = 'yes' ORDER BY last_access DESC LIMIT 1") or
        
err("Tracker error 2");
    if (
$MEMBERSONLY == "yes" && mysql_num_rows($rz) == 0)
        
err("Passkey Desconocido. Vuelva a descargar el archivo Torrent de $BASEURL. a");

    
$az mysql_fetch_assoc($rz);
    
$userid $az["id"];

    if (
$az["class"] == UC_VIP) {
    
mysql_query("UPDATE snatched SET  statusvip  = 'yes' WHERE torrent = '$torrentid' AND finished = 'yes' AND userid = '$userid' AND  statusvip ='no'") or err("Tracker error status vip"); 
    }

    if (
$az["class"] == UC_USER) {
        if (
$waitsystem == "yes") {
            
$gigs $az["uploaded"] / (1024 1024 1024);
            
$elapsed floor((gmtime() - $torrent["ts"]) / 3600);
            
$ratio = (($az["downloaded"] > 0) ? ($az["uploaded"] / $az["downloaded"]) : 1);
            if (
$ratio 0.5 || $gigs 5)
                
$wait 24;
            elseif (
$ratio 0.65 || $gigs 6.5)
                
$wait 12;
            elseif (
$ratio 0.8 || $gigs 8)
                
$wait 6;
            elseif (
$ratio 0.95 || $gigs 9.5)
                
$wait 1;
            else
                
$wait 0;
            if (
$elapsed $wait)
                
err("No Estas autorizado debes Esperar (" . ($wait $elapsed) . "h) - LEE EL FAQ!");
        }
  if (
$az["class"] < UC_VIP)
         {
        if (
$maxdlsystem == "yes") {
            if (
$az["class"] == UC_NEWUSER)
                
$max 2;
             elseif (
$az["class"] == UC_USER)
                
$max 2;
            elseif (
$az["class"] == UC_POWER_USER)
                
$max 4;
            elseif (
$az["class"] == UC_ELITE_USER)
                
$max 8;
            elseif (
$az["class"] == UC_LOVER)
                
$max 16;
            elseif (
$az["class"] == UC_ADICTO)
                
$max 32;
            else
                
$max 0;
            if (
$max 0) {
                
$res mysql_query("SELECT COUNT(*) AS num FROM peers WHERE userid='$userid' AND seeder='no'") or
                    
err("Tracker error 5");
                
$row mysql_fetch_assoc($res);
                if (
$row['num'] >= $max)
                    
err("No Estas autorizado (Estás descargando el número máximo de torrents permitidos - $max)");
            }
        }
       }
    }
} else {
////////////////////////////DENEGACION SEEDBOX POR 3////////////////////////////////
$sqlc mysql_query("SELECT snatched.torrent, snatched.userid as userid, snatched.uploaded as uploaded, snatched.downloaded as downloaded, snatched.finished as finished, torrents.owner as owner, users.class as class FROM snatched LEFT JOIN users ON snatched.userid = users.id LEFT JOIN torrents ON torrents.id = snatched.torrentid WHERE torrent = $torrentid AND userid = $userid");
$upseed mysql_fetch_array($sqlc);
$cuota '1073741824';
$dwseed $upseed['downloaded'] * 2;

if (
$upseed['downloaded'] >= $cuota and $upseed['owner'] != $userid and $upseed['finished'] = yes)
    if (
$upseed['uploaded'] >=  $dwseed and $upseed['class'] < UC_VIP and $upseed['finished'] = yes)
        
err("Tienes Seedbox o Serv. Dedicado, No Puedes Subir Más de 2 Veces la Cantidad de Gigas Descargados. Por Favor Valla a $BASEURL/rules.php Para obtener mas Informacion");
    
if (
$upseed["class"] == UC_VIP) {
    
mysql_query("UPDATE snatched SET  statusvip  = 'yes' WHERE torrent = '$torrentid' AND finished = 'yes' AND userid = '$userid' AND  statusvip ='no'") or err("Tracker error status vip"); 
    }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

    
$upthis max(0$uploaded $self["uploaded"]);
    
$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 (
$hasfreeleech == 'no')
        
$downthis max(0$downloaded $self["downloaded"]);
    else
        
$downthis 0;

    if (
$torrent['free'] == 'yes')
        
$downthis 0;

    if (
$torrent['doubleupload'] == 'yes')
        
$upthis *= 2;

    if(
$torrent['silver']=='yes')
        
$downthis $downthis/2;
      
    if (
$upthis || $downthis 0)
        
mysql_query("UPDATE users SET uploaded = uploaded + $upthis, downloaded = downloaded + $downthis WHERE id=$userid") or
            
err("Tracker error 3");
}

$uagent $_SERVER['HTTP_USER_AGENT'];
$bua mysql_query("SELECT agent FROM banned_agent") or err('Tracker error (1)');
while (
$nea mysql_fetch_array($bua)) {
    
$n $nea['agent'];
    
$nr preg_replace("/\//""\/"$n);
    
$neadle "/\b$nr\b/i";
    if (
preg_match($neadle$uagent))
        
err("Cliente Prohibido o Baneado, Por Favor Actualize a la Ultima Version y valla a $BASEURL/rules.php  Para Obtener La Lista de Clientes Permitidos");
}
if (
ereg("^BitTorrent\/S-"$agent))
    
err("Shadow's Experimental Cliente Prohibido. Por favor use uTorrent.");
if (
ereg("^ABC\/ABC"$agent))
    
err("ABC Cliente Prohibido. Por favor use uTorrent.");
if (
ereg("^Python-urllib\/2.4"$agent))
    
err("Cliente Prohibido. Por favor use uTorrent.");

#getoutofmysite($peer_id);
$dt gmtime() - 180;
$dt sqlesc(get_date_time($dt));

$updateset = array();

if (
$event == "stopped") {
    if (isset(
$self)) {
        
mysql_query("UPDATE snatched SET ip = ".sqlesc($ip).", port = $port, uploaded = uploaded + $upthis, downloaded = downloaded + $downthis, to_go = $left, upspeed = $upspeed, downspeed = $downspeed$announcetime, last_action = '".get_date_time()."', seeder = 'no', connectable='no'', agent = ".sqlesc($agent)." WHERE torrentid = $torrentid AND userid = $userid") or err("SL Err 1");

        
mysql_query("DELETE FROM peers WHERE $selfwhere");
        if (
mysql_affected_rows()) {
            if (
$self["seeder"] == "yes")
                
$updateset[] = "seeders = seeders - 1";
            else
                
$updateset[] = "leechers = leechers - 1";
        }
    }
} else {
    if (
$event == "completed") {
        
mysql_query("UPDATE torrent_hit SET  completed  = 'yes' WHERE id = $torrentid AND uid = $userid");
        
mysql_query("UPDATE snatched SET  finished  = 'yes', completedat = $dt WHERE torrent = $torrentid AND userid = $userid");
        
$updateset[] = "times_completed = times_completed + 1";

    }

    if (isset(
$self)) {
        
$res mysql_query("SELECT uploaded, downloaded FROM snatched WHERE torrent = $torrentid AND userid = $userid");
        
$row mysql_fetch_array($res);
        
$sockres = @pfsockopen($ip$port$errno$errstr5);
        if (!
$sockres)
            
$connectable "yes";
        else {
            
$connectable "yes";
            @
fclose($sockres);
        }
        
$downloaded2 $downloaded $self["downloaded"];
        
$uploaded2 $uploaded $self["uploaded"];
        
mysql_query("UPDATE snatched SET ip = ".sqlesc($ip).", uploaded = uploaded+$uploaded2, downloaded = downloaded+$downloaded2, port = $port, connectable = '$connectable', agent= " sqlesc($agent) . ", to_go = $left, upspeed = $upspeed, downspeed = $downspeed$announcetime, last_action = $dt, seeder = '$seeder' WHERE torrent = $torrentid AND userid = $userid");
        
$prev_action sqlesc($self['last_action']);

       
mysql_query("UPDATE peers SET ip = ".sqlesc($ip).", port = $port, connectable = '$connectable', uploaded = $uploaded, downloaded = $downloaded, to_go = $left, last_action = NOW(), prev_action = $prev_action, seeder = '$seeder'" .
            (
$seeder == "yes" && $self["seeder"] != $seeder ", agent = ".sqlesc($agent).", finishedat = " time() :"") . " WHERE $selfwhere");
        if (
mysql_affected_rows() && $self["seeder"] != $seeder) {
            if (
$seeder == "yes") {
                
$updateset[] = "seeders = seeders + 1";
                
$updateset[] = "leechers = leechers - 1";
            } else {
                
$updateset[] = "seeders = seeders - 1";
                
$updateset[] = "leechers = leechers + 1";
            }
        }
    } else {
        if (
$az["parked"] == "yes")
            
err("Error, su cuenta está parked!");

      
#  if (portblacklisted($port))
       #     err("Port $port está en la lista negra.");
        
else {
            
$sockres = @pfsockopen($ip$port$errno$errstr5);
            if (!
$sockres) {
                
$connectable "yes";
                if (
$nc == "yes")
                    
err("ERROR - Su cliente no se puede conectar! Verifique su configuración - puerto o consulte a un administartor o buscar en los foros.");
            } else {
                
$connectable "yes";
                @
fclose($sockres);
            }
        }

        
$res mysql_query("SELECT torrent, userid FROM snatched WHERE torrent = $torrentid AND userid = $userid");
        
$check mysql_fetch_assoc($res);
        if (!
$check)
            
mysql_query("INSERT INTO snatched (torrent, torrentid, userid, peer_id, ip, port, uploaded, downloaded, to_go, startdat, last_action, seeder, agent, torrent_name, torrent_category) VALUES ($torrentid$torrentid$userid, ".sqlesc($peer_id).", ".sqlesc($ip).", $port$uploaded$downloaded$left$dt$dt, '$seeder', " sqlesc($agent) . ", " sqlesc($torrentname) . ", $torrentcategory)");
                   
        
$ret mysql_query("INSERT INTO peers (connectable, torrent, peer_id, ip, port, uploaded, downloaded, to_go, started, last_action, seeder, userid, agent, uploadoffset, downloadoffset, passkey) VALUES ('$connectable', $torrentid, " .
            
sqlesc($peer_id) . ", " sqlesc($ip) . ", $port$uploaded$downloaded$left, NOW(), NOW(), '$seeder', $userid, " sqlesc($agent) . ", $uploaded$downloaded, " sqlesc($passkey) . ")");
        if (
$ret) {
            if (
$seeder == "yes")
                
$updateset[] = "seeders = seeders + 1";
            else
                
$updateset[] = "leechers = leechers + 1";
        }
    }
}

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

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

$select_client mysql_query("SELECT * FROM clientselect WHERE name='" $agent .
    
"'");
if (
mysql_num_rows($select_client) == 0) {
    
$insert = @mysql_query("INSERT INTO clientselect (name) VALUES ('" $agent .
        
"')");
    
$client_id mysql_insert_id();
} else {
    
$client_row = @mysql_fetch_array($select_client);
    
$client_id $client_row['id'];
}

$agent_user_add = @mysql_query("UPDATE users SET clientselect='" $client_id .
    
"' where id='" $userid "'");
benc_resp_raw($resp);


if(!
function_exists("getallheaders")) {
    function 
emu_getallheaders() {
   foreach(
$_SERVER as $name => $value)
       if(
substr($name05) == 'HTTP_')
           
$headers[substr($name5)] = $value;
   return 
$headers;
}
}
?>
Reply With Quote
Reply

Tags
announcephp , problem

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump



All times are GMT +2. The time now is 21:34. vBulletin skin by ForumMonkeys. Powered by vBulletin® Version 3.8.11 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions Inc.