Esempio n. 1
0
if (!is_numeric($downloaded)) {
    throw new IllegalArgumentException("Non-numeric download amount specified");
}
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 . " [] " . $_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)) {
Esempio n. 2
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));