Версия для печати темы
Re-Tracker | Система локальных ретрекеров | Ретрекер _ Патчер торрентов _ patcher для rtorrent (на php)
Автор: nkk 27.11.2009, 16:23
Как я понял, здесь патчер отдельно от рторрента существует.
Если рторрент работает совместно в wTorrent`ом и только через него производятся все операции с файлами, давайте подумаем, как на него навесить патчер?!
-------------------------------------------------------------------
Все, сделал.
1. Открыть /conf/user.conf.php и дописать
Код
define ('TRACKER_URL', 'http://127.0.0.1:80/announce');// GPK INJECTION
где
127.0.0.1 - хост ретреккера,
80 - порт,
/announce - путь
2. Открыть
/wt/cls/AddT.cls.php, найти в нем
Код
if($private == 'on'){.......}
и дописать после закрывающей скобки (строка ~201)
CODE
// GPK INJECTION {
elseif(TRACKER_URL){
$torrent = new BDECODE($uploadfile);
$bencode = new BEncodeLib();
if($torrent->result['announce']){
if($torrent->result['announce-list']){
if(!in_array($tmp = array(TRACKER_URL), $torrent->result['announce-list']))
$torrent->result['announce-list'][] = $tmp;
}
elseif($torrent->result['announce'] != TRACKER_URL)
$torrent->result['announce-list'] = array(array($torrent->result['announce']), array(TRACKER_URL));
}
else
$torrent->result['announce'] = TRACKER_URL;
file_put_contents($uploadfile,$bencode->bencode($torrent->result));
}
// GPK INJECTION }
После чего,
если в конфигурационном файле определена константа
TRACKER_URL и торрент загружается без выставления опции
`Частное` на странице загрузки (а не то `частное`, которое отмечается при создании торрента),
то в список треккеров будет добавлен Ваш. Если же в торренте не было указано ни одного треккера, Ваш будет единственным.
Если же хотите добавлять треккер и для частных торрентов, удалите
else в строке
elseif(TRACKER_URL){-------------------------------------------------------------------
И, раз уж тема от специфическом торрент-клиенте, подскажите, как можно, ограничивая скорость по одному интерфейсу, не ограничивать ее по другому или как настроить рторрент чтобы он не ограничивал скорость отдачи определенным пользователям?
Автор: FreeM@N 27.11.2009, 21:22
Цитата(nkk @ 27.11.2009, 16:23)
Если рторрент работает совместно в wTorrent`ом и только через него производятся все операции с файлами, давайте подумаем, как на него навесить патчер?!
Вариант
Цитата(nkk @ 27.11.2009, 16:23)
И, раз уж тема от специфическом торрент-клиенте, подскажите, как можно, ограничивая скорость по одному интерфейсу, не ограничивать ее по другому или как настроить рторрент чтобы он не ограничивал скорость отдачи определенным пользователям?
Никак, у rtorrent-а один пользователь, точнее у него вообще нет такого понятия, многопользовательский режим реализуется только через wTorrent, соответственно скорость ограничивается всем пользователям.
Автор: nkk 28.11.2009, 1:25
FreeM@N, под пользователями я имел ввиду пиров >_<.
Выложил исходник, вроде, работает.
Скрипт, который апдейтит существующие торренты, пишется схожим образом.
CODE
<?
require ('conf/user.conf.php');
require ('lib/bdecode/class.bdecode.php');
require ('lib/bdecode/bencode.php');
foreach (glob('/usr/home/ftpall/session/*.torrent') as $file){
$torrent = new BDECODE($file);
$bencode = new BEncodeLib();
if(!$torrent->result)
continue;
if($torrent->result['announce']){
if($torrent->result['announce-list']){
if(!in_array($tmp = array(TRACKER_URL), $torrent->result['announce-list']))
$torrent->result['announce-list'][] = $tmp;
}
elseif($torrent->result['announce'] != TRACKER_URL)
$torrent->result['announce-list'] = array(array($torrent->result['announce']), array(TRACKER_URL));
}
else
$torrent->result['announce'] = TRACKER_URL;
file_put_contents( $file, $bencode->bencode($torrent->result));
}
?>
Следует учесть, что папка
/usr/home/ftpall/session/*.torrent не простая, нужно сделать
chmod 666 /usr/home/ftpall/session/*.torrent и
chmod 777 /usr/home/ftpall/session
Автор: FreeM@N 28.11.2009, 19:42
Цитата(nkk @ 28.11.2009, 1:25)
FreeM@N, под пользователями я имел ввиду пиров >_<.
От этого что-то изменилось? Разве в rtorrent можно ограничить скорость отдачи отдельному пиру? (я не пользуюсь ограничениями вообще, так что извиняйте - не в курсе)
Автор: nkk 28.11.2009, 22:15
Ой, спасибо за форк =))
Теперь это отдельная тема с обсуждением глюков и недоработок именно этого скрипта =)
Автор: FreeM@N 28.11.2009, 23:02
Есть вариант сделать модификацию wTorrent-a и отправить её http://www.wtorrent-project.org/ - возможно он её включит в trunk.
Автор: nkk 29.11.2009, 13:18
FreeM@N, я не буду этим заниматься, как и обновлением wTorrent`а на своем клиенте, т.к. вижу множество недостатков, которые лень дорабатывать:
0) дофигища доработок самого wTorrent,
1) увеличение количества дополнительных ретреккеров - то же самое, но с массивом,
2) навеска дополнительных параметров "для статистики",
3) расширение формы добавления торрент-файлов, чтобы пользователь сам вводил треккеры.
4) работа с треккерами торрентов, уже имеющимися в списке...
Если вам это интересно, я не против.
Автор: FreeM@N 29.11.2009, 18:09
Понятно, я предполагал это в виде секции настроек у администратора - задаётся один раз и нигде больше не показывается, а также обработка при загрузке торента, ИМХО этого достаточно. Торенты, уже имеющиеся в списке, можно обработать http://re-tracker.ru/index.php?showtopic=226.
Автор: nkk 30.11.2009, 0:02
Ненавижу перл. Хоть начинал свое образование веб-программирования с книги с примерами именно на перле - "CGI-программирование". Уж очень он страшный. PHP, имхо, проще =)
Кстати, да, приведенный выше патчер уже имеющихся торрентов как бы не относится напрямую к wTorrent
Автор: FreeM@N 5.12.2009, 0:24
Цитата(nkk @ 30.11.2009, 0:02)
Ненавижу перл. Хоть начинал свое образование веб-программирования с книги с примерами именно на перле - "CGI-программирование". Уж очень он страшный. PHP, имхо, проще =)
Так там уже всё сделано - берите и пользуйте
Цитата(nkk @ 30.11.2009, 0:02)
Кстати, да, приведенный выше патчер уже имеющихся торрентов как бы не относится напрямую к wTorrent
Разве? А вот это не из wTorrent-a подключается:
Код
require ('conf/user.conf.php');
require ('lib/bdecode/class.bdecode.php');
require ('lib/bdecode/bencode.php');
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)