New tracker config.

This commit is contained in:
Yuriy Pikhtarev 2017-06-26 00:45:40 +03:00
commit 3a8857adb0
No known key found for this signature in database
GPG key ID: 3A9B5A757B48ECC6
12 changed files with 60 additions and 87 deletions

View file

@ -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' => '',

View file

@ -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');

View file

@ -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'));
}
//

View file

@ -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!');
}

View file

@ -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']));

View file

@ -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

View file

@ -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

View file

@ -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;
}

View file

@ -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')]]
);
}
}
}

View file

@ -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']}&amp;o=5",
'U_WATCHED_TOPICS' => "profile.php?mode=watch",
));

View file

@ -238,7 +238,7 @@ $(function(){
/>&nbsp;{L_HIDE_CONTENTS}
</label>
</p>
<!-- IF $bb_cfg['tracker']['gold_silver_enabled'] --><p class="chbox">{TOR_TYPE_CHBOX}</p><!-- ENDIF -->
<!-- IF GS_ENABLED --><p class="chbox">{TOR_TYPE_CHBOX}</p><!-- ENDIF -->
</div>
</fieldset>
<fieldset>

View file

@ -146,11 +146,11 @@
<tr class="row3">
<th colspan="3" class="{postrow.attach.tor_reged.DL_LINK_CLASS}">{postrow.attach.tor_reged.DOWNLOAD_NAME}<!-- IF postrow.attach.tor_reged.TOR_FROZEN == 0 --><!-- IF MAGNET_LINKS -->&nbsp;{postrow.attach.tor_reged.MAGNET}<!-- ENDIF --><!-- ENDIF --></th>
</tr>
<!-- IF postrow.attach.tor_reged.TOR_SILVER_GOLD == 2 && $bb_cfg['tracker']['gold_silver_enabled'] -->
<!-- IF postrow.attach.tor_reged.TOR_SILVER_GOLD == 2 && GS_ENABLED -->
<tr class="row4">
<th colspan="3" class="row7"><img src="styles/images/tor_silver.gif" width="16" height="15" title="{L_SILVER}" />&nbsp;{L_SILVER_STATUS}&nbsp;<img src="styles/images/tor_silver.gif" width="16" height="15" title="{L_SILVER}" /></th>
</tr>
<!-- ELSEIF postrow.attach.tor_reged.TOR_SILVER_GOLD == 1 && $bb_cfg['tracker']['gold_silver_enabled'] -->
<!-- ELSEIF postrow.attach.tor_reged.TOR_SILVER_GOLD == 1 && GS_ENABLED -->
<tr class="row4">
<th colspan="3" class="row7"><img src="styles/images/tor_gold.gif" width="16" height="15" title="{L_GOLD}" />&nbsp;{L_GOLD_STATUS}&nbsp;<img src="styles/images/tor_gold.gif" width="16" height="15" title="{L_GOLD}" /></th>
</tr>
@ -252,7 +252,7 @@
<option value="del_torrent">{L_DELETE_TORRENT}</option>
<option value="del_torrent_move_topic">{L_DELETE_MOVE_TORRENT}</option>
<!-- IF AUTH_MOD -->
<!-- IF $bb_cfg['tracker']['gold_silver_enabled'] -->
<!-- IF GS_ENABLED -->
<!-- IF postrow.attach.tor_reged.TOR_SILVER_GOLD == 1 -->
<option value="unset_silver_gold">{L_UNSET_GOLD_TORRENT} / {L_UNSET_SILVER_TORRENT}</option>
<option value="set_silver">{L_SET_SILVER_TORRENT}</option>