<?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) . '\')');
} // 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; } }
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();