Linux для всех

индекс
247,21

wTorrent — web-based bittorrent клиент для Linux\BSD

wTorrent — удобная графическая web-морда к популярному консольному клиенту rTorrent.

Удобен он тем, что поразительно (хотя и ожидаемо от консольной программки) не требователен к аппаратным ресурсам, прост в настройке и управлении и поддерживается большинством трекеров.

Здесь я опишу как установить надстройку над ним для управления своими торрентами через Интернет.

Особенно актуально это в случае, если компьютер подключен к сети не напрямую, а через домашний сервер, и торрент-клиент установлен именно там.



Системные требования:

Консольный torrent-клиент rTorrent, собранный с поддержкой xmlrpc и scgi-управления.
Web-сервер с поддержкой SCGI (lighthttpd или apache).
PHP5 с поддержкой PDO и XML-RPC.

В моем случае за основу взята система Gentoo. Для других дистрибутивов установка несколько отличается, но все нужные компоненты есть в репозиториях большинства дистрибутивов, ищите.

Для начала включим USE-флаги:

net-p2p/rtorrent xmlrpc daemon
dev-lang/php pdo xmlrpc sqlite


Устанавливаем ПО.


emerge net-p2p/rtorrent dev-lang/php www-servers/apache www-apache/mod_scgi

По зависимостям установятся xmlrpc-c, scgid и libtorrent.

Настройка rTorrent.


Создадим пользователя rtorrent для функционирования клиента в качестве демона:

addgroup rtorrent
adduser -d /PATH/TO/DOWNLOADS -m -p password -g rtorrent rtorrent


Pедактируем /etc/conf.d/rtorrent, заменив $USER на имя нашего пользователя.

Создадим конфигурационный файл rtorrent и впишем в него нужные настрйоки.

cd /path/to/downloads
echo "scgi_port = localhost:5000" >> .rtorrent.rc
chown rtorrent:rtorrent


Настройка клиента закончена, запустим его командой /etc/init.d/rtorrent start

Настройка web-сервера.


Отредактируем /etc/conf.d/apache2, добавив туда такое (если строка уже есть, дописать новые параметры в конец):

APACHE2_OPTS="-D PHP5 -D SSL -D SCGI"

Приведем /etc/apache2/modules.d/20_mod_scgi.conf к виду (убрав мои кавычки, без них парсер съедает код):

"<"IfDefine SCGI">"
LoadModule scgi_module modules/mod_scgi.so

SCGIMount /RPC2 127.0.0.1:5000
"<"Location /RPC2">"
AuthName "Private Remote Procedure Call"
AuthType Basic
AuthBasicProvider file
AuthUserFile /path/to/webroot/htpasswd
Require user remotecall
"<"/Location">"

"<"/IfDefine">"


Создаем htpasswd:

htpasswd -c /path/to/webroot/htpasswd remotecall

Установка wTorrent


Качаем архив: www.wtorrent-project.org/trac/changeset/latest/trunk/?old_path=%2F&format=zip

Распаковываем.

Заходим на servername/install.php и следуем советам указанным там.

Если все сделано правильно, мы увидим вот такой интерфейс :)

image
+22
12 июня 2009, 16:06
54

комментарии (88)

0
Kalobok #
А как там обстоят дела с русскими именами и файлами больше 2Г? Просто под фрей и то, и другое — геморрой. xmlrpc и rtorrent мне пришлось пересобирать самому (вместо портов) чтобы решить проблему 2Г. А русский так и глючит — некоторые имена просто крашат rtorrent при попытке обратиться к ним через xmlrpc. Правда, я в качестве морды использую rtGui, но не думаю, что проблема именно в нем.
0
kabachok #
а что за проблема с файлами более 2х гигов?
0
Kalobok #
Размеры файлов неправильно показывает. Тот xmlrpc, который у фри в портах, использует маленькие int. Чтобы получить правильный размер надо брать из репозитория advanced-версию.
0
andoriyu #
вообщем штука не подходит для России, без патча падает если трекер возвращает ошибку на русском. названия файлов сохраняет(русские) ??????
–3
ivlis #
Именуют торренты по-русски только извращенцы, imho.

