From 3a8857adb0a3021665a3f1958381a9e4b365d30b Mon Sep 17 00:00:00 2001
From: Yuriy Pikhtarev
Date: Mon, 26 Jun 2017 00:45:40 +0300
Subject: [PATCH] New tracker config.
---
admin/admin_bt_tracker_cfg.php | 8 +--
bt/announce.php | 54 +++++++++----------
bt/includes/init_tr.php | 4 +-
bt/scrape.php | 2 +-
common.php | 15 ++----
library/config.php | 27 ----------
.../cron/jobs/tr_cleanup_and_dlstat.php | 8 +--
library/includes/functions.php | 2 +-
library/includes/functions_torrent.php | 17 +++---
library/includes/page_header.php | 2 +
styles/templates/default/tracker.tpl | 2 +-
styles/templates/default/viewtopic_attach.tpl | 6 +--
12 files changed, 60 insertions(+), 87 deletions(-)
diff --git a/admin/admin_bt_tracker_cfg.php b/admin/admin_bt_tracker_cfg.php
index 5bd5a5f23..0e762d3fa 100644
--- a/admin/admin_bt_tracker_cfg.php
+++ b/admin/admin_bt_tracker_cfg.php
@@ -55,20 +55,20 @@ $default_cfg_num = array(
/**
* Set template vars
*/
-set_tpl_vars($default_cfg_str, $bb_cfg['tracker']);
+set_tpl_vars($default_cfg_str, config('tracker'));
set_tpl_vars_lang($default_cfg_str);
-set_tpl_vars_bool($default_cfg_bool, $bb_cfg['tracker']);
+set_tpl_vars_bool($default_cfg_bool, config('tracker'));
set_tpl_vars_lang($default_cfg_bool);
-set_tpl_vars($default_cfg_num, $bb_cfg['tracker']);
+set_tpl_vars($default_cfg_num, config('tracker'));
set_tpl_vars_lang($default_cfg_num);
$template->assign_vars(array(
'IGNORE_REPORTED_IP' => $bb_cfg['ignore_reported_ip'],
'ANNOUNCE_INTERVAL' => $bb_cfg['announce_interval'],
'PASSKEY_KEY' => $bb_cfg['passkey_key'],
- 'GOLD_SILVER_ENABLED' => $bb_cfg['tracker']['gold_silver_enabled'],
+ 'GOLD_SILVER_ENABLED' => config('tracker.gold_silver_enabled'),
'DISABLE_SUBMIT' => true,
'S_HIDDEN_FIELDS' => '',
diff --git a/bt/announce.php b/bt/announce.php
index 79a60548c..f9defa524 100644
--- a/bt/announce.php
+++ b/bt/announce.php
@@ -131,7 +131,7 @@ $peer_hash = md5(
);
// Get cached peer info from previous announce (last peer info)
-$lp_info = OLD_CACHE('tr_cache')->get(PEER_HASH_PREFIX . $peer_hash);
+$lp_info = OLD_CACHE('tr_cache')->get('peer_' . $peer_hash);
if (DBG_LOG) {
dbg_log(' ', '$lp_info-get_from-CACHE-' . ($lp_info ? 'hit' : 'miss'));
@@ -179,7 +179,7 @@ $stopped = ($event === 'stopped');
// Stopped event
if ($stopped) {
- OLD_CACHE('tr_cache')->rm(PEER_HASH_PREFIX . $peer_hash);
+ OLD_CACHE('tr_cache')->rm('peer_' . $peer_hash);
if (DBG_LOG) {
dbg_log(' ', 'stopped');
}
@@ -233,15 +233,15 @@ if ($lp_info) {
$tor_type = $row['tor_type'];
// Ratio limits
- if ((TR_RATING_LIMITS || $bb_cfg['tracker']['limit_concurrent_ips']) && !$stopped) {
+ if ((TR_RATING_LIMITS || config('tracker.limit_concurrent_ips')) && !$stopped) {
$user_ratio = ($row['u_down_total'] && $row['u_down_total'] > MIN_DL_FOR_RATIO) ? ($row['u_up_total'] + $row['u_up_release'] + $row['u_up_bonus']) / $row['u_down_total'] : 1;
$rating_msg = '';
if (!$seeder) {
foreach ($bb_cfg['rating'] as $ratio => $limit) {
if ($user_ratio < $ratio) {
- $bb_cfg['tracker']['limit_active_tor'] = 1;
- $bb_cfg['tracker']['limit_leech_count'] = $limit;
+ config(['tracker.limit_active_tor' => 1]);
+ config(['tracker.limit_leech_count' => $limit]);
$rating_msg = " (ratio < $ratio)";
break;
}
@@ -249,29 +249,29 @@ if ($lp_info) {
}
// Limit active torrents
- if (!isset($bb_cfg['unlimited_users'][$user_id]) && $bb_cfg['tracker']['limit_active_tor'] && (($bb_cfg['tracker']['limit_seed_count'] && $seeder) || ($bb_cfg['tracker']['limit_leech_count'] && !$seeder))) {
+ if (!isset($bb_cfg['unlimited_users'][$user_id]) && config('tracker.limit_active_tor') && ((config('tracker.limit_seed_count') && $seeder) || (config('tracker.limit_leech_count') && !$seeder))) {
$sql = "SELECT COUNT(DISTINCT topic_id) AS active_torrents
FROM " . BB_BT_TRACKER . "
WHERE user_id = $user_id
AND seeder = $seeder
AND topic_id != $topic_id";
- if (!$seeder && $bb_cfg['tracker']['leech_expire_factor'] && $user_ratio < 0.5) {
- $sql .= " AND update_time > " . (TIMENOW - 60 * $bb_cfg['tracker']['leech_expire_factor']);
+ if (!$seeder && config('tracker.leech_expire_factor') && $user_ratio < 0.5) {
+ $sql .= " AND update_time > " . (TIMENOW - 60 * config('tracker.leech_expire_factor'));
}
$sql .= " GROUP BY user_id";
if ($row = OLD_DB()->fetch_row($sql)) {
- if ($seeder && $bb_cfg['tracker']['limit_seed_count'] && $row['active_torrents'] >= $bb_cfg['tracker']['limit_seed_count']) {
- msg_die('Only ' . $bb_cfg['tracker']['limit_seed_count'] . ' torrent(s) allowed for seeding');
- } elseif (!$seeder && $bb_cfg['tracker']['limit_leech_count'] && $row['active_torrents'] >= $bb_cfg['tracker']['limit_leech_count']) {
- msg_die('Only ' . $bb_cfg['tracker']['limit_leech_count'] . ' torrent(s) allowed for leeching' . $rating_msg);
+ if ($seeder && config('tracker.limit_seed_count') && $row['active_torrents'] >= config('tracker.limit_seed_count')) {
+ msg_die('Only ' . config('tracker.limit_seed_count') . ' torrent(s) allowed for seeding');
+ } elseif (!$seeder && config('tracker.limit_leech_count') && $row['active_torrents'] >= config('tracker.limit_leech_count')) {
+ msg_die('Only ' . config('tracker.limit_leech_count') . ' torrent(s) allowed for leeching' . $rating_msg);
}
}
}
// Limit concurrent IPs
- if ($bb_cfg['tracker']['limit_concurrent_ips'] && (($bb_cfg['tracker']['limit_seed_ips'] && $seeder) || ($bb_cfg['tracker']['limit_leech_ips'] && !$seeder))) {
+ if (config('tracker.limit_concurrent_ips') && ((config('tracker.limit_seed_ips') && $seeder) || (config('tracker.limit_leech_ips') && !$seeder))) {
$sql = "SELECT COUNT(DISTINCT ip) AS ips
FROM " . BB_BT_TRACKER . "
WHERE topic_id = $topic_id
@@ -279,16 +279,16 @@ if ($lp_info) {
AND seeder = $seeder
AND ip != '$ip_sql'";
- if (!$seeder && $bb_cfg['tracker']['leech_expire_factor']) {
- $sql .= " AND update_time > " . (TIMENOW - 60 * $bb_cfg['tracker']['leech_expire_factor']);
+ if (!$seeder && config('tracker.leech_expire_factor')) {
+ $sql .= " AND update_time > " . (TIMENOW - 60 * config('tracker.leech_expire_factor'));
}
$sql .= " GROUP BY topic_id";
if ($row = OLD_DB()->fetch_row($sql)) {
- if ($seeder && $bb_cfg['tracker']['limit_seed_ips'] && $row['ips'] >= $bb_cfg['tracker']['limit_seed_ips']) {
- msg_die('You can seed only from ' . $bb_cfg['tracker']['limit_seed_ips'] . " IP's");
- } elseif (!$seeder && $bb_cfg['tracker']['limit_leech_ips'] && $row['ips'] >= $bb_cfg['tracker']['limit_leech_ips']) {
- msg_die('You can leech only from ' . $bb_cfg['tracker']['limit_leech_ips'] . " IP's");
+ if ($seeder && config('tracker.limit_seed_ips') && $row['ips'] >= config('tracker.limit_seed_ips')) {
+ msg_die('You can seed only from ' . config('tracker.limit_seed_ips') . " IP's");
+ } elseif (!$seeder && config('tracker.limit_leech_ips') && $row['ips'] >= config('tracker.limit_leech_ips')) {
+ msg_die('You can leech only from ' . config('tracker.limit_leech_ips') . " IP's");
}
}
}
@@ -312,7 +312,7 @@ $up_add = ($lp_info && $uploaded > $lp_info['uploaded']) ? $uploaded - $lp_info[
$down_add = ($lp_info && $downloaded > $lp_info['downloaded']) ? $downloaded - $lp_info['downloaded'] : 0;
// Gold/Silver releases
-if ($bb_cfg['tracker']['gold_silver_enabled'] && $down_add) {
+if (config('tracker.gold_silver_enabled') && $down_add) {
if ($tor_type == TOR_TYPE_GOLD) {
$down_add = 0;
} // Silver releases
@@ -322,7 +322,7 @@ if ($bb_cfg['tracker']['gold_silver_enabled'] && $down_add) {
}
// Freeleech
-if ($bb_cfg['tracker']['freeleech'] && $down_add) {
+if (config('tracker.freeleech') && $down_add) {
$down_add = 0;
}
@@ -388,14 +388,14 @@ $lp_info = array(
'tor_type' => (int)$tor_type,
);
-$lp_info_cached = OLD_CACHE('tr_cache')->set(PEER_HASH_PREFIX . $peer_hash, $lp_info, PEER_HASH_EXPIRE);
+$lp_info_cached = OLD_CACHE('tr_cache')->set('peer_' . $peer_hash, $lp_info, round($bb_cfg['announce_interval'] * (0.85 * config('tracker.expire_factor'))));
if (DBG_LOG && !$lp_info_cached) {
dbg_log(' ', '$lp_info-caching-FAIL');
}
// Get cached output
-$output = OLD_CACHE('tr_cache')->get(PEERS_LIST_PREFIX . $topic_id);
+$output = OLD_CACHE('tr_cache')->get('peers_list_' . $topic_id);
if (DBG_LOG) {
dbg_log(' ', '$output-get_from-CACHE-' . ($output !== false ? 'hit' : 'miss'));
@@ -403,8 +403,8 @@ if (DBG_LOG) {
if (!$output) {
// Retrieve peers
- $numwant = (int)$bb_cfg['tracker']['numwant'];
- $compact_mode = ($bb_cfg['tracker']['compact_mode'] || !empty($compact));
+ $numwant = (int)config('tracker.numwant');
+ $compact_mode = (config('tracker.compact_mode') || !empty($compact));
$rowset = OLD_DB()->fetch_rowset("
SELECT ip, port
@@ -434,7 +434,7 @@ if (!$output) {
$seeders = 0;
$leechers = 0;
- if ($bb_cfg['tracker']['scrape']) {
+ if (config('tracker.scrape')) {
$row = OLD_DB()->fetch_row("
SELECT seeders, leechers
FROM " . BB_BT_TRACKER_SNAP . "
@@ -454,7 +454,7 @@ if (!$output) {
'incomplete' => (int)$leechers,
);
- $peers_list_cached = OLD_CACHE('tr_cache')->set(PEERS_LIST_PREFIX . $topic_id, $output, PEERS_LIST_EXPIRE);
+ $peers_list_cached = OLD_CACHE('tr_cache')->set('peers_list_' . $topic_id, $output, round($bb_cfg['announce_interval'] * 0.7));
if (DBG_LOG && !$peers_list_cached) {
dbg_log(' ', '$output-caching-FAIL');
diff --git a/bt/includes/init_tr.php b/bt/includes/init_tr.php
index 8376a9e4b..76519bbc4 100644
--- a/bt/includes/init_tr.php
+++ b/bt/includes/init_tr.php
@@ -14,8 +14,8 @@ if (!defined('IN_TRACKER')) {
global $bb_cfg;
// Exit if tracker is disabled
-if ($bb_cfg['tracker']['off']) {
- msg_die($bb_cfg['tracker']['off_reason']);
+if (config('tracker.off')) {
+ msg_die(config('tracker.off_reason'));
}
//
diff --git a/bt/scrape.php b/bt/scrape.php
index 116f6a807..1b3a99cbc 100644
--- a/bt/scrape.php
+++ b/bt/scrape.php
@@ -13,7 +13,7 @@ require dirname(__DIR__) . '/common.php';
global $bb_cfg;
-if (!$bb_cfg['tracker']['scrape']) {
+if (!config('tracker.scrape')) {
msg_die('Please disable SCRAPE!');
}
diff --git a/common.php b/common.php
index bf9814bbd..7a9e0ae2f 100644
--- a/common.php
+++ b/common.php
@@ -61,6 +61,11 @@ try {
}
require_once __DIR__ . '/library/config.php';
+/**
+ * Container
+ */
+require_once __DIR__ . '/bootstrap.php';
+
$server_protocol = $bb_cfg['cookie_secure'] ? 'https://' : 'http://';
$server_port = in_array((int)$bb_cfg['server_port'], array(80, 443), true) ? '' : ':' . $bb_cfg['server_port'];
define('FORUM_PATH', $bb_cfg['script_path']);
@@ -78,11 +83,6 @@ define('BB_BT_USERS', 'bb_bt_users');
define('BT_AUTH_KEY_LENGTH', 10);
-define('PEER_HASH_PREFIX', 'peer_');
-define('PEERS_LIST_PREFIX', 'peers_list_');
-define('PEER_HASH_EXPIRE', round($bb_cfg['announce_interval'] * (0.85 * $bb_cfg['tracker']['expire_factor']))); // sec
-define('PEERS_LIST_EXPIRE', round($bb_cfg['announce_interval'] * 0.7)); // sec
-
define('DL_STATUS_RELEASER', -1);
define('DL_STATUS_DOWN', 0);
define('DL_STATUS_COMPLETE', 1);
@@ -169,11 +169,6 @@ switch ($bb_cfg['datastore_type']) {
$datastore = new TorrentPier\Legacy\Datastore\File($bb_cfg['cache']['db_dir'] . 'datastore/', $bb_cfg['cache']['prefix']);
}
-/**
- * Container
- */
-require_once __DIR__ . '/bootstrap.php';
-
function sql_dbg_enabled()
{
return (SQL_DEBUG && DBG_USER && !empty($_COOKIE['sql_log']));
diff --git a/library/config.php b/library/config.php
index f5f8a3f5c..28a1944db 100644
--- a/library/config.php
+++ b/library/config.php
@@ -382,33 +382,6 @@ $bb_cfg['nofollow'] = [
'allowed_url' => [$domain_name], // 'allowed.site', 'www.allowed.site'
];
-// Tracker settings
-$bb_cfg['tracker'] = [
- 'autoclean' => true,
- 'off' => false,
- 'off_reason' => 'temporarily disabled',
- 'numwant' => 50,
- 'update_dlstat' => true,
- 'expire_factor' => 2.5,
- 'compact_mode' => true,
- 'upd_user_up_down_stat' => true,
- 'browser_redirect_url' => '',
- 'scrape' => true,
- 'limit_active_tor' => true,
- 'limit_seed_count' => 0,
- 'limit_leech_count' => 8,
- 'leech_expire_factor' => 60,
- 'limit_concurrent_ips' => false,
- 'limit_seed_ips' => 0,
- 'limit_leech_ips' => 0,
- 'tor_topic_up' => true,
- 'gold_silver_enabled' => true,
- 'retracker' => true,
- 'retracker_host' => 'http://retracker.local/announce',
- 'freeleech' => false,
- 'guest_tracker' => true,
-];
-
// Ratio settings
// Don't change the order of ratios (from 0 to 1)
// rating < 0.4 -- allow only 1 torrent for leeching
diff --git a/library/includes/cron/jobs/tr_cleanup_and_dlstat.php b/library/includes/cron/jobs/tr_cleanup_and_dlstat.php
index bf6a42aac..bca4dcb1b 100644
--- a/library/includes/cron/jobs/tr_cleanup_and_dlstat.php
+++ b/library/includes/cron/jobs/tr_cleanup_and_dlstat.php
@@ -27,7 +27,7 @@ OLD_DB()->query("CREATE TABLE " . NEW_BB_BT_LAST_USERSTAT . " LIKE " . BB_BT_LAS
OLD_DB()->expect_slow_query(600);
// Update dlstat (part 1)
-if ($bb_cfg['tracker']['update_dlstat']) {
+if (config('tracker.update_dlstat')) {
// ############################ Tables LOCKED ################################
OLD_DB()->lock(array(
BB_BT_TRACKER,
@@ -64,16 +64,16 @@ OLD_DB()->query("
");
// Clean peers table
-if ($bb_cfg['tracker']['autoclean']) {
+if (config('tracker.autoclean')) {
$announce_interval = max((int)$bb_cfg['announce_interval'], 60);
- $expire_factor = max((float)$bb_cfg['tracker']['expire_factor'], 1);
+ $expire_factor = max((float)config('tracker.expire_factor'), 1);
$peer_expire_time = TIMENOW - floor($announce_interval * $expire_factor);
OLD_DB()->query("DELETE FROM " . BB_BT_TRACKER . " WHERE update_time < $peer_expire_time");
}
// Update dlstat (part 2)
-if ($bb_cfg['tracker']['update_dlstat']) {
+if (config('tracker.update_dlstat')) {
// Set "only 1 seeder" bonus
OLD_DB()->query("
UPDATE
diff --git a/library/includes/functions.php b/library/includes/functions.php
index 13b246183..f64517871 100644
--- a/library/includes/functions.php
+++ b/library/includes/functions.php
@@ -2059,7 +2059,7 @@ function is_gold($type)
{
global $lang, $bb_cfg;
- if (!$bb_cfg['tracker']['gold_silver_enabled']) {
+ if (!config('tracker.gold_silver_enabled')) {
$is_gold = '';
return $is_gold;
}
diff --git a/library/includes/functions_torrent.php b/library/includes/functions_torrent.php
index 9fd21df9f..b1575a452 100644
--- a/library/includes/functions_torrent.php
+++ b/library/includes/functions_torrent.php
@@ -355,7 +355,7 @@ function tracker_register($attach_id, $mode = '', $tor_status = TOR_NOT_APPROVED
}
}
- if ($bb_cfg['tracker']['tor_topic_up']) {
+ if (config('tracker.tor_topic_up')) {
OLD_DB()->query("UPDATE " . BB_TOPICS . " SET topic_last_post_time = GREATEST(topic_last_post_time, " . (TIMENOW - 3 * 86400) . ") WHERE topic_id = $topic_id");
}
@@ -463,15 +463,18 @@ function send_torrent_with_passkey($filename)
}
// Add retracker
- if (isset($bb_cfg['tracker']['retracker']) && $bb_cfg['tracker']['retracker']) {
+ if (config('tracker.retracker')) {
if (bf($userdata['user_opt'], 'user_opt', 'user_retracker') || IS_GUEST) {
if (!isset($tor['announce-list'])) {
- $tor['announce-list'] = array(
- array($announce),
- array($bb_cfg['tracker']['retracker_host'])
- );
+ $tor['announce-list'] = [
+ [$announce],
+ [config('tracker.retracker_host')]
+ ];
} else {
- $tor['announce-list'] = array_merge($tor['announce-list'], array(array($bb_cfg['tracker']['retracker_host'])));
+ $tor['announce-list'] = array_merge(
+ $tor['announce-list'],
+ [[config('tracker.retracker_host')]]
+ );
}
}
}
diff --git a/library/includes/page_header.php b/library/includes/page_header.php
index 82b6729b6..40ecc867e 100644
--- a/library/includes/page_header.php
+++ b/library/includes/page_header.php
@@ -205,6 +205,8 @@ $template->assign_vars(array(
'READONLY' => HTML_READONLY,
'SELECTED' => HTML_SELECTED,
+ 'GS_ENABLED' => config('tracker.gold_silver_enabled'),
+
'U_SEARCH_SELF_BY_LAST' => "search.php?uid={$userdata['user_id']}&o=5",
'U_WATCHED_TOPICS' => "profile.php?mode=watch",
));
diff --git a/styles/templates/default/tracker.tpl b/styles/templates/default/tracker.tpl
index 5994dd9ec..fbae16c75 100644
--- a/styles/templates/default/tracker.tpl
+++ b/styles/templates/default/tracker.tpl
@@ -238,7 +238,7 @@ $(function(){
/> {L_HIDE_CONTENTS}
- {TOR_TYPE_CHBOX}
+ {TOR_TYPE_CHBOX}