Bravo List
Register
Go Back   > Bravo List > Source Code > Archived Trackers > TBDev
Reply
Thread Tools
  #1  
Old 20th March 2012, 01:22
ZenoX ZenoX is offline
Senior Member
 
Join Date: Jul 2009
P2P
Posts: 19
Exclamation Adding Seedbox IP Address To Member Account!
Hey,

I have been searching for the past few hours because i was certain this mod has been posted in the past but i cannot find it anywhere.

I use the TBDev source code.

Basically my site uses the IP Based announce, i don't want to change it to the passkey system because we have 1000's of torrents and i know for a fact alot of those torrents would die because members would not be bothered to come back and re-download their older torrents to be given the new passkey.

Can anyone post a mod that allows me to add their Seedbox IP Address to their account, and have it add that as a second IP on their account in the database so they are able to use their Seedboxes instead of having to use a Proxy to re-login to the site?

If anyone can help with this it would be greatly appreciated! :)

Thanks!
Reply With Quote
  #2  
Old 20th March 2012, 01:40
daffy's Avatar
daffy daffy is offline
Senior Member
 
Join Date: Mar 2009
United Kingdom
Posts: 550
Default
Total Posts11 post ^^ if you can be arsed to sit and type all that up for help, have the decency to say hello guys and introduce yourself first your greedy fucka, then ahve cheeak to ask in shout AND post link to your thread in shout, well you can fuck right off pal, was going to help, i know what you want but aint getting any of my time out of me./
__________________
"FFS PPL READ GOD DAMMIT, WHAT AM I GOOGLE?"
"I Kill You!" simples


http://i.imgur.com/DtcRfH5.gif

I also Setup And Modify Trackers PM For Details
Reply With Quote
  #3  
Old 20th March 2012, 01:42
unkn0wn unkn0wn is offline
Senior Member
 
Join Date: Jan 2012
Micronesia, Federated States of
Posts: 29
Default
Bump:
Quote:
Originally Posted by daffy View Post
Total Posts11 post ^^ if you can be arsed to sit and type all that up for help, have the decency to say hello guys and introduce yourself first your greedy fucka
indeed ^^

bit of a pisstake its your first post and your begging for help ?????
Reply With Quote
  #4  
Old 20th March 2012, 01:48
ZenoX ZenoX is offline
Senior Member
 
Join Date: Jul 2009
P2P
Posts: 19
Default
Quote:
Originally Posted by daffy View Post
Total Posts11 post ^^ if you can be arsed to sit and type all that up for help, have the decency to say hello guys and introduce yourself first your greedy fucka, then ahve cheeak to ask in shout AND post link to your thread in shout, well you can fuck right off pal, was going to help, i know what you want but aint getting any of my time out of me./
I'm sorry about that, i only joined a few weeks ago and have been searching on the site and really didn't want to post a thread about it incase someone told me i had missed the mod.

I'll introduce myself now, really didn't mean to offend :/

Bump: announce.php:

Code:
<?
$free = false;
$double = false;
ob_start("ob_gzhandler");

require_once("include/bittorrent.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_raw(benc(array(type => "dictionary", value => $d)));
}

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

foreach (array("passkey","info_hash","peer_id","ip","event") as $x)

$GLOBALS[$x] = "" . $_GET[$x];





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

$GLOBALS[$x] = 0 + $_GET[$x];



if (strpos($passkey, "?")) {

  $tmp = substr($passkey, strpos($passkey, "?"));

$passkey = substr($passkey, 0, strpos($passkey, "?"));

$tmpname = substr($tmp, 1, strpos($tmp, "=")-1);

$tmpvalue = substr($tmp, strpos($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("Invalid $x (" . strlen($GLOBALS[$x]) . " - " . urlencode($GLOBALS[$x]) . ")");



if (strlen($passkey) != 32) err("Invalid passkey (" . strlen($passkey) . " - $passkey)");



//if (empty($ip) || !preg_match('/^(d{1,3}.){3}d{1,3}$/s', $ip))

$ip = getip();

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

$agent = $_SERVER["HTTP_USER_AGENT"];

// Deny access made with a browser...
if (ereg("^Mozilla\\/", $agent) || ereg("^Opera\\/", $agent) || ereg("^Links ", $agent) || ereg("^Lynx\\/", $agent))
    err("torrent not registered with this tracker");

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

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

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

dbconn(false);

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

if ($valid[0] != 1) err("Invalid passkey! Re-download the .torrent from $BASEURL");


$res = mysql_query("SELECT id, banned, free, 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 not registered with this tracker");

$torrentid = $torrent["id"];

//$fields = "seeder, peer_id, ip, port, uploaded, downloaded, userid";
$fields = "seeder, peer_id, ip, port, uploaded, downloaded, userid, UNIX_TIMESTAMP(last_action) AS ts";

$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");

$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;
    }

    $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;
    }
}