Надо сказать что падает не всегда. У меея падало один раз вроде. Да ну и фс должна уметь писать по русски естественно.
+4
romx #
По моему извращенцы это те, кто пишут программы так, что они падают от наличия не-latin символов в именах данных.
0
ivlis #
А почему программа должна поддерживать какую-то кодировку win1251? А 99% торрентов с русскими именами именно в этой кодировке. С юникодом там вроде всё в порядке.
0
romx #
> А почему программа должна поддерживать какую-то кодировку win1251? А 99% торрентов с русскими именами именно в этой кодировке.

Именно поэтому.
0
ivlis #
А норвежскому парню не пофигу на это дело? :)
0
differentlocal #
А по моему извращенцы используют cp1251 в 2009 году. Хватит насиловать труп.

На каждую кодировку поддержку писать — глупо. Тогда надо и cp1251 (windows xp), и UTF-8 (Linux\FreeBSD), и KOI8 (OpenBSD) и даже CP866 (А вдруг?).

При том, что автор программы — не из России, а за рубежом cp1251 практически не распространена, давно везде юникод.
+1
romx #
Не надо «писать поддержку», вполне достаточно обеспечить, чтобы программа не падала.
+1
differentlocal #
>некоторые имена просто крашат rtorrent при попытке обратиться к ним через xmlrpc.

>падает если трекер возвращает ошибку на русском

Падает, насколько я понял, если трекер возвращает ошибку по-русски. Или при обращении к русскому торренту через _xmlrpc_. И виноват в этом не rTorrent, а фряшный xmlrpc-c, ибо в линуксе все отлично работает.

Русская ошибка в протоколе общения клиент-сервер, да еще и при работе не в Unicode — это бред. Так делать _нельзя_ и за такое нужно обрывать руки автору трекера, а не клиента. Это потенциально выдает феерические глюки под не-интернациональными системами, например в OpenBSD, где близко нет юникода и вообще все очень туго с локалями.

Не задумывались, почему почтовые сервера возвращают ошибки (rejected, redirected, unavail и т.д.) на английском и только на английском?
0
romx #
Еще раз:
Конечно же делать вывод в нестандартном виде это плохо.

Но еще более плохо писать программы так, что она падает всего лишь получив на вход какие-то данные в неожиданном для себя виде.
0
differentlocal #
Тогда согласен, да.
0
differentlocal #
Под линуксом — и то и другое ок.
Под фрей русский не тестировал, не попадалось таких торрентов.
0
meako #
Странно, у меня фря шестая, ставил давно, никаких проблем у wTorrenta ни с русскими файлами, ни с размерами нет.
0
Kalobok #
У меня фря 7. Проблемы были давно и продолжались долго. В конце концов я не выдержал и пересобрал все. Не исключаю, что в портах тоже наконец исправили.
0
grokinn #
мне пришлось rtorrent патчить а то он падал от некоторых файлов с русскими именами, а так все отлично.
0
Kalobok #
Во, а технологией не поделитесь? Что именно патчили?
+1
grokinn #
не помню откуда брал патч поэтому копирую его прямо в коммент
— rtorrent/src/rpc/xmlrpc.cc (revision 1078)
+++ rtorrent/src/rpc/xmlrpc.cc (working copy)
@@ -371,8 +371,34 @@
#endif
case torrent::Object::TYPE_STRING:
— return xmlrpc_string_new(env, object.as_string().c_str());
+ {
+#ifdef XMLRPC_HAVE_I8
+ // The versions that support I8 do implicit utf-8 validation.
+ xmlrpc_value* result = xmlrpc_string_new(env, object.as_string().c_str());
+#else
+ // In older versions, xmlrpc-c doesn't validate the utf-8 encoding itself.
+ xmlrpc_validate_utf8(env, object.as_string().c_str(), object.as_string().length());
+ xmlrpc_value* result = env->fault_occurred? NULL: xmlrpc_string_new(env, object.as_string().c_str());
+#endif
+
+ if (env->fault_occurred) {
+ xmlrpc_env_clean(env);
+ xmlrpc_env_init(env);
+
+ const std::string& str = object.as_string();
+ char buffer[str.size() + 1];
+ char* dst = buffer;
+ for (std::string::const_iterator itr = str.begin(); itr != str.end(); ++itr)
+ *dst++ = ((*itr < 0x20 && *itr != '\r' && *itr != '\n' && *itr != '\t') || (*itr & 0x80))? '?': *itr;
+ *dst = 0;
+
+ result = xmlrpc_string_new(env, buffer);
+ }
+
+ return result;
+ }
+
case torrent::Object::TYPE_LIST:
{
xmlrpc_value* result = xmlrpc_array_new(env);
0
Kalobok #
Спасибо, попробуем. А еще вопрос: xmlrpc-c у вас какой? Текущий из портов или что-то свое?
0
grokinn #
xmlrpc у меня из svn а портов у меня нет, я это под дебианом держу:)
0
Kalobok #
Отлично, все заработало. Размер файлов, действительно, теперь показывает правильно. Насчет русских имен пока не пробовал, но радует уже то, что запустилась портовая версия — не надо геморроиться со сборкой из репозитория.

