1. Создать пользователя и узнать его passkey:

Через админку создаем АКК с логином "GUEST" (это пример), далее идем к нему в профиль и редактируем: Права - ВИП. А у ВИПа скачка не учитывается (замороженна). Далее, как узнать пасскей это ака? Нужно зайти на трекер под этим логином и в профиле (Редактирование моего профиля - GUEST), видим тот самый и нужный нам пасскей. Копируем его и вставляем в файл download.php (пример показан ниже и в прикрепленном файле!).

2. Прописать в download.php конструкцию вида:

Код:
if (!$CURUSER)
$CURUSER = array(
'id' => id_того_юзера,
'passkey' => 'его пасскей,
);

Закрыть в самом начале файла:

Код:
loggedinorreturn();
parked();

Должно быть как у меня в файле:

Код:
require_once("include/bittorrent.php");
 dbconn();
 /*loggedinorreturn();
 parked();/*/

Прикалываю к сообщению свой файл download.php для того чтобы вы увидели где и как вставлять. У меня это строчка 75-76.

3. Открываем ваш Деталис, Бровс и меняем на вот это условие в самом начале:

Код:
require_once("include/bittorrent.php");
 dbconn(false);
 //loggedinorreturn();
 //parked();
download.php

<?
/*
// +------------------------------------------------+
// |  TBDev v2.3.0 Yuna Scatari Edition Pre 6 RC 0  |
// +------------------------------------------------+
// |  Сборка движка : SelinaAnt, InDigo             |
// |  Дата релиза: 5 Июня 2011 года                 |
// |  Сайт поддержки: http://ts-vega.sytes.net      |
// +------------------------------------------------+
// |              Не для Продажи!                   |
// +------------------------------------------------+
*/
require_once("include/bittorrent.php");
dbconn();
/*loggedinorreturn();
parked();/*/
function formatBytes($bytes, $precision = 2) {
    $units = array('B', 'KB', 'MB', 'GB', 'TB');   
    $bytes = max($bytes, 0);
    $pow = floor(($bytes ? log($bytes) : 0) / log(1024));
    $pow = min($pow, count($units) - 1);   
    $bytes /= pow(1024, $pow);   
    return round($bytes, $precision) . '' . $units[$pow];
}
function announce_list($announce_urls) {
  for ($i = 0; $i < count($announce_urls); $i++) { 
if (!empty($announce_urls[$i])) {
    $list[$i][$i] = bdec(benc_str(trim($announce_urls[$i])));
    $list[$i]= bdec(benc_list($list[$i]));
    }
  }
  return bdec(benc_list($list));
}
if (@ini_get('output_handler') == 'ob_gzhandler' AND @ob_get_length() !== false){
@ob_end_clean();
header('Content-Encoding:');
}
$id = (int) $_GET["id"];
if (!is_numeric($id))
stderr($tracker_lang['error'],$tracker_lang['invalid_id']);
global $announce_urls;
$res = sql_query("SELECT multi_time, multitracker, name, size, f_trackers FROM torrents WHERE id = ".sqlesc($id)) or sqlerr(__FILE__, __LINE__);
$row = mysql_fetch_assoc($res);
if (!$row)
stderr($tracker_lang['error'], "В базе нет названия торрента к такому id");
// создаем массив проверенных аннонсов
$arrayrow = explode("\n",$row["f_trackers"]);
/// создаем массив "битых" аннонсов по :0:0:0 данным
for($i = 0, $c = count($arrayrow); $i < $c; $i++) {
if (!preg_match("|(:0:0:0)|U", $arrayrow[$i], $li)){
unset($arrayrow[$i]);
} else
$arrayrow[$i] = trim(str_replace(":0:0:0","",$arrayrow[$i]));
}
/// перебираем оригинал аннонсов для удаления "битых"
for($iu = 0, $cu = count($announce_urls); $iu < $cu; $iu++) {
foreach ($arrayrow as $b=>$c) {
if (stristr($announce_urls[$iu],$c)){
unset($announce_urls[$iu]);
} } }
$size=formatBytes($row["size"]);
$fname = $row['name']."^(".$size.")";
$ru = array("а","б","в","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я","А","Б","В","Г","Д","Е","Ё","Ж","З","И","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю","Я"," ");
$en = array("a","b","v","g","d","e","e","zg","z","i","i","k","l","m","n","o","p","r","s","t","y","f","h","c","ch","sh","zh","","u","","e","iu","ia","A","B","V","G","D","E","E","Zg","Z","I","K","L","M","N","O","P","R","S","T","Y","F","H","C","Ch","Sh","Zh","", "U","","E","IU","Ia","_");
$fname = str_replace($ru, $en, $fname);
$rui = array(",",".",";","'","\"","/",":","&","~");
$fname = str_replace($rui, "_", $fname);
$name = $fname."[$SITENAME].torrent"; 
$fn = $torrent_dir."/".$id.".torrent";
if (!$row || !is_file($fn) || !is_readable($fn)){
stderr($tracker_lang['error'], $tracker_lang['unable_to_read_torrent']);
}
sql_query("UPDATE torrents SET hits = hits + 1 WHERE id = ".sqlesc($id));
require_once "include/benc.php";
if (!$CURUSER)
$CURUSER = array('id' => 113,'passkey' => '0544e77bd0f0ceca830786b48c91bea0');//Тут пишем вместо моего ID и пасскея - свой ID и пасскей что возьмете у вашего ЭКС-ВИПА на который и будет списываться вся скачка-отдача//
if (strlen($CURUSER["passkey"]) <> 32) {
$CURUSER["passkey"] = md5($CURUSER["username"].get_date_time().$CURUSER["passhash"]);
sql_query("UPDATE users SET passkey=".sqlesc($CURUSER["passkey"])." WHERE id=".sqlesc($CURUSER["id"]));
}
//////////////////////// временное правило
$dt_multi = get_date_time(gmtime() - 43200); // пол дня - увеличьте время или уберите вовсе проверку.
if ($row["multitracker"]=="yes" && $row["multi_time"]<$dt_multi){
$sql = sql_query("SELECT info_hash FROM torrents WHERE id=$id");
while($torrent = mysql_fetch_array($sql)) {
    $tracker_cache = array();
    $f_leechers = 0;
    $f_seeders = 0;
    $announce_list=$announce_urls;
    foreach($announce_list as $announce)
    {
        $response = get_remote_peers($announce, $torrent['info_hash'],true);
        if($response['state']=='ok'){
          $tracker_cache[] = $response['tracker'].':'.($response['leechers'] ? $response['leechers'] : 0).':'.($response['seeders'] ? $response['seeders'] : 0).':'.($response['downloaded'] ? $response['downloaded'] : 0);
            if ($f_leechers < $response['leechers'])
            $f_leechers = $response['leechers'];
           
            if ($f_seeders < $response['seeders'])
            $f_seeders = $response['seeders'];
        }
        else
            $tracker_cache[] = $response['tracker'].':false';
    }
    $tracker_cache = implode("\n",$tracker_cache);     
    sql_query("UPDATE LOW_PRIORITY torrents SET f_leechers = ".sqlesc($f_leechers).', f_seeders = '.sqlesc($f_seeders).', f_trackers = '.sqlesc($tracker_cache).' WHERE id = '.$id) or sqlerr(__FILE__,__LINE__);
} }
//////////////////////// временное правило
$dict = bdec_file($fn, (1024*1024));
$dict['value']['announce']['value'] = $announce_urls[0]."?passkey=$CURUSER[passkey]";//"$DEFAULTBASEURL/announce.php?passkey=$CURUSER[passkey]";
if ($row["multitracker"]=="yes"){
$announce_urls[0]=$announce_urls[0]."?passkey=$CURUSER[passkey]";
$dict['value']['announce-list'] = announce_list($announce_urls);
} else {
$dict['value']['comment']=bdec(benc_str("Торрент создан для '$SITENAME'")); // change torrent comment
$dict['value']['comment']=bdec(benc_str("$DEFAULTBASEURL/details.php?id=$id")); // change torrent comment to URL
unset($dict['value']['announce-list']); // remove multi-tracker capability
$dict['value']['announce']['value'] = $announce_urls[0]."?passkey=$CURUSER[passkey]";//"$DEFAULTBASEURL/announce.php?passkey=$CURUSER[passkey]";
}
$dict['value']['announce']['string'] = strlen($dict['value']['announce']['value']).":".$dict['value']['announce']['value'];
$dict['value']['announce']['strlen'] = strlen($dict['value']['announce']['string']);
header ("Expires: Tue, 1 Jan 1980 00:00:00 GMT");
header ("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header ("Cache-Control: no-store, no-cache, must-revalidate");
header ("Cache-Control: post-check=0, pre-check=0", false);
header ("Pragma: no-cache");
header ("Accept-Ranges: bytes");
header ("Connection: close");
header ("Content-Transfer-Encoding: binary");
header ("Content-Disposition: attachment; filename=\"".$name."\"");
header ("Content-Type: application/x-bittorrent");
ob_implicit_flush(true);
print(benc($dict)); ?>

Теги: Моды и хаки TBDev