//// 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] >= 1 && $seeder == 'no') err("Connection limit exceeded! You may only leech from one location at a time.");

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

    $rz = mysql_query("SELECT id, uploaded, downloaded, class, parked FROM users WHERE (ip='$ip' or passkey='$passkey') AND enabled = 'yes' ORDER BY last_access DESC LIMIT 1") or err("Tracker error 2");
    if ($MEMBERSONLY && mysql_num_rows($rz) == 0)
    err("Unknown passkey. Please redownload the torrent from $BASEURL.");
    $az = mysql_fetch_assoc($rz);
    $userid = $az["id"];

//    if ($left > 0 && $az["class"] < UC_VIP)
    if ($az["class"] < UC_VIP)
    {
        $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 = 0;
        elseif ($ratio < 0.65 || $gigs < 6.5) $wait = 0;
        elseif ($ratio < 0.8 || $gigs < 8) $wait = 0;
        elseif ($ratio < 0.95 || $gigs < 9.5) $wait = 0;
        else $wait = 0;
        if ($elapsed < $wait)
                err("Not authorized (" . ($wait - $elapsed) . "h) - READ THE FAQ!");
    }
}
else
{
    
    // Get the last uploaded amount from user account for reference and store it in $last_up
    $rst = mysql_query("SELECT class, uploaded FROM users WHERE id = $userid") or err("Tracker error 5");
    $art = mysql_fetch_array($rst);
    $last_up = $art["uploaded"];
    $class = $art["class"];

    $upthis = max(0, $uploaded - $self["uploaded"]);
    $downthis = max(0, $downloaded - $self["downloaded"]);
    
    if ($free)
        $downthis = 0;
    if ($double)
        $upthis *= 2;

 if ($upthis > 0 || $downthis > 0)
 mysql_query("UPDATE users SET uploaded = uploaded + $upthis". ($torrent['free']=='no'?", downloaded = downloaded + $downthis ":' '). "WHERE id=$userid") or err("Tracker error 3");

// Initial sanity check xMB/s for 1 second
    if($upthis > 2097152)
    {
        //Work out time difference
        $endtime = time();
        $starttime = $self['ts'];
        $diff = ($endtime - $starttime);
        //Normalise to prevent divide by zero.
        $rate = ($upthis / ($diff + 1));
        //Currently 2MB/s (2097152). Increase to 5MB/s (5242880) once finished testing.
        if ($rate > 2097152)
        {
            if ($class < UC_MODERATOR)
            {
                $rate = mksize($rate);
                $client = $agent;
                $userip = getip();

                auto_enter_cheater($userid, $rate, $upthis, $diff, $torrentid, $client, $userip, $last_up);
            }
        }
    }
}

/////////////////////Fix Increase ratio using Firefox //////////////////////
$headers = getallheaders();
if (isset($headers["Cookie"]) || isset($headers["Accept-Language"]) || isset($headers["Accept-Charset"]))
err("Anti-Cheater= You cannot use this agent");
///////////////////end of fix//////////////////////




$dt = gmtime() - 180;
$dt = sqlesc(get_date_time($dt));
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;
}

$updateset = array();

