IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
patcher для rtorrent (на php), на основе wTorrent
nkk
сообщение 27.11.2009, 16:23
Сообщение #1


Активный участник
***

Группа: Пользователи
Сообщений: 37
Регистрация: 18.1.2009
Пользователь №: 281



Как я понял, здесь патчер отдельно от рторрента существует.
Если рторрент работает совместно в 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
Сообщение #2


Активный участник
***

Группа: Админы
Сообщений: 660
Регистрация: 15.12.2008
Из: Москва
Пользователь №: 15



Цитата(nkk @ 27.11.2009, 16:23) *
Если рторрент работает совместно в wTorrent`ом и только через него производятся все операции с файлами, давайте подумаем, как на него навесить патчер?!

Вариант smile.gif
Цитата(nkk @ 27.11.2009, 16:23) *
И, раз уж тема от специфическом торрент-клиенте, подскажите, как можно, ограничивая скорость по одному интерфейсу, не ограничивать ее по другому или как настроить рторрент чтобы он не ограничивал скорость отдачи определенным пользователям?

Никак, у rtorrent-а один пользователь, точнее у него вообще нет такого понятия, многопользовательский режим реализуется только через wTorrent, соответственно скорость ограничивается всем пользователям.


--------------------
Перейти в начало страницы
 
+Цитировать сообщение
nkk
сообщение 28.11.2009, 1:25
Сообщение #3


Активный участник
***

Группа: Пользователи
Сообщений: 37
Регистрация: 18.1.2009
Пользователь №: 281



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
Сообщение #4


Активный участник
***

Группа: Админы
Сообщений: 660
Регистрация: 15.12.2008
Из: Москва
Пользователь №: 15



Цитата(nkk @ 28.11.2009, 1:25) *
FreeM@N, под пользователями я имел ввиду пиров >_<.

От этого что-то изменилось? Разве в rtorrent можно ограничить скорость отдачи отдельному пиру? (я не пользуюсь ограничениями вообще, так что извиняйте - не в курсе)


--------------------
Перейти в начало страницы
 
+Цитировать сообщение
nkk
сообщение 28.11.2009, 22:15
Сообщение #5


Активный участник
***

Группа: Пользователи
Сообщений: 37
Регистрация: 18.1.2009
Пользователь №: 281



Ой, спасибо за форк =))

Теперь это отдельная тема с обсуждением глюков и недоработок именно этого скрипта =)
Перейти в начало страницы
 
+Цитировать сообщение
FreeM@N
сообщение 28.11.2009, 23:02
Сообщение #6


Активный участник
***

Группа: Админы
Сообщений: 660
Регистрация: 15.12.2008
Из: Москва
Пользователь №: 15



Есть вариант сделать модификацию wTorrent-a и отправить её автору - возможно он её включит в trunk.


--------------------
Перейти в начало страницы
 
+Цитировать сообщение
nkk
сообщение 29.11.2009, 13:18
Сообщение #7


Активный участник
***

Группа: Пользователи
Сообщений: 37
Регистрация: 18.1.2009
Пользователь №: 281



FreeM@N, я не буду этим заниматься, как и обновлением wTorrent`а на своем клиенте, т.к. вижу множество недостатков, которые лень дорабатывать:
0) дофигища доработок самого wTorrent,
1) увеличение количества дополнительных ретреккеров - то же самое, но с массивом,
2) навеска дополнительных параметров "для статистики",
3) расширение формы добавления торрент-файлов, чтобы пользователь сам вводил треккеры.
4) работа с треккерами торрентов, уже имеющимися в списке...

Если вам это интересно, я не против.
Перейти в начало страницы
 
+Цитировать сообщение
FreeM@N
сообщение 29.11.2009, 18:09
Сообщение #8


Активный участник
***

Группа: Админы
Сообщений: 660
Регистрация: 15.12.2008
Из: Москва
Пользователь №: 15



Понятно, я предполагал это в виде секции настроек у администратора - задаётся один раз и нигде больше не показывается, а также обработка при загрузке торента, ИМХО этого достаточно. Торенты, уже имеющиеся в списке, можно обработать патчером на perl-e.


--------------------
Перейти в начало страницы
 
+Цитировать сообщение
nkk
сообщение 30.11.2009, 0:02
Сообщение #9


Активный участник
***

Группа: Пользователи
Сообщений: 37
Регистрация: 18.1.2009
Пользователь №: 281



Ненавижу перл. Хоть начинал свое образование веб-программирования с книги с примерами именно на перле - "CGI-программирование". Уж очень он страшный. PHP, имхо, проще =)

Кстати, да, приведенный выше патчер уже имеющихся торрентов как бы не относится напрямую к wTorrent
Перейти в начало страницы
 
+Цитировать сообщение
FreeM@N
сообщение 5.12.2009, 0:24
Сообщение #10


Активный участник
***

Группа: Админы
Сообщений: 660
Регистрация: 15.12.2008
Из: Москва
Пользователь №: 15



Цитата(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');


--------------------
Перейти в начало страницы
 
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия службы мониторинга серверов Сейчас: 22.9.2017, 23:35
Rambler's Top100