Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

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`ом и только через него производятся все операции с файлами, давайте подумаем, как на него навесить патчер?!

Вариант smile.gif
Цитата(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, имхо, проще =)

Так там уже всё сделано - берите и пользуйте smile.gif
Цитата(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)