Пример #1
0
<?php

if (!defined('FORUM_ROOT')) {
    define('FORUM_ROOT', '../../');
}
require FORUM_ROOT . 'include/common.php';
require FORUM_ROOT . 'lang/' . $forum_user['language'] . '/common.php';
require FORUM_ROOT . 'lang/' . $forum_user['language'] . '/post.php';
if ($forum_user['language'] != 'English' && file_exists(FORUM_ROOT . 'extensions/fancy_tracker/lang/' . $forum_user['language'] . '/fancy_tracker.php')) {
    require FORUM_ROOT . 'extensions/fancy_tracker/lang/' . $forum_user['language'] . '/fancy_tracker.php';
} else {
    require FORUM_ROOT . 'extensions/fancy_tracker/lang/English/fancy_tracker.php';
}
$query = array('SELECT' => 'COUNT(*) AS enabled', 'FROM' => 'extensions', 'WHERE' => 'id=\'fancy_tracker\' AND disabled=0');
$result = $forum_db->query_build($query) or Fancy_Tracker::benc_error('Unable to check for extension.');
if ($forum_db->result($result) != '1') {
    message($lang_common['Bad request']);
}
if ($forum_user['g_use_tracker'] == '0') {
    message($lang_common['No view']);
}
$action = isset($_GET['action']) ? forum_trim($_GET['action']) : FALSE;
if ($action == 'get') {
    $info_hash = isset($_GET['hash']) ? forum_trim($_GET['hash']) : '';
    if (!Fancy_Tracker::is_info_hash($info_hash)) {
        message($lang_common['Bad request']);
    }
    if (!file_exists(FORUM_ROOT . 'extensions/fancy_tracker/torrents/' . $info_hash . '.torrent')) {
        message($lang_tracker['File not exists']);
    }
    $query = array('SELECT' => 't.name', 'FROM' => 'torrents AS t', 'WHERE' => 'UPPER(t.info_hash) = UPPER(\'' . $forum_db->escape($info_hash) . '\')');
Пример #2
0
}
// Strip slashes from GET/POST/COOKIE (if magic_quotes_gpc is enabled)
if (get_magic_quotes_gpc()) {
    function stripslashes_array($array)
    {
        return is_array($array) ? array_map('stripslashes_array', $array) : stripslashes($array);
    }
    $_GET = stripslashes_array($_GET);
    $_POST = stripslashes_array($_POST);
    $_COOKIE = stripslashes_array($_COOKIE);
}
if (intval($forum_config['o_fancy_tracker_enable_scrape'], 10) === 0) {
    Fancy_Tracker::benc_error('The scrape interface is disabled.');
}
if (!isset($_GET["info_hash"])) {
    Fancy_Tracker::benc_error('Invalid info_hash.');
}
$info_hashes = array();
$querys = explode('&', $_SERVER['QUERY_STRING']);
foreach ($querys as $q) {
    if (substr($q, 0, 10) == 'info_hash=') {
        list(, $_hash) = explode('=', $q);
        //$_hash = forum_trim($_hash);
        if (strlen($_hash) === 20) {
            $_hash = bin2hex($_hash);
        }
        if (Fancy_Tracker::is_info_hash($_hash)) {
            array_push($info_hashes, $_hash);
            continue;
        }
    }
Пример #3
0
    case 'mysql':
    case 'mysqli':
    case 'mysql_innodb':
    case 'mysqli_innodb':
    case 'pgsql':
        $random_fn = 'RAND()';
        break;
    case 'sqlite':
    case 'sqlite3':
        $random_fn = 'random()';
        break;
    default:
        $random_fn = 'RAND()';
}
$query = array('SELECT' => 'p.peer_id, p.ip, p.port, p.remaining', 'FROM' => 'peers AS p', 'WHERE' => 'UPPER(p.info_hash) = UPPER(\'' . $forum_db->escape($fields['info_hash']) . '\') AND UPPER(p.peer_id) != UPPER(\'' . $forum_db->escape($fields['peer_id']) . '\')', 'ORDER BY' => $random_fn, 'LIMIT' => $fields['num_want']);
$result = $forum_db->query_build($query) or Fancy_Tracker::benc_error('Unable to fetch list of peers.');
$peers = array();
$seeders = $leechers = 0;
while ($cur_peer = $forum_db->fetch_assoc($result)) {
    $peers[] = array('ip' => $cur_peer['ip'], 'peer id' => str_pad(Fancy_Tracker::hex2bin($cur_peer['peer_id']), 20), 'port' => intval($cur_peer['port'], 10));
    // GET num SEED and LEECHERS
    if ($cur_peer['remaining'] == 0) {
        $seeders++;
    } else {
        $leechers++;
    }
}
// End the transaction
$forum_db->end_transaction();
// LAST QUERY
$forum_db->close();