Гостевой доступ к transmission

в 9:58, , рубрики: transmission, Песочница, метки:

Прогресс не стоит на месте, с увеличением количества устройств на квадратный метр появилась потребность как то разделить их обязанности. Таким образом, плавно, единственный компьютер был сплавлен по частям и на его месте появились пара ноутбуков, микросервер на базе Intel Atom, свитч.
На сервер были установлены все оставшиеся полтора жестких диска от старого системного блока, установлена, тогда еще свежая, 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 просто выводила содержимое, без форматирования и прочего. Всё здорово, авторизации не надо, напакостить никто и ничто не может, но одно «но» — не хватает божеского вида.
За несколько вечеров был дописан более менее до нормального вида

Внешний вид

Гостевой доступ к transmission

Возможности

  • Можно показывать без авторизации список закачек
  • Авторизация на странице никак не связана с авторизации на трансмишене
  • Можно сделать нескольких авторизованных пользователей, которые смогут только добавить закачку, либо остановить раздачи/закачки
  • Можно указать количество видимых для гостей страницы закачек( либо ограниченное, либо неограниченное, либо 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

Автор: fleaump

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js