Еще раз спасибо.
–1
ivlis #
А мне больше ruTorrent нравится. Красивее и фич больше
0
meako #
lolwhat? Это гибрид uTorrent и rTorrent?
Нигде такого не встречал.
+2
ivlis #
Ага, это вебинтерфейс utorrent адаптированный к rtorrent.

wl500g.info/showthread.php?t=14256
–2
grokinn #
а вы проболи wtorrent открывать в IE8? это же ужос:) интересно у кого проблемы — МС не поддерживает стандарты как бещал и wtorrent не по стандартам написан?
–1
differentlocal #
Слава Б-гу, не пробовал. У меня нет IE8, как и винды вообще :)

А что там ужастного? Скриншотиком не поделитесь? Интересно просто.
0
grokinn #
wtorrent.png - image uploaded to Picamatic
0
Valery4 #
В «семерке» все нормально показывает (IE8)
0
zar0ku1 #
Спасибо автору за статью, так же советую посмотреть в сторону deluge мне лично показался проще и удобнее
0
pcmaniac #
Ага, месяц юзаю deluge — очень приятная вэб-морда, но Ajax вариант пока что не всё умеет, в частности — добавление торрентов у меня работает только переключившись на Classic.
–1
differentlocal #
Слышал, что он прожорливый к ресурсам очень. Нет?
0
pcmaniac #
Да, достаточно прожорливый, демон плюс ГУИ где-то за 100Mb весят.
+1
ivlis #
Ужас. И зачем это нужно всё?
0
pcmaniac #
Дык междумордие приятное до безобразия)
0
ivlis #
Не представляю что там может быть на 100 мегов. Или это как неро, со втронным варщмком кофе? :)
–1
zar0ku1 #
Согласен, ajax тема еще плохо доработана, тоже раньше переключался, а сейчас добавляться начало, правда не через вставку url, а через подгрузку самого файла торрента, раза со второго, с третьего, попробуйте, если что скину скриншоты
0
pcmaniac #
Он у меня на тестовой машинке болтается так что руки пока не доходят серьёзно изучать что там не так и почему.
0
inshower #
Под MacOS X Server 10.5 PPC отлично устанавливается и работает, правда был сильный гемморой со сборкой xmlrpc, пересборкой самого rtorrent под ppc (хотя спасибо macports). Но вцелом очень хорошо.
+1
differentlocal #
А старательно минусящие топик не хотят сказать, что им не понравилось? :)
0
SaveTheRbtz #
Стоит на сидбоксе дома под FreeBSD. Нареканий особых нет, разве что

1) чтото не особо он развивается последнее время… коммитов в свне нет давно. Так и торчит на 99ой ревизии
2) памяти ест много очень; на 1000+ пирах часто медленно качает из-за ошибок:
«file chunk write error cannot allocate memory»
хотя в конфиге прописал
max_memory_usage = 1200288000
и в /boot/loader.conf:
kern.maxdsiz=«2147483648»

Думаю попробовать transmission-webgui
0
ivlis #
У меня друг сталкивался с похожей проблемой, говорит это специфично для фряхи.
0
fuCtor #
Если не ошибаюсь (у себя ставил год назад) то rTorrent не поддерживает (не поддерживал) демонизацию, то откуд взялся в init.d файл запуска. Видать чтото пропустил за это время.

PS сам использую связку screen+rtorrent+wtorrent+самописную тулзу в трее )
0
Valery4 #
Он так и не потдерживает, просто init скрипт, как раз и запускает его через screen. В Gentoo скрипт готовый после установки, а в Archlinux, например — можно найти готовый и положить куда следует.
0
fuCtor #
Думаю тогда автору надо было упомянуть об этом, для полноты инструкции.
0
KorP #
2.6.29-gentoo-r3
нету :(
0
Valery4 #
После emrge rtorrent в /etc/init.d/rtorrentd нету?
Сейчас немогу проверить, возможно поставил пакет из тестовой ветки (~x86)
0
KorP #
да

net-p2p/rtorrent-0.8.4-r1
0
bermaglot #
/etc/init.d/rtorrentd — только если собиралось с USE флагом daemon. Это простенький скрипт, сводящийся к «screen — -dmS rtorrentd rtorrent».
0
KorP #
собирал как в мане выше, с xmlrpc и daemon
0
KorP #
на гунтру есть скрипты, копирнул, поправил, запустился
0
Valery4 #
А что за гунтру такой. Гугление ниасилил, несмог угодать, как пишется.
0
KorP #
в темноте кнопочки плохо видно :)
gentoo.ru/
0
Valery4 #
Тогда понятно, гугель эту страницу с коментами ещё не успел проиндексировать, а то бы меня сюда отправил бы по запросу (гунтру) :)
0
KorP #
:)
0
KorP #
0
KorP #
спасибо, в своё время так и не смог его завести6 в итоге поставил n2hell, правда с течением времени всё-равно перестал пользоваться веб-интерфейсом и по ссш рулю
0
KorP #
а не подскажите — как решить вопрос — mod_scgi masked в портах генты…
0
nitrexin #
echo «www-apache/mod_scgi ~x86» >> /etc/portage/package.keyword
0
KorP #
да, уже разобрался, пасибо
0
Iskin #
А зачем XML-RPC? Почему не более простой RESTfull?
0
fuCtor #
а зачем? XML-RPC тоже довольно прост и при этом функциональней
0
Iskin #
XML-RPC сложнее, раз вам требуются библиотеки :). RESTfull их не требует. Ему даже XML-парсер не нужен. Так что в итоге веб-интерфейс имел бы меньше зависимостей. Про функциональность не совсем верно в данном случае.
0
fuCtor #
Можно не использовать библиотеку и изобретать велосипед, но для работы REST требуется вебсервер как минимум, что есть тоже дополнительный компонент.

Про функциональность, не силен в REST, но можно ли там реализовать multycal, сложные вызовы с логикой (доступна команда if).
0
Iskin #
Для XML-RPC веб-сервер тоже нужен ;)
0
Iskin #
Про multicast я точно не понял, что вам нужно. Несколько вызовов в одном HTTP-запросе? Вызовы с if? Зачем это? Делайте if либо на стороне клиента, либо создавайте доп. URL. Умножение сущностей без необходимости — зло.
0
fuCtor #
именно так, иногда удобно завернуть несколько вызовов в один, что позволит ускорить обработку, если необходимо обрабатывать множество объектов. По такому принципу идет опрос состояния торентов в wTorrent.

