Русский - little-brother/ds-search-plugin GitHub Wiki
Суть проблемы
При поисковом запросе в Download Station плагин поиска обращается на сервер трекера как браузер. В ответ плагин получает html-страницу, которую парсит и выводит результаты в Download Station, где каждая строка содержит ссылку на скачивание torrent-файла. Некоторые трекер-серверы требуют авторизацию не только для поиска, но и для скачивания, как напр. rutracker. Однако, при клике по строке в результатах поиска, Download Station пытается скачать данные по указанной ссылке, не передавая при этом данных авторизации. Плагин не может изменить данное поведение, т.к. его функционал ограничивается только предоставлением списка результатов, поэтому предлагается следующее решение: плагин вместо прямой ссылки на сервер-трекера отдает специально подготовленную ссылку на прокси lbgetproxy
на порт 54321
, который в свою очередь уже может отправлять запросы любого типа и при необходимости прикладывать к ним куки на основании GET-параметра q
ссылки, который содержит закодированные в base64 параметры реального запроса на сервер трекера, включая данные форм, куки и прочее.
Если трекер-сервер не доступен напрямую с устройства, то у контейнера lbgetproxy
есть возможность использовать tor-proxy
-контейнер, выполняющий проксирование запросов через сеть Tor.
Установка
Помимо установки самого плагина rutracker.dlm
в Download Station требуется запуск двух контейнеров Docker - lbgetproxy
для обработки данных от Download Station и при необходимости lbtorproxy
для проксирования запросов через сеть Tor.
Шаги по установке на DSM 6.x
- В
Центре пакетов
установитьDocker
. - Скачать файлы из Releases.
- Установить GET-прокси
lbgetproxy
: в Docker на вкладкеОбраз
>Добавить
>Добавить из файла
выбратьlbgetproxy
и запустить контейнер сРасширенными настройками
: на вкладкеНастройки портов
указать порт54321
для80
, а на вкладкеЗащита окружающей среды
задать переменныеPROXY_IP
равныйip
-адресу вашего устройства иPROXY_PORT
=9050
. Если параметры не заданы, то контейнер не будет использовать прокси. - Установить Tor-прокси
lbtorproxy
(опционально): в Docker на вкладкеОбраз
>Добавить
>Добавить из файла
выбратьlbtorproxy
. Далее надо расположить файлtorrc
в одной из папок NAS и отредактировать его, пропиписав мосты Tor, которые можно получить запросом у бота https://t.me/GetBridgesBot. Далее запустить контейнер сРасширенными настройками
: на вкладкеНастройки портов
указать порт9050
для9050
, а на вкладкеТом
добавить файлtorrc
с путем подключения/etc/tor/torrc
. Когда мосты потеряют актуальность, надо получить новые у бота, отредактироватьtorrc
и перезапустить контейнер. Проверить работоспособность контейнера можно командойcurl -L --socks5-hostname ip-NAS:9050 https://rutracker.org
. - В Download Station в настройках на вкладке
Поиск BT
>Добавить
>rutracker.dlm
. После чего нажатьРедактировать
и задать логин и пароль (их проверка не работает).
Если все сделано правильно, но поиск не возвращает результаты, то еще раз проверьте, что Tor удалось установить соединение.
Перезапуск Tor-контейнера
При простое более часа Tor сбрасывает соединение. Самое простое - опрашивать curl
какой-либо заблокированный ресурс раз в час и при его недоступности перезапустить контейнер. Скрипт надо добавить в планировщик DSM.
#!/bin/bash
status_code=$(curl --write-out %{http_code} --silent --connect-timeout 5 --output /dev/null --fail --socks5-hostname 127.0.0.1:9050 -I -L 'https://rutacker.org/')
if [ "$status_code" -ne 200 ](/little-brother/ds-search-plugin/wiki/-"$status_code"--ne-200-) ; then
synowebapi --exec api=SYNO.Docker.Container version=1 method=restart name="lbtorproxy1"
exit 0
fi
:warning: Если располагать скрипт в файле, а в планировщике запускать этот файл, то переносы в скрипте должны быть Unix, т.е. \n
.
Сборка
rutracker.dlm
rutracker.dlm
- это .tar.gz архив двух файлов из папки bt-rutracker. Для получения архива требуется наличие соответствующего упаковщика, напр. 7z.
echo off
del /Q rutracker
del /Q rutracker.dlm
7z a -ttar -r -sae rutracker ./bt-rutracker/*
7z a -tgzip -r -sae rutracker.dlm rutracker
lbgetproxy и lbtorproxy
lbgetproxy
и lbtorproxy
- это Docker образы. Для их сборок из dockerfile-ов требуется наличие установленного Docker в системе.
su root
cd get-proxy
docker build -t lb/get-proxy:v1 .
docker save --output lbgetproxy lb/get-proxy:v1
chmod 777 lbgetproxy
При сборке контейнера для ARM возможна проблема с его некорректной работой. Требуется добавить curl
в пакеты dockerfile.
lbtorproxy
собирается аналогично.