На сервер были установлены все оставшиеся полтора жестких диска от старого системного блока, установлена, тогда еще свежая, ubuntu server 10, установлен transmission, и прочие интересные игрушки, вроде squid, vmstat, apache, hostapd и подобного.
Теперь собственно цель данной статьи — дать ограниченный доступ к списку закачек с любого устройства и откуда угодно.
Первая реализация была простой- проксирование апачем и установка доступа средствами апача. Получалось что то вроде этого
### TRANSMISSION WEB INTERFACE ### #на самом трансмишене можно вообще отключить авторизацию, и разрешить только подключения на 127.0.0.1 #RPC RewriteRule ^/rpc(.*) http://127.0.0.1:9091/transmission/rpc$1 [P] RewriteRule ^/transmission/rpc(.*) http://127.0.0.1:9091/transmission/rpc$1 [P] #WEB RewriteRule ^/p2p/(.*) http://127.0.0.1:9091/transmission/web/$1 [P] # пробрасываем запросы ProxyPass /p2p http://127.0.0.1:9091/transmission ProxyPassReverse /p2p http://127.0.0.1:9091/transmission <Location /p2p> AuthType Basic AuthName "Private zone" AuthUserFile /etc/transmission-daemon/.htpasswd require valid-user Order Allow,Deny Allow from All </Location> <Location /rpc> AuthType Basic AuthName "Private zone" AuthUserFile /etc/transmission-daemon/.htpasswd require valid-user Order Allow,Deny Allow from All </Location> <Location /transmission/rpc > AuthType Basic AuthName "Private zone" AuthUserFile /etc/transmission-daemon/.htpasswd require valid-user Order Allow,Deny Allow from All </Location>
Но тут оказался жирный минус, как поется в одной песне комрадов из Dalida — «paroles paroles», пароли и постоянная авторизация, хоть и можно стало завести в transmission несколько пользователей и логировать всех апачем, но все равно это не то, не хватает простоты использования, но на некоторое время этого хватало.
С появлением планшетника все стало печально, вебморда трансмишена не самый лучший образец для тыкательного метода ввода, особенно если экран 7 дюймов.
Не долго думая была написана простая страничка, которая используя transmission-remote просто выводила содержимое, без форматирования и прочего. Всё здорово, авторизации не надо, напакостить никто и ничто не может, но одно «но» — не хватает божеского вида.
За несколько вечеров был дописан более менее до нормального вида
Возможности
- Можно показывать без авторизации список закачек
- Авторизация на странице никак не связана с авторизации на трансмишене
- Можно сделать нескольких авторизованных пользователей, которые смогут только добавить закачку, либо остановить раздачи/закачки
- Можно указать количество видимых для гостей страницы закачек( либо ограниченное, либо неограниченное, либо 0)
- Страница не привязана к серверу, она может размещаться на стороннем ресурсе и обращаться к transmission находящемуся в другой части света, или на «умном» роутере
- При нажатии на имя торрента открывается страничка откуда был он скачан либо страница поиска с его именем
Описывать установку веб сервера не буду, начнем с того, что у вас уже стоит вебсервер с php.
Установка
Скачиваем из репозитария в папку вебсервера
git clone git://github.com/fleaump/transmission-web-guest.git
заходим внутрь
cd transmission-web-guest
открываем редактором файл конфигурации
vi config.php
Описания конфига
$users — пользователи, если прописать просто
$users = NULL;
то у вас будет только гостевой доступ, без плюшек, если же нужны плюшки, то пропишем пользователей
$users = array ( "Vasya1" => "ParolVasin", "Petya1" => "ParolPetin" );
$tor_auth — строка авторизации у transmission, это собственно ключ главного костыля через который идет общение с сервером, синтаксис его следующий:
Если сервер находится там же где и страничка, и порт у него стандартный 9091
$tor_auth = " -n login:parol ";
Если сервер находится гдето далеко
$tor_auth = " serverhost:port -n login:parol ";
Ну или если у вас авторизации нет по какойто причине, то оставляем пустым
$tor_auth = " ";
$tor_path — то, чем мы собственно вынимаем данные, в данном случае это transmission-remote.
$tor_path = "nice -n 19 transmission-remote ";
запускам процесс вежливо, нам не нужны не вежливые процессы.
Хотя можно просто прописать с нормальным приоритетом:
$tor_path = "transmission-remote ";
$tor_max — вот тут надо пояснить, по умолчанию количество закачек у вас может быть сотня другая, и вам не особо важно что вы там качали полгода тому назад, данный параметр показывает добавленные последние N закачек, это N как раз в этой переменной и прописывается.
показывать гостю последние 15 закачек
$tor_max = 15;
показывать гостю все закачки
$tor_max = 100000;
ничего не показывать гостю
$tor_max = 0;
Теперь оставшееся
$show_stats показывать ли статистику о сервере
$show_stats_public показывать ли ее публично
по умолчанию стоит
$show_stats = true; $show_stats_public = true;
Так же есть такая фенечка как показывание краткого пути
$trim_path в данном месте мы указываем пути, которые отрезаем у торрента при отображении, чтобы к примеру не было
/opt/disk3/distr/system/
а просто
distr/system
достаточно прописать
$trim_path = array ("/opt/disk3/");
Так же описание нюансов есть в самом config.php.
«Проекту» без года неделя, обкатки временем еще не прошел, он будет еще некоторое время допиливаться.
Еще раз его цели
- Гостевой доступ.
- Удобство для тыканья с бесклавиатурных устройств.
Ссылки:
Git github.com/fleaump/transmission-web-guest
Как научить переименовывать transmission forum.ubuntu.ru/index.php?topic=165657.0
ссылка на оригинал статьи http://habrahabr.ru/post/156257/
Добавить комментарий