Пример #1
0
function isIPBanned($ip)
{
    $queryHandle = mysql_query("SELECT * from bittorrent_ipbans where ip=\"" . process_user_text($ip) . "\" and timestamp > " . time());
    echo mysql_error();
    if (mysql_num_rows($queryHandle)) {
        return true;
    } else {
        return false;
    }
}
Пример #2
0
if (isIPBanned($ip)) {
    trackerError("Banned IP: " . $ip);
}
// Check that the info_hash is one that we allow:
$queryHandle = mysql_query("SELECT * from bittorrent_files where info_hash=\"" . process_user_text($info_hash) . "\"");
echo mysql_error();
if (!mysql_num_rows($queryHandle)) {
    trackerError("The tracker does not allow tracking of this file:" . $info_hash . " [] " . $_GET["info_hash"]);
}
$infoHashObject = mysql_fetch_object($queryHandle);
// If the peer is actively doing something let's update the DB
if ($event == "started" || $event == "stopped" || $event == "completed") {
    mysql_query("REPLACE into bittorrent_peers SET fileid=" . $infoHashObject->id . ", peerid=\"" . process_user_text($peer_id) . "\", ip=\"" . process_user_text($ip) . "\", port=\"" . process_user_text($port) . "\", status=\"" . $event . "\", uploaded=" . process_user_text($uploaded) . ", downloaded=" . process_user_text($downloaded) . ", timestamp=" . time());
    echo mysql_error();
} else {
    mysql_query("REPLACE delayed into bittorrent_peers SET fileid=" . $infoHashObject->id . ", peerid=\"" . process_user_text($peer_id) . "\", ip=\"" . process_user_text($ip) . "\", port=\"" . process_user_text($port) . "\", uploaded=" . process_user_text($uploaded) . ", downloaded=" . process_user_text($downloaded) . ", timestamp=" . time());
    echo mysql_error();
}
// Always send back a random selection of peers who are downloading a file with the same info_hash
$queryHandle = mysql_query("SELECT * from bittorrent_peers WHERE fileid = " . $infoHashObject->id . " order by RAND() limit " . MAX_INFO_HASH_PEERS);
echo mysql_error();
$peerList = array();
while ($dbPeer = mysql_fetch_object($queryHandle)) {
    $peer = array("peer id" => $dbPeer->peerid, "ip" => $dbPeer->ip, "port" => intval($dbPeer->port));
    $peerList[] = new BElement(BDictionary::toEncoded($peer));
}
// Get some statistical counts
$queryHandle = mysql_query("SELECT count(fileid) as complete from bittorrent_peers where fileid = '" . $infoHashObject->id . "' and status='completed'");
$data = mysql_fetch_object($queryHandle);
$complete = intval($data->complete);
$queryHandle = mysql_query("SELECT count(fileid) as incomplete from bittorrent_peers where fileid = '" . $infoHashObject->id . "' and status!='completed'");
Пример #3
0
{
    echo BDictionary::toEncoded(array("failure_reason" => $error));
    exit;
}
$info_hash = rawurldecode($_GET["info_hash"]);
if (strlen($info_hash) != 20) {
    throw new IllegalArgumentException("Malformed infohash key (length " . strlen($info_hash) . ")");
}
if (!$ip) {
    $ip = $_SERVER["REMOTE_ADDR"];
}
// Is the IP banned?
db_init();
if (isIPBanned($ip)) {
    trackerError("Banned IP: " . $ip);
}
// Check that the info_hash is one that we allow:
$queryHandle = mysql_query("SELECT * from bittorrent_files where info_hash=\"" . process_user_text($info_hash) . "\"");
echo mysql_error();
if (!mysql_num_rows($queryHandle)) {
    trackerError("The tracker does not allow tracking of this file:" . $info_hash);
}
$infoHashObject = mysql_fetch_object($queryHandle);
// Get some statistical counts
$queryHandle = mysql_query("SELECT count(fileid) as complete from bittorrent_peers where fileid = '" . $infoHashObject->id . "' and status='completed'");
$data = mysql_fetch_object($queryHandle);
$complete = intval($data->complete);
$queryHandle = mysql_query("SELECT count(fileid) as incomplete from bittorrent_peers where fileid = '" . $infoHashObject->id . "' and status!='completed'");
$data = mysql_fetch_object($queryHandle);
$incomplete = intval($data->incomplete);
$out = BDictionary::toEncoded(array("interval" => DEFAULT_CONNECTION_INTERVAL, "downloaded" => $complete, "complete" => $complete, "incomplete" => $incomplete));
Пример #4
0
 /**
  * Registers this torrent in the database
  */
 public function register()
 {
     $this->toEncoded();
     // Check if exists:
     $queryHandle = mysql_query("SELECT id from bittorrent_files where filename=\"" . process_user_text($this->filename) . "\"");
     if ($queryHandle && ($data = mysql_fetch_object($queryHandle))) {
         $extra = "id=" . $data->id . ", ";
     } else {
         $extra = "";
     }
     mysql_query("REPLACE into bittorrent_files set " . $extra . "filename=\"" . process_user_text($this->filename) . "\", info_hash=\"" . process_user_text($this->infoHash) . "\", timestamp=" . time());
 }