czyli pobieranie torrentów inaczej
Ostatnia zmiana: 2016-12-31 11:24

OpenWrt posiada kilka pakietów z klientami torrentów - z tych popularniejszych można by wymienić chociaż by ctorrent czy rtorrent. O ile na ctorrenta ludzie zwykle narzekają że wolno pobiera (chociaż to subiektywna opinia) o tyle rtorrent nie był standardowo dostępny w 8.09 a w nowszych wydaniach lubi się wykładać. Dodatkowym wymaganiem większości użytkowników jest istnienie "przyjaznego" interfejsu www do takiego programu.
W OpenWrt standardowo dostępny jest także jeszcze jeden program - Transmission, wyposażony właśnie w interfejs www. Transmission jest samodzielnym programem, nie wymaga instalacji serwera http czy php do działania.

Instalacja



    # opkg update
    # opkg install transmission-daemon transmission-web

Dostępny jest także pakiet transmission-cli - jeżeli ktoś potrzebuje obsługi z poziomu konsoli - ale jego instalacja nie jest wymagana.
Pakiet transmission-web jest opcjonalny i niezbędny tylko jeżeli chcemy mieć dostęp do programu przez przeglądarkę. Istnieje także pakiet transmission-control zawierający bardziej rozbudowany interfejs www.
W nowszych wydaniach OpenWrt/LEDE pakiety Transmission dostępne są w różnych odmianach bazujących na różnych bibliotekach kryptograficznych, więc trzeba wskazać konkretny pakiet podczas instalacji, np:


    # opkg install transmission-daemon-openssl transmission-web


Konfiguracja

Zawarta jest w pliku /etc/config/transmission. Z niej skrypty startowe robią właściwy plik konfiguracyjny transmisson, który jest przez niego akceptowany. Konfigurację należy wykonać wykorzystując uci.

Co należy zrobić po instalacji:
- włączyć uruchamianie transmission na starcie


    # uci set transmission.@transmission[0].enabled=1
    # uci commit transmission
    # /etc/init.d/transmission enable

- ustawić katalog gdzie mają być pobierane dane


    # uci set transmission.@transmission[0].download_dir=/mnt/sda1/torrenty
    # uci commit transmission

- uruchomić


    # /etc/init.d/transmission start

Resztę opcji ustawia się wg potrzeb. Zmiany w opcjach Transmission przez www nie mają odbicia w ustawieniach opcji UCI!

Pliki sesji Transmission przechowywane są w pamięci ram (domyślnie w katalogu /tmp), więc po restarcie routera program zapomina o pobieranych plikach. Aby tego uniknąć należy zmienić opcję config_dir tak, aby wskazywała na katalog na dysku, np.


    # uci set transmission.@transmission[0].config_dir=/mnt/sda1/torrenty/konfiguracja
    # uci commit transmission

Lista obsługiwanych opcji możliwych do ustawienia zawarta jest w domyślnym pliku konfiguracyjnym w pakiecie. Wszystkie opcje konfiguracyjne opisane są na stronie projektu: http://trac.transmissionbt.com/wiki/EditConfigFiles Należy ustawić parametry stosownie do swoich potrzeb i posiadanego łącza. Należy także zwrócić uwagę na opcję umask dzięki której można ustawić domyślne prawa dostępu do pobranych danych (option umask 0 daje dostęp dla wszystkich).

Przy takich standardowych ustawieniach:

  • katalog konfiguracyjny programu to /mnt/sda1/torrenty/konfiguracja
  • katalog gdzie pobierane są pliki to /mnt/sda1/torrenty
  • port na którym pracuje transmission to 51413
  • pełen dostęp do programu, bez ograniczeń do GUI od strony LAN.
Dostęp do interfejsu możliwy jest przez przeglądarkę pod adresem http://ip_routera:9091. Obsługa jest w miarę intuicyjna i nie wymaga dodatkowych wyjaśnień. Screenshot pokazuje całość:


(kliknij, aby powiększyć)

Jeżeli nie wystarcza nam dostęp przez www można użyć odpowiedniego gui jako normalnej aplikacji:

Uwagi końcowe

Jak dobry jest transmission - trudno powiedzieć, trzeba spróbować samemu. Na zachętę można powiedzieć, że transmission jest standardowym programem do torrentów instalowanym w Ubuntu - jednej z dystrybucji linuksa. Należy pamiętać o dostosowaniu parametrów wysyłania, liczby slotów i peerów stosowanie do posiadanego łącza, w przeciwnym przypadku możemy uzyskać problem z wysyceniem łącza lub zupełnym zablokowaniem routera.
Należy także pamiętać o odblokowaniu odpowiedniego portu na firewallu (51413 w tym przypadku).


    # uci add firewall rule
    # uci set firewall.@rule[-1].name=transmission
    # uci set firewall.@rule[-1].src=wan
    # uci set firewall.@rule[-1].target=ACCEPT
    # uci set firewall.@rule[-1].proto=tcp
    # uci set firewall.@rule[-1].dest_port=51413
    # uci commit firewall

Transmission po uruchomieniu widoczny jest w postaci kilku procesów, tak ma być i jest to normalne.
Zdalny dostęp do transmission od strony wan wymaga także odblokowania dostępu do portu 9091


    # uci add firewall rule
    # uci set firewall.@rule[-1].name=transmission_wan
    # uci set firewall.@rule[-1].src=wan
    # uci set firewall.@rule[-1].target=ACCEPT
    # uci set firewall.@rule[-1].proto=tcp
    # uci set firewall.@rule[-1].dest_port=9091
    # uci commit firewall

Można ustawić też limity pobrań w zależności od czasu itd. Opcji do ustawienia jest dużo.

Transmission umożliwia także blokowanie "złych" adresów IP, służy do tego opcja blocklist-enabled ustawiona na true oraz blocklist-url który ma wskazywać na adres z plikiem blokad.

Strona domowa projektu wraz z opisem opcji: http://www.transmissionbt.com/

Połączenie szyfrowane z Transmission można uzyskać wykorzystując dodatkowy program stunnel.

Nie należy uruchamiać Transmission jeżeli nie jest jeszcze zamontowany dysk. Taka sytuacja może mieć miejsce, jeżeli mamy dysk na USB który jest montowany w trakcie uruchomienia systemu. Transmission może zostać uruchomione wcześniej niż będzie wykryty i dostępny nośnik w systemie. W takim przypadku należy posłużyć się mechanizmem uruchamiania serwisów po zamontowaniu dysku, opisane jest to w dokumencie HDD/USB/SDMOD.

Wykonanie skryptu po zakończeniu pobierania

Od wersji 2.00 Transmission wzbogacił się o możliwość wykonania skryptu po zakończeniu pobierania. Odpowiadają za to dwie opcje

  • script_torrent_done_enabled: true/false - wykonanie skryptu po pobraniu torrenta
  • script_torrent_done_filename: nazwa w/w skryptu
(do ustawienia w /etc/config/transmission)
Do skryptu przekazywane są następujące zmienne

  • TR_TORRENT_NAME: nazwa pobranego pliku lub katalogu
  • TR_TORRENT_HASH: jego hash
  • TR_TIME_LOCALTIME: data pobrania
  • TR_APP_VERSION: numer wersji transmission
  • TR_TORRENT_ID: ID torrenta wg transmission
  • TR_TORRENT_DIR: katalog gdzie są pobrane dane składowane
Przykład zastosowania: