:lol: Подозреваю, что не подойдет.
У Novik libcurl сегфолтится, он же писал...
Я, грешным делом, обрадовался, что у Вас на роутере получилось.
P.S. Черт возьми, вот снова отвалилось две раздачи, которые через bt3....
Остальные нормально раздаются.
Printable View
Дело, скорее всего, вообще не в curl-е. По крайней мере на torrents.ru в соотв. ветке на bt3 жалуются все - и у кого libcurl с c-ares и у кого вообще версия rtorrent 0.7.9. С конкретным трекером что-то.
При такой нагрузке с роутером не будет нормально работать никакая веб-морда вообще. С нормальной машиной - еще можно что-то сообразить, если перенести нагрузку на серверный конец и минимизировать трафик.Quote:
у меня около 500 раздач. смотреть список раздач еще кое-как можно. при этом если идет 3-5 закачек
автору огромный респект !
надоел мне трансмишн долго искал вебгуй для rtorrent остановился на этом ибо он работает и не страшен на лицо :)
pascal@nas ~ $ eix -Ic rtorrent --or lighttpd
[I] net-p2p/rtorrent (0.8.4-r1@18.06.2009)
[I] www-servers/lighttpd (1.4.20@18.06.2009)
all
подскажите, а куда пропадают пиры?
при запуске рторрента первоначально появляютется реальное количество пиров, но раздача не идет. спустя пару минут большинство пиров из примерно полутора десятков раздач обнуляется. кое-где начинается раздача, но медленно...
трекер - торрентс.ру, причем не только bt3, но и другие.
подключение - через VPN, порты по тестам utorrent.com получаются закрыты. Может ли в этом быть проблема?
Если Вы обратили внимание, портится у Вас почему-то отнюдь не все закачки с такой меткой а одна (из примерно десяти). Причем портятся в одном символе, и более того - "верный" и "неверный" символы отличаются ровно одним битом. Почему такое может происходить - понятия не имею.
Опять же, пользователей у веб-морды достаточно много, полагаю, многие из них (да хоть бы я сам) русские метки пользуют. Однако ничего похожего на Ваш случай до сих пор ни у кого не случалось.
Вообщем, конструктивных мыслей у меня нет.
У меня все пашет правда обнаружилась одна фигня ...:
после реконнекта модема (adsl у нас крайне нестабильный)
rtorrrent не всегда восстанавливает закачку\раздачу приходится его рестартовать.
Вопрос с мордой не связан, но тут же все специалисты по rTorrent :)
Не сталкивался ли кто-нибудь с вылетами rTorrent при работе через mount_smbfs (FreeBSD 7.2-STABLE)?
А после повторного запуска слетает информация о хэше некоторых торрентов и они начинают заново хэшироваться.
Субъективно, чаще эти вылеты происходят при активной веб-морде.
Скажите, а есть возможность (или может ее можно добавить в следующих релизах?) устанавливать при добавлении торрента через веб-морду переменную "d.set_custom1="?
Значение для нее хотелось бы получать из пути к данным торрента относительно "Default directory for downloads".
Это позволило бы настроить перемещение файлов данных по завершении закачки.
Заранее, спасибо :)
1) Нет такой возможности. В custom1 хранится метка.
2) Не очень понятно, зачем это Вам. "пути к данным торрента" Вы в любой момент можете получить из d.get_base_path или f.multicall по файлам торрента - в зависимости от способа добавления, состава закачки и того, что именно Вам нужно.
Мне перекомпиляция curl-а c c-ares помогла - торрент с bt3.torrents.ru, который до этого мертво висел часами, делая вид, что у него ноль сидов, сразу же поднялся и пошел шустро скачиваться.
Сейчас стоят (под Debian lenny amd64):
- c-ares 1.6.0 (родной пакет из репозитария unstable)
- libcurl 7.19.5 (исходники из репозитария unstable, перекомпилированы с добавлением в аргументы configure "--enable-ares")
- xmlprc-c 1.16.17 (последний stable из svn)
- libtorrent 0.12.5 (с сайта автора)
- rtorrent 0.8.5 (оттуда же)
P.S. Скоро из-за rtorrent-а половину системных библиотек пересобирать придется...
P.P.S. И еще жаль было ради замены на новую версию прерывать рекордный аптайм rtorrent-а - он работал с 22 апреля до сегодняшнего дня.
Использовал эту "мордочку" на своем wl-500gPv2 ... Красота ))). Но постепенно возможности этого роутера меня перестали удовлетворять. Собрал небольшой компик на основе Mini-ITX в качестве домашнего шлюза, хранилища данных и по совместительству качалки. Поставил на него Ubuntu server, rtorrent и эту "мордочку", так как я к ней уже привык и она мне кажется очень удобной. Все работает, за исключением одного момента: совершенно неправильно показываются размеры скачиваемого файла, сколько скачано, сколько отдано, сколько осталось. В чем может быть проблема?
P.S.
Вместо lightthd я использовал apache2.
В невнимательном прочтении Вами данного треда, в первом посте которого написано (и на последующих страницах много раз повторено):
В debian (и судя по Вашей проблеме, в ubuntu тоже) используется очень стабильная, но очень древняя версия xmlrpc-c (libxmlrpc-c3) - 1.06. Из репозитория debian experimental можно взять 1.16.07, или скачать с svn на http://xmlrpc-c.sourceforge.net и скомпилировать последнюю stable версию 1.16.17. После чего придется пересобрать сам rtorrent с новой версией данной библиотеки.Quote:
Если вместо чисел больших 2Г веб-морда показывает отрицательные числа, следует рекомпилировать rtorrent с более свежей версией xmlrpc-c. Минимально необходимая - 1.11
Отлично :) , я как раз хотел Вам предложить:
1. Автоматическое формирование метки на основе выбранного относительного пути, куда сохраняются скачиваемые файлы.
Поясню:
- Есть базовый каталог для скачивания (то что в морде называется "Default directory for downloads").
- Относительно него обычно организовывают подкаталоги, типа "Video", "Music", "Soft" и т.д.
- Предлагаю добавить опцию в настройки, по которой в качестве метки использовался бы этот самый относительный путь.
2. Относительный путь, в принципе, можно хранить и независимо, например в custom2.
Для чего это нужно:
1. Ну тут все понятно - чтобы два раза не вводить метку, если метка используется для разделения закачек по категориям содержимого.
Например,
"Default directory for downloads" установлена в "/p2p/downloads/"
путь для сохранения /p2p/downloads/Video/DVD даст метку "Video/DVD"
2. А относительный путь нужен вот для чего:
on_finished = move_complete,"d.set_directory=/p2p/_ready/$d.get_custom2= ;execute=mv,-n,$d.get_base_path=,/p2p/_ready/$d.get_custom2="
То есть в каталоге "/p2p/_ready/" (место для размещения полностью скачанных торрентов) будет организована такая же структура каталогов, что и при добавлении закачек.
(при этом в качестве /p2p/_ready/ можно будет примонтировать внешний ресурс, доступный для общего доступа)
Прицепить репозиторий с ppa - https://launchpad.net/~sarvatt/+archive/ppa
Инструкции по подключению там же.
И мне пришлось самому пересобирать пакет rtorrent с xmlrpc-c версии 1.16
Пересобранный deb-пакет прикрепил к сообщению. Перед установкой распаковать из bz2
Attachment 4968
Проблема в том, что это не всем (мне, например) удобно. Собственно, для себя Вы сами можете организовать подобное в виде плагина - даже интерфейсных правок никаких не надо, можно обойтись только оформлением файла init.php, т.к. заведение меток уже есть. Пример обработки событий можно посмотреть в плагине erasedata (on_erase) или retrackers (on_insert). Только следует помнить, что метки храняться в кодированном (rawurlencode) виде. Впрочем, для меток латиницей это не существенно.
1) а скажите.. как правильнее всего установить 2 rtorrent'a (точнее как с разными конфигами запустить понятно) чтобы веб-морды от них были в разных папках (интересна сама свзяь каждой морды со своим rtorrent) ?
если я правильно понимаю, то в конфигах задать 5000 и 5001 (к примеру) а lighttpd просто указать оба порта в опции fastcgi ?
2) и еще.. как во 2й (относительно первого вопроса) морде сломать изменение скорости из веб-морды (т.е. чтобы какая в конфиге задана - изменить было нельзя) ?
А если кому вдруг интересны deb-пакеты для Debian lenny amd64 (libcurl3 7.19.5 с поддержкой c-ares, libxmlrpc-c3 1.16.17, libtorrent11 0.12.5, rtorrent 0.8.5, собранный со всем перечисленным) - пишите в ЛС, вышлю. Свой репозиторий открывать наружу неохота, но поделиться могу.
подключил версии рторрента и либторрента из свн-репозитория разработчика, заработал плагин сроттл, буду тестить бт3...)
Пока пробовал сделать так (в init.php):
При добавлении торрента лэйбл 123 не присваивается :(Code:if($theSettings->iVersion<0x804)
$s = 'on_insert</methodName><params>';
else
$s = 'system.method.set_key</methodName><params><param><value><string>event.download.inserted_new</string></value></param>';
send2RPC('<?xml version="1.0" encoding="UTF-8"?>'.
'<methodCall><methodName>'.$s.
'<param><value><string>auto_label</string></value></param>'.
'<param><value><string>branch=d.get_custom1=,"d.set_custom1=123"</string></value></param>'.
'</params>'.
'</methodCall>');
Поизучал примеры, погуглил... вроде же должно работать?
Продолжаю разбираться :)
1. Попутно нашел небольшой баг:
Не присваивается лэйбл из диалога добавления торрентов, потому что в index.html поле ввода лэйбла: id="tadd_label" name="tadd_label",
а в addtorrent.php проверяется isset($_REQUEST['label']).
Соответственно, исправил в addtorrent.php:
2. Осознал, что из init.php плагина я не смогу получить, что хочется. Мне же нужно для каждого торрента d.set_custom1= вызывать. Можно либо добавить checkbox на диалог добавления файлов и поправить addtorrent.php, чтобы автоматически custom1 формировать по относительному пути, либо расширить плагин, добавить пункт в контекстное меню типа "Auto label" и т.п.Code:if(isset($_REQUEST['tadd_label']))
$label = trim($_REQUEST['tadd_label']);
3. Придумал, как можно реализовать перемещение полностью закачанных торрентов без использования custom (и, как я понял всего 5 и они уже все заняты). Нужно добавить поле ввода "Directory for Ready" с кнопкой, по аналогии с полем "Directory". Если это новое поле не пустое, то по нему устанавливать евент on_finish для добавляемого торрента (к значению нового поля будет добавляться путь для сохранения относительно "Default directory for downloads").
Прблема в том, что не представляю, как такое в плагине реализовать, а постоянно править текст после обновления версии морды - не хорошо.
Ну как это не имеет, если у меня лэйбл стал добавляться из диалога только после этого исправления?
Через выпадающее меню - работало, а из диалога - нет.
Подскажите, пожалуйста, как в плагине установить переменные и евенты для добавленного через диалог добавления торрента?
Каким образом в плагине можно поймать факт добавления торрента?
UPD: Кажется понял, как это придумано (по принципу retracker). В init.php нужно на on_insert вешать вызов своего скрипта, а уже в него будут попадать фактические события добавления торрентов. И вот там уже можно будет делать что хочется.
Тьфу, блин, только увидел, что сообщение предыдущее порезалось. Попробую повторить.
Подтверждаю, у меня тоже заработало после указанной правки. Об аналогичной проблеме я в этой теме уже писал раньше, но решения не нашел.
Хотя, вероятно, настоящая проблема в функции CheckUpload() из script.js, которая по непонятным мне причинам не отрабатывает, а это решение просто ее обходит.
Так до конца и не понял, но решение нашел :-)
В script.js в функции CheckUpload надо
заменить наCode:if(dir.length)
frm.action = frm.action + 'dir_edit='+encodeURIComponent(dir);
Иначе, если указаны и директория, и метка, между dir_edit и label в запросе не добавляется "&".Code:if(dir.length)
frm.action = frm.action + 'dir_edit='+encodeURIComponent(dir)+'&';
После этого при неизменном addtorrent.php метка у меня стала добавляться.
P.S. Непонятно, почему, несмотря на это, dir_edit всегда обрабатывался корректно (без добавки "label" в конце), и как, несмотря на замену frm.action в функции CheckUpload, до addtorrent.php доходило значение tadd_label. Но я не большой специалист в веб-программировании, так что наверняка всему есть объяснение...
UPD: Похоже, понял. Метод для формы в index.html указан POST, а функция CheckUpload() добавляет аргументы к URI, т.е. с использованием метода GET. В этой ситуации все изначальные аргументы, переданные методом POST, сохраняются и, более того, имеют приоритет над одноименными аргументами, передаваемыми с использованием метода GET. Поправьте меня, если я ошибаюсь.
Тогда по-прежнему непонятно, почему при заполнении и поля dir_edit, и поля tadd_label, у меня не добавлялась метка, но при этом правильно назначался каталог. Если бы dir_edit брался не из POST, а из GET, то к введенному имени каталога из-за указанной выше ошибки дописывалось бы еще "label=...". Впрочем, неважно, если после исправления все работает.
Плагин "autotools", версия 1.3
Еще один мой плагин: "datadir", версия 1.0Quote:
Функции плагина:
1. "AutoLabel" : автоматическое формирование меток при добавлении нового
торрента через веб-морду.
2. "AutoMove" : автоматическое перенесение файлов торрента в другой каталог
после полного завершения закачки.
-------------------------------------------------------------------------------
"AutoLabel"
-------------------------------------------------------------------------------
Метка автоматически формируется, если:
- поле ввода метки в диалоге добавления торрента пустое,
- место, куда предполагается сохранять данные торрента является подкаталогом
для каталога, указанного в переменной "directory" файла rtorrent.rc.
Принцип формирования метки:
Если в rtorrent.rc задана переменная "directory = /usr/p2p/downloads"
и новый торрент сохраняется в /usr/p2p/downloads/Video/DVD/movie.avi,
то в качестве метки подставится "Video/DVD".
-------------------------------------------------------------------------------
"AutoMove"
-------------------------------------------------------------------------------
Скачанные файлы торрента переносятся в каталог, указаный в конфигурации,
с сохранением структуры каталогов относительно директории, указанной в
переменной "directory" файла "rtorrent.rc" и уже оттуда запускаются на раздачу.
Например:
Если в rtorrent.rc задана переменная "directory = /usr/p2p/downloads",
а в качестве каталога для готовых закачек указан каталог "/media/p2p",
то файлы загружавшиеся в "/usr/p2p/downloads/Video/Movie/*.avi" будут
перемещены в "/media/p2p/Video/Movie/*.avi" после завершения закачки.
Планировалось применять плагин в случае, когда в качестве каталога для
готовых закачек монтируется другой диск или SMB ресурс с общим доступом.
Данное решение работает на FreeBSD, но, по мнению Novik, "под ядром 2.4
(какое имеет место быть, например, на роутере), раздача с smb и nfs
монтированных разделов идти не будет. Вызов mmap, который используется
rtorrent на данных fs под данным ядром не работает".
Плагин корректно обрабатывает ситуацию, когда файлы разных торрентов
сохраняются в один каталог - делается перенос файлов по списку торрента,
а не просто перенос базового каталога.
Если в каталоге для загруженных файлов окажутся файлы с такими же именами,
как у завершившегося торрента, то они будут перезаписаны.
Плагин встраивается в rTorrent при загрузке веб-морды. Если, при неактивной
веб-морде, произойдет рестарт rTorrent-а, то плагин не переподключится. Если
хочется избежать этого, то нужно в конфигурации rtorrent.rc прописать примерно
следующее (в одну строчку):
system.method.set_key = event.download.finished,automove,
"execute={full_path_to_plugins/autotools/move.sh,full_path_to_php,$d.get_hash=}"
имя события нужно оставить таким же ("automove"), иначе при запуске веб-морды
установится вторая копия обработчика.
Для удобства выбора каталога для завершенных закачек на хосте рекомендуется
установить сервисный плагин _getdir
http://wl500g.info/showpost.php?p=150424&postcount=2314
(появится возможность навигации по файловой системе хоста)
-------------------------------------------------------------------------------
История версий:
-------------------------------------------------------------------------------
1.3
- исправлена ошибка, приводившая к вылету rTorrent, если в именах подкаталогов
торрента использовались служебные символы, типа ", ` и т.п.
- попытка избежать лишнего рехэширования, которое иногда возникает.
1.2
- плагин переименован в autotools и объединен с automove 1.0
- добавлена возможность устанавливать настройки в опциях веб-морды
1.1
- обеспечение совместимости с плагинами retrackers и edit
- плагин теперь запускается до retracker (runlevel.info: 5)
1.0
- первая версия
Замена текущего каталога данных торрента на другой.
Описание тут:
http://wl500g.info/showpost.php?p=151044&postcount=2337
Замечания
1) по run.sh (по следам собственных ошибок).
- Между $2 и & нужен пробел. Иначе на части систем это дело заблокируется.
- Лучше обойтись без dirname, и передавать полный путь отдельным параметром. На chroot системах этот самый dirname может быть фейком и возвращать пустую строку.
2) Есть подозрения, что будут неприятности на предмет совместимости с retrackers и edit. Нужно проверять d.get_custom3 - если оно 1, то никаких действий производить не надо - торрент добавлен в результате обработки уже существующей закачки. Ну и неплохо бы обеспечить старт плагина перед retrackers - для этого нужно создать в директории плагина файл runlevel.info содержащий число менее 10. Впрочем, тут смотрите сами, я не пробовал, возможно, и так, как есть все хорошо будет.
Я вывешу в первом посту ссылку на Ваш постинг, просьба при появлении следующих версий редактировать его по месту.
Сервисный плагин "_getdir", версия 1.0
Quote:
Функции плагина:
1. Предоставление другим плагинам возможности комфортной навигации
по файловой системе хоста. Показывает только директории, в которые
rtorrent может писать, и которые php может показать.
Плагин сделан по мотивам плагина choose от Novik.
-------------------------------------------------------------------------------
История версий:
-------------------------------------------------------------------------------
1.0
- первая версия
Рука не поднимается два длиннющих параметра в команду установки события вносить :)
Такую команду (в случае automove) могут и в конфиге rTorrent-а прописывать....
Исправил, архив с плагином обновил.
Вот по ходу дела у меня такое пожелание возникло - в веб-морде не хватает функции, чтобы существующие закачки перепривязать к другому каталогу с данными. Приходится удалять активный торрент, заново качать файл торрента или искать по содержимому в каталоге sessions. И еще такое подозрение, что торренты из sessions как-то кривовато rTorrent-ом съедаются...
Вот бы для этого удобный диалог, типа как в добавлении нового торрента, с выбором каталога.
А логичнее всего встроить такую функцию в плагин редактирования торрента.
Заметил одну неприятную особенность - файлы торрентов, которые загружены через диалог добавления, невозможно удалить с диска до закрытия окна веб-морды. Броузер Firefox, WinXP. Такое ощущение, что они где-то не закрываются после чтения.
Ну так допишите. Какие проблемы?
Не логично, т.к. в этом случае
1) невозможны операции одновременно над несколькими закачками
2) редактирование это, по сути, удаление и добавление. А если закачка была не завершенной - то еще и рехеширование. Что может быть весьма не быстрым. Смена же директории ничего из этого не требует.
javascript не имеет средств для работы с локальными файлами. Вообще. Как следствие - ничего "не закрывать" он в принципе не может.
То, что у Вас прописано в path_to_finished, должно редактироваться пользователем с интерфейса веб-морды. Уж никак не в файле конфигурации. По хорошему вообще нужно смотреть на реализацию данной функции в uTorrent.
Примеров добавления собственных страниц в "настройки" и их обработки достаточно много. См. retrackers, throttle.
Посмотрю. Хотя не очень понял, в чем именно проявляется "сьедение". Лично у меня все работает. Возможно, у симлинков попросту не выставлены должные права?
После трех успешно скачанных с bt3 торрентов четвертый пошел с большими проблемами - долго отваливался по таймауту, потом нашел всего несколько сидов, хотя реально их было сотни. Так что c-ares, действительно, не панацея. Но в ряде случаев помогает.