0
Iskin #
Ничто не мешает вам послать несколько HTTP запросов в одном соединении, однако я бы сделал отдельный ресурс /status, который при GET запросе возвращал бы JSON (или XML при запросе /status.xml или текст при /status.txt).
0
Iskin #
Т. е. в консоли в консоли можно было бы написать
wget localhost/status.txt | grep Some torrent name
0
Iskin #
Основная идея REST — это как раз упрощение самой системы RPC, потому что что любую логику можно реализовать с помощью идеологии ресурсов и обычных HTTP-запросов.
+2
nitrexin #
мне больше нравиться rtquit, хотя особых отличий нет. если ты часто вне дома, тогда рационально использовать веб-морды, а так меня вполне устраивает и интерфейс rtorrent'a.
по поводу xmlrpc, у меня этот пакет требует cmake, так что какая разница с ним или без него.
–1
fear86 #
я вижу там есть «download directory», для меня это очень положительный момент.

Хочу организовоть дома файловое хранилище, интересно а бывают remote клиенты с возможностью указания(а лучше выбором) пути для загрузки фыйла, т.к. даже uremote не имеет такого.
0
KorP #
вродь всё сделал как описано, кроме редактирования /etc/conf.d/rtorrent ну и соответственно запуска автоматического, ибо нет у меня его, запустил через скрин, но wtorrent говорит что не видит rtorrent :((
0
Valery4 #
Были те же грабли на двух дистрах (Gentoo и Archlinux)
Пытался настроить через lighttpd — получал сообщение, что не видит рторрент, потом попробовал настроить апач, довольно быстро завелось. Поподались еще рекомендации настроить на порт 80, мне не помогло, хоть под апачем работает и на 80, но этого было не достаточно.
0
nitrexin #
мб статистический порт поставить и wtorrent натравить на него? в конфиге директива random_port = no
0
KorP #
статический порт где?
0
Lordwind #
1. На морде в один клик можно менять общую скорость закачки/отдачи?
2. Как обстоит работа в нестандартных браузерах/разрешениях/устройствах? (с айфона к примеру Flux управляеца на ура, Deluge — ваще никак)
0
ICD2 #
Warning: disk_free_space() [function.disk-free-space]: Permission denied in… чета потыкал права, так и не врубился где крутить
0
ICD2 #
А… посмотрел код wtorrent) уже врубился где крутить
0
wicharek #
Стоит дома на Arch Linux. Нареканий никаких, кроме того, что задать приоритет для скачивания отдельного файла из одного торрента получается не всегда с первого раза :) Ну и при добавлении нового торрента было бы неплохо, если была бы возможность выбирать отдельные файлы сразу. Правда может это поправили уже. У меня староватая версия.
0
darkk #
А мне вот transmission больше нравится.
Для него даже отдельный web-сервер не нужен и влезает он в жалкие 32 мегабайта оперативки ADSL-роутера :-)
0
evil_random #
torrentflux-b4rt с интересом наблюдает за этим топиком.
0
Lordwind #
не поминайте всуе эту порнографию — запускать на каждую закачку отдельный процесс это надо иметь стаж минимум 5 лет в Кащенко!
0
evil_random #
ну не знаю. меня всё устраивает.
или вы знаете что-то получше?
с возможностью деления прав пользователей, заливки 20 торрентов одним махом, и возможностью указать что делать при завершении закачки.
0
differentlocal #
Сидел пол года на ТоррентФлуксе. Хороший клиент, но меня в нем убивает прожорливость к ресурсам и глюки в веб-интерфейсе (локализация, кодировки).

А добила блокировка BitTornado на HDTracker.ru. После этого и ушел обратно на rtorrent.
0
Lordwind #
HDTracker — гуано, во-первых там админы хамло, а во-вторых почти все с него очень быстро появляеца на т.ру
0
differentlocal #
Торрентс.ру меня начал в последнее время бесить своими размерами.

Найти там то, что нужно — фильм (а не аниме, мангу, игру, саундрек или видео для айпода), в хорошем качестве (а не экранку, бета-версию или сатрип), на русском языке (а не на японском и не в фандабе, и без неотключаемых украинских субтитров) меньше чем за 20 минут стало практически невозможно.

Ну и паранойа на фоне копирастии у модераторов тоже несколько не радует, особенно когда действует принцип «сначала закроем раздачу, потом разберемся за что».

А админы — наплевать. Мне админы не надо, мне надо фильмы. Я и их форум-то не читаю.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.