if ($event == "stopped")
{
    if (isset($self))
    {
        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 snatched SET  finished  = 'yes', complete_date = $dt WHERE torrentid = $torrentid AND userid = $userid");
$updateset[] = "times_completed = times_completed + 1";
}

    if (isset($self))
    {
    $res_s = mysql_query("SELECT uploaded, downloaded FROM snatched WHERE torrentid = $torrentid AND userid = $userid");
$row_s = mysql_fetch_array($res_s);
$downloaded2 = max(0, $downloaded - $self["downloaded"]);
$uploaded2 = max(0, $uploaded - $self["uploaded"]);
mysql_query("UPDATE snatched SET uploaded = uploaded + $uploaded2, port = $port, agent= " . sqlesc($agent) . ", last_action = $dt WHERE torrentid = $torrentid AND userid = $userid");
mysql_query("UPDATE snatched SET downloaded = downloaded + $downloaded2 WHERE torrentid = $torrentid AND userid = $userid");
        mysql_query("UPDATE peers SET uploaded = $uploaded, downloaded = $downloaded, to_go = $left, last_action = NOW(), seeder = '$seeder'"
            . ($seeder == "yes" && $self["seeder"] != $seeder ? ", 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, your account is parked! Please read the FAQ!");
    
        if (portblacklisted($port))
            err("Port $port is blacklisted.");
        else
        {
            $sockres = @fsockopen($ip, $port, $errno, $errstr, 5);
            if (!$sockres)
                $connectable = "no";
            else
            {
                $connectable = "yes";
                @fclose($sockres);
            }
        }
        $res1_s = mysql_query("SELECT torrentid, userid FROM snatched WHERE torrentid = $torrentid AND userid = $userid") or err('Tracker error (120)');
$row1_s = mysql_fetch_assoc($res1_s);
if (!$row1_s)
mysql_query("INSERT INTO snatched (torrentid, userid, port, start_date, agent,ip,peer_id) VALUES ($torrentid, $userid, $port, $dt, " . sqlesc($agent) . "," . sqlesc($ip) . "," . sqlesc($peer_id) . ")");
        $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");

benc_resp_raw($resp);


?>
Reply With Quote
  #5  
Old 20th March 2012, 02:53
joeroberts's Avatar
joeroberts joeroberts is offline
BT.Manager Owner
 
Join Date: Jan 2008
United States
Posts: 2,113
Default
try this announce
PHP Code:
<?
$free 
false;
$double false;
ob_start("ob_gzhandler");

require_once(
"include/bittorrent.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_raw(benc(array(type => "dictionary"value => $d)));
}

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

foreach (array(
"passkey","info_hash","peer_id","ip","event") as $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(
"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]) . ")");



if (isset(
$passkey) AND strlen($passkey) != 32err("Invalid passkey (" strlen($passkey) . " - $passkey)");
if (!isset(
$passkey)) $passkey '';



//if (empty($ip) || !preg_match('/^(d{1,3}.){3}d{1,3}$/s', $ip))

$ip getip();

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

$agent $_SERVER["HTTP_USER_AGENT"];

// Deny access made with a browser...
if (ereg("^Mozilla\\/"$agent) || ereg("^Opera\\/"$agent) || ereg("^Links "$agent) || ereg("^Lynx\\/"$agent))
    
err("torrent not registered with this tracker");

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

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

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

dbconn(false);

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

if (
$valid[0] != 1err("Invalid passkey! Re-download the .torrent from $BASEURL");


$res mysql_query("SELECT id, banned, free, 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 not registered with this tracker");

$torrentid $torrent["id"];

//$fields = "seeder, peer_id, ip, port, uploaded, downloaded, userid";
$fields "seeder, peer_id, ip, port, uploaded, downloaded, userid, UNIX_TIMESTAMP(last_action) AS ts";

$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");

$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;
    }

    
$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;
    }
}

//// 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!");

    
$rz mysql_query("SELECT id, uploaded, downloaded, class, parked FROM users WHERE (ip='$ip' or passkey='$passkey') AND enabled = 'yes' ORDER BY last_access DESC LIMIT 1") or err("Tracker error 2");
    if (
$MEMBERSONLY && mysql_num_rows($rz) == 0)
    
err("Unknown passkey. Please redownload the torrent from $BASEURL.");
    
$az mysql_fetch_assoc($rz);
    
$userid $az["id"];

//    if ($left > 0 && $az["class"] < UC_VIP)
    
if ($az["class"] < UC_VIP)
    {
        
$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 0;
        elseif (
$ratio 0.65 || $gigs 6.5$wait 0;
        elseif (
$ratio 0.8 || $gigs 8$wait 0;
        elseif (
$ratio 0.95 || $gigs 9.5$wait 0;
        else 
$wait 0;
        if (
$elapsed $wait)
                
err("Not authorized (" . ($wait $elapsed) . "h) - READ THE FAQ!");
    }
}
else
{
    
    
// Get the last uploaded amount from user account for reference and store it in $last_up
    
$rst mysql_query("SELECT class, uploaded FROM users WHERE id = $userid") or err("Tracker error 5");
    
$art mysql_fetch_array($rst);
    
$last_up $art["uploaded"];
    
$class $art["class"];

    
$upthis max(0$uploaded $self["uploaded"]);
    
$downthis max(0$downloaded $self["downloaded"]);
    
    if (
$free)
        
$downthis 0;
    if (
$double)
        
$upthis *= 2;

 if (
$upthis || $downthis 0)
 
mysql_query("UPDATE users SET uploaded = uploaded + $upthis". ($torrent['free']=='no'?", downloaded = downloaded + $downthis ":' '). "WHERE id=$userid") or err("Tracker error 3");

// Initial sanity check xMB/s for 1 second
    
if($upthis 2097152)
    {
        
//Work out time difference
        
$endtime time();
        
$starttime $self['ts'];
        
$diff = ($endtime $starttime);
        
//Normalise to prevent divide by zero.
        
$rate = ($upthis / ($diff 1));
        
//Currently 2MB/s (2097152). Increase to 5MB/s (5242880) once finished testing.
        
if ($rate 2097152)
        {
            if (
$class UC_MODERATOR)
            {
                
$rate mksize($rate);
                
$client $agent;
                
$userip getip();

                
auto_enter_cheater($userid$rate$upthis$diff$torrentid$client$userip$last_up);
            }
        }
    }
}

/////////////////////Fix Increase ratio using Firefox //////////////////////
$headers getallheaders();
if (isset(
$headers["Cookie"]) || isset($headers["Accept-Language"]) || isset($headers["Accept-Charset"]))
err("Anti-Cheater= You cannot use this agent");
///////////////////end of fix//////////////////////




$dt gmtime() - 180;
$dt sqlesc(get_date_time($dt));
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;
}

$updateset = array();

if (
$event == "stopped")
{
    if (isset(
$self))
    {
        
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 snatched SET  finished  = 'yes', complete_date = $dt WHERE torrentid = $torrentid AND userid = $userid");
$updateset[] = "times_completed = times_completed + 1";
}

    if (isset(
$self))
    {
    
$res_s mysql_query("SELECT uploaded, downloaded FROM snatched WHERE torrentid = $torrentid AND userid = $userid");
$row_s mysql_fetch_array($res_s);
$downloaded2 max(0$downloaded $self["downloaded"]);
$uploaded2 max(0$uploaded $self["uploaded"]);
mysql_query("UPDATE snatched SET uploaded = uploaded + $uploaded2, port = $port, agent= " sqlesc($agent) . ", last_action = $dt WHERE torrentid = $torrentid AND userid = $userid");
mysql_query("UPDATE snatched SET downloaded = downloaded + $downloaded2 WHERE torrentid = $torrentid AND userid = $userid");
        
mysql_query("UPDATE peers SET uploaded = $uploaded, downloaded = $downloaded, to_go = $left, last_action = NOW(), seeder = '$seeder'"
            
. ($seeder == "yes" && $self["seeder"] != $seeder ", 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, your account is parked! Please read the FAQ!");
    
        if (
portblacklisted($port))
            
err("Port $port is blacklisted.");
        else
        {
            
$sockres = @fsockopen($ip$port$errno$errstr5);
            if (!
$sockres)
                
$connectable "no";
            else
            {
                
$connectable "yes";
                @
fclose($sockres);
            }
        }
        
$res1_s mysql_query("SELECT torrentid, userid FROM snatched WHERE torrentid = $torrentid AND userid = $userid") or err('Tracker error (120)');
$row1_s mysql_fetch_assoc($res1_s);
if (!
$row1_s)
mysql_query("INSERT INTO snatched (torrentid, userid, port, start_date, agent,ip,peer_id) VALUES ($torrentid$userid$port$dt, " sqlesc($agent) . "," sqlesc($ip) . "," sqlesc($peer_id) . ")");
        
$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");

benc_resp_raw($resp);


?>
__________________
Do not ask me to help you work on your site that is not phpMyBitTorrent
Do not ask me to make a mod for any other source
Do not Ask me to setup your site.
I will no longer help you setup your site, there is a setup script if you have trouble with it post in the forum here or in BT.Manager™ forum
My Current Demo is here http://demo.btmanager.org/
Reply With Quote
  #6  
Old 20th March 2012, 03:05
ZenoX ZenoX is offline
Senior Member
 
Join Date: Jul 2009
P2P
Posts: 19
Default
That announce works with the passkey, but when i edit the announce.php of an torrent so the passkey is removed (so its just /announce.php). It says "Invalid Passkey"

Thanks for the help so far
Reply With Quote
  #7  
Old 20th March 2012, 03:11
joeroberts's Avatar
joeroberts joeroberts is offline
BT.Manager Owner
 
Join Date: Jan 2008
United States
Posts: 2,113
Default
this should get it
PHP Code:
<?
$free 
false;
$double false;
ob_start("ob_gzhandler");

require_once(
"include/bittorrent.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_raw(benc(array(type => "dictionary"value => $d)));
}

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

foreach (array(
"passkey","info_hash","peer_id","ip","event") as $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(
"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]) . ")");



if (isset(
$passkey)AND !$passkey =='' AND strlen($passkey) != 32err("Invalid passkey (" strlen($passkey) . " - $passkey)");
if (!isset(
$passkey)) $passkey '';



//if (empty($ip) || !preg_match('/^(d{1,3}.){3}d{1,3}$/s', $ip))

$ip getip();

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

$agent $_SERVER["HTTP_USER_AGENT"];

// Deny access made with a browser...
if (ereg("^Mozilla\\/"$agent) || ereg("^Opera\\/"$agent) || ereg("^Links "$agent) || ereg("^Lynx\\/"$agent))
    
err("torrent not registered with this tracker");

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

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

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

dbconn(false);

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

if (
$valid[0] != 1err("Invalid passkey! Re-download the .torrent from $BASEURL");


$res mysql_query("SELECT id, banned, free, 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 not registered with this tracker");

$torrentid $torrent["id"];

//$fields = "seeder, peer_id, ip, port, uploaded, downloaded, userid";
$fields "seeder, peer_id, ip, port, uploaded, downloaded, userid, UNIX_TIMESTAMP(last_action) AS ts";

$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");

$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;
    }

    
$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;
    }
}

//// 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!");

    
$rz mysql_query("SELECT id, uploaded, downloaded, class, parked FROM users WHERE (ip='$ip' or passkey='$passkey') AND enabled = 'yes' ORDER BY last_access DESC LIMIT 1") or err("Tracker error 2");
    if (
$MEMBERSONLY && mysql_num_rows($rz) == 0)
    
err("Unknown passkey. Please redownload the torrent from $BASEURL.");
    
$az mysql_fetch_assoc($rz);
    
$userid $az["id"];

//    if ($left > 0 && $az["class"] < UC_VIP)
    
if ($az["class"] < UC_VIP)
    {
        
$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 0;
        elseif (
$ratio 0.65 || $gigs 6.5$wait 0;
        elseif (
$ratio 0.8 || $gigs 8$wait 0;
        elseif (
$ratio 0.95 || $gigs 9.5$wait 0;
        else 
$wait 0;
        if (
$elapsed $wait)
                
err("Not authorized (" . ($wait $elapsed) . "h) - READ THE FAQ!");
    }
}
else
{
    
    
// Get the last uploaded amount from user account for reference and store it in $last_up
    
$rst mysql_query("SELECT class, uploaded FROM users WHERE id = $userid") or err("Tracker error 5");
    
$art mysql_fetch_array($rst);
    
$last_up $art["uploaded"];
    
$class $art["class"];

    
$upthis max(0$uploaded $self["uploaded"]);
    
$downthis max(0$downloaded $self["downloaded"]);
    
    if (
$free)
        
$downthis 0;
    if (
$double)
        
$upthis *= 2;

 if (
$upthis || $downthis 0)
 
mysql_query("UPDATE users SET uploaded = uploaded + $upthis". ($torrent['free']=='no'?", downloaded = downloaded + $downthis ":' '). "WHERE id=$userid") or err("Tracker error 3");

// Initial sanity check xMB/s for 1 second
    
if($upthis 2097152)
    {
        
//Work out time difference
        
$endtime time();
        
$starttime $self['ts'];
        
$diff = ($endtime $starttime);
        
//Normalise to prevent divide by zero.
        
$rate = ($upthis / ($diff 1));
        
//Currently 2MB/s (2097152). Increase to 5MB/s (5242880) once finished testing.
        
if ($rate 2097152)
        {
            if (
$class UC_MODERATOR)
            {
                
$rate mksize($rate);
                
$client $agent;
                
$userip getip();

                
auto_enter_cheater($userid$rate$upthis$diff$torrentid$client$userip$last_up);
            }
        }
    }
}

/////////////////////Fix Increase ratio using Firefox //////////////////////
$headers getallheaders();
if (isset(
$headers["Cookie"]) || isset($headers["Accept-Language"]) || isset($headers["Accept-Charset"]))
err("Anti-Cheater= You cannot use this agent");
///////////////////end of fix//////////////////////




$dt gmtime() - 180;
$dt sqlesc(get_date_time($dt));
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;
}

$updateset = array();

if (
$event == "stopped")
{
    if (isset(
$self))
    {
        
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 snatched SET  finished  = 'yes', complete_date = $dt WHERE torrentid = $torrentid AND userid = $userid");
$updateset[] = "times_completed = times_completed + 1";
}

    if (isset(
$self))
    {
    
$res_s mysql_query("SELECT uploaded, downloaded FROM snatched WHERE torrentid = $torrentid AND userid = $userid");
$row_s mysql_fetch_array($res_s);
$downloaded2 max(0$downloaded $self["downloaded"]);
$uploaded2 max(0$uploaded $self["uploaded"]);
mysql_query("UPDATE snatched SET uploaded = uploaded + $uploaded2, port = $port, agent= " sqlesc($agent) . ", last_action = $dt WHERE torrentid = $torrentid AND userid = $userid");
mysql_query("UPDATE snatched SET downloaded = downloaded + $downloaded2 WHERE torrentid = $torrentid AND userid = $userid");
        
mysql_query("UPDATE peers SET uploaded = $uploaded, downloaded = $downloaded, to_go = $left, last_action = NOW(), seeder = '$seeder'"
            
. ($seeder == "yes" && $self["seeder"] != $seeder ", 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, your account is parked! Please read the FAQ!");
    
        if (
portblacklisted($port))
            
err("Port $port is blacklisted.");
        else
        {
            
$sockres = @fsockopen($ip$port$errno$errstr5);
            if (!
$sockres)
                
$connectable "no";
            else
            {
                
$connectable "yes";
                @
fclose($sockres);
            }
        }
        
$res1_s mysql_query("SELECT torrentid, userid FROM snatched WHERE torrentid = $torrentid AND userid = $userid") or err('Tracker error (120)');
$row1_s mysql_fetch_assoc($res1_s);
if (!
$row1_s)
mysql_query("INSERT INTO snatched (torrentid, userid, port, start_date, agent,ip,peer_id) VALUES ($torrentid$userid$port$dt, " sqlesc($agent) . "," sqlesc($ip) . "," sqlesc($peer_id) . ")");
        
$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");

benc_resp_raw($resp);


?>
__________________
Do not ask me to help you work on your site that is not phpMyBitTorrent
Do not ask me to make a mod for any other source
Do not Ask me to setup your site.
I will no longer help you setup your site, there is a setup script if you have trouble with it post in the forum here or in BT.Manager™ forum
My Current Demo is here http://demo.btmanager.org/
Reply With Quote
  #8  
Old 20th March 2012, 03:15
ZenoX ZenoX is offline
Senior Member
 
Join Date: Jul 2009
P2P
Posts: 19
Default
The invalid info hash error has returned. I tried removing the passkey from the torrent too and the error didn't change :(

Thanks
Reply With Quote
  #9  
Old 20th March 2012, 03:18
joeroberts's Avatar
joeroberts joeroberts is offline
BT.Manager Owner
 
Join Date: Jan 2008
United States
Posts: 2,113
Default
please try to over write your file again as I did not mess with the info hash part.
__________________
Do not ask me to help you work on your site that is not phpMyBitTorrent
Do not ask me to make a mod for any other source
Do not Ask me to setup your site.
I will no longer help you setup your site, there is a setup script if you have trouble with it post in the forum here or in BT.Manager™ forum
My Current Demo is here http://demo.btmanager.org/
Reply With Quote
  #10  
Old 20th March 2012, 03:26
ZenoX ZenoX is offline
Senior Member
 
Join Date: Jul 2009
P2P
Posts: 19
Default
I just double checked, created a brand new php file with the code and deleted announce.php from the server before uploading. Still got the Failure: Invalid Info Hash error :/

Thanks
Reply With Quote
Reply

Tags
account , adding , address , ip , member , seedbox


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 23:05. vBulletin skin by ForumMonkeys. Powered by vBulletin® Version 3.8.11 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions Inc.