1 (edytowany przez andrzej69 2013-01-28 12:32:08)

Temat: [HOWTO] rTorrent + (GUI) ruTorrent (na nginx albo lighttpd)

Po zabawach z transmission przyszedł czas na trochę lżejszego klienta.  Jako że sam w sobie nie posiada GUI to dorzucimy takowe dzięki ruTorrent'owi. Od razu mówie że bez extroota nie da rady, chyba że masz naprawdę duży flash. Mi aktualnie /overlay zajmuje 23MB więc miej to na uwadze, żeby nie zabrakło miejsca.

Od razu z góry mówię, na TP-LINKu 1043ND na pewno jako systemu plików do zapisu nie używać ntfs. Prawie osiwiałem przez to badziewie głowiąc się czemu klienty się wysypują, a dysk wypina, otóż ten system plików pożera zasoby w zastraszającym tempie... po przejściu na ext4 nie ma już żadnych problemów.

Ale wracając do sedna, przeszukując internet natrafiłem na artykuł który już pewnie każdy widział tzn. http://openrouter.info/forum/viewtopic. … &t=471 i na nim będę się wzorował, jednak sam w sobie nie przyniósł spodziewanych efektów i nie do końca wszystko działało więc postanowiłem go trochę zaktualizować.

Więc tak, standardowo zaczynamy od instalacji rtorrenta i screena, żeby to mogło sobie chodzić w tle cały czas (emulacja demona).

Instalacja rTorrenta
opkg update
opkg install rtorrent screen

I już, szybko, łatwo i przyjemnie. Szkoda że wersja to 0.8.6 gdzie najnowsza stabilna to 0.9.2, ale jeszcze za mało umiem żeby to skompilować pod openWRT, więc bawimy się tym czym mamy.

Konfiguracja rTorrenta

Przykład pliku jest pod adresem http://libtorrent.rakshasa.no/browser/t … .rc#latest
Natomiast ja dam swój, zawsze to jakaś baza do zabawy wink

Na początek tworzymy plik konfiguracyjny

touch /root/.rtorrent.rc

A potem uzupełniamy go:

min_peers = 40
max_peers = 100
min_peers_seed = 10
max_peers_seed = 50
max_uploads = 3
download_rate = 0
upload_rate = 0
directory = /mnt/torrent
session =   /mnt/torrent/session
port_range = 50800-50801
port_random = yes
check_hash = no
use_udp_trackers = yes
encryption = allow_incoming, try_outgoing
dht = on
dht_port = 6881
peer_exchange = yes
encoding_list = UTF-8
scgi_local = /tmp/rtorrent.socket
schedule = chmod,0,0,"execute=chmod,777,/tmp/rtorrent.socket"
xmlrpc_dialect = i8

W pliku, /mnt/torrent zmieniamy na katalog gdzie będziemy ściągać wink I oba katalogi oczywiście muszą istnieć, więc tworzymy je przed uruchomieniem rtorrenta.

teraz w konsoli wydajemy polecenie

rtorrent

Jeśli się uruchomił to znaczy że wszystko poszło ok. Wychodzimy przez Ctrl+Q (^Q)

Teraz tworzymy plik startowy który zrobi nam z rtorrenta demona działającego w tle.

touch /etc/init.d/rtorrent

I uzupełniamy go:

#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2012 OpenWrt.org

START=99

start() {
        rm -f /tmp/rtorrent.socket || true
        rm -f /mnt/torrent/session/rtorrent.lock || true
        HOME=/root screen -dmS torrenty rtorrent
}

stop() {
        killall -2 rtorrent
}

W tym przypadku /mnt/torrent również zamieniamy na katalog który podaliśmy wyżej.

Troche skrypt startowy zmodyfikowałem, ponieważ nie podobało mi się że torrent był zabijany na siłe, teraz dostaje sygnał żeby się zamknąć i przed tym informuje trackery że idzie spać, a po ponownym włączeniu nie zaczyna sprawdzania plików, co u mnie trwa wieki. Usuwanie plikow na starcie, to na wypadek jakby rtorrent zginął śmiercią marną zanim po sobie posprzątał, inaczej by nie wystartował.

Wypadałoby jeszcze naszego klienta odblokować na firewallu, wiec na końcu /etc/config/firewall dodajemy:

config rule
        option name 'rtorrent_tcp'
        option src 'wan'
        option target 'ACCEPT'
        option proto 'tcpudp'
        option dest_port '50800:50801'

config rule
        option name 'rtorrent_dht'
        option src 'wan'
        option target 'ACCEPT'
        option proto 'udp'
        option dest_port '6881'

Wiem że mógłbym podać komendy UCI, ale używając nano jakoś lepiej mi się pisze bezpośrednio w configu wink

Aby zmiany weszły w życie, restartujemy firewall komendą:

/etc/init.d/firewall restart

A na koniec ustawiamy rtorrenta na autostart i uruchamiamy.

chmod 755 /etc/init.d/rtorrent 
/etc/init.d/rtorrent enable
/etc/init.d/rtorrent start
Instalacja PHP

Jako że o wyborze serwera napisze później, to zaczniemy od rzeczy niezbędnej czyli PHP.

opkg install php5-fastcgi

Potem: (ustawiamy katalog z którego będzie czytało php na /www/rutorrent, żeby nie kolidowało np z opcjami routera) oraz kilku zmiennych niezbędnych do działania

sed -i -e 's/doc_root = \"\/www\"/doc_root = \"\/www\/rutorrent\"/g' /etc/php.ini
sed -i -e 's/;cgi.force_redirect/cgi_force_redirect/' /etc/php.ini
sed -i -e 's/;cgi.redirect_status_env = ;/cgi.redirect_status_env = \"yes\"/' /etc/php.ini

Na koniec

/etc/init.d/php5-fastcgi enable
/etc/init.d/php5-fastcgi start

I już php chodzi w tle i jest gotowe na dodanie serwera który z tego skorzysta.

Instalacja ruTorrenta

Wykonujemy:

cd /www
wget http://rutorrent.googlecode.com/files/rutorrent-3.5.tar.gz
tar zxvf rutorrent-3.5.tar.gz
rm rutorrent-3.5.tar.gz

Co pobrało nam ruTorrenta, teraz należy tylko dokonać jednej zmiany w pliku konfiguracyjnym.

W /www/rutorrent/config/config.php zamieniamy

$scgi_port = 5000;
$scgi_host = "127.0.0.1";

na

$scgi_port = 0;
$scgi_host = "unix:///tmp/rtorrent.socket";
Wybór serwera WWW

Na openWRT z lekkich rozwiązań mamy do wyboru lighttpd i nginx. Pokażę metodę jak postawić oba i jeśli taka Twoja wola, to mogą działać równocześnie jak u mnie, na różnych portach. Który wybierzesz to już zależy od Ciebie. Ja patrząc po wynikach z top zauważyłem że nginx leży trochę niżej niż lighttpd ale różnica jest niewielka, wiec narazie testuję oba.

Nginx

Zaczniemy od nginx'a.

Więc szybka instalacja:

opkg install nginx

Następnie podmieniamy /etc/nginx.conf na

user nobody nogroup;
worker_processes  1;

error_log  /var/log/nginx/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    index index.php index.html index.htm;
    default_type text/html;

    sendfile        on;
    keepalive_timeout  65;
    #gzip  on;

    server {
        listen       9093;
        server_name  localhost;

        charset utf-8;

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 32k;
        fastcgi_buffers 4 32k;
        fastcgi_busy_buffers_size 32k;
        fastcgi_temp_file_write_size 32k;
        client_body_timeout 10;
        client_header_timeout 10;
        send_timeout 60;        # 60 sec should be enough, if experiencing alof of timeouts, increase this.
        output_buffers 1 32k;
        postpone_output 1460;
    
        root /www/rutorrent;
    
        auth_basic            "rutorrent";
        auth_basic_user_file  htpasswd;
    
        location /RPC2 {
                include scgi_params;
                scgi_pass unix:/tmp/rtorrent.socket;
        }

        location ~ \.php$ {
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;

            if (-f $request_filename) {
                    # Only throw it at PHP-FPM if the file exists (prevents some PHP exploits)
                    fastcgi_pass    127.0.0.1:1026;     # The upstream determined above
            }
        }
    }    
}

tworzymy plik scgi_params

 touch /etc/nginx/scgi_params

i zupełniamy o

scgi_param  REQUEST_METHOD     $request_method;
scgi_param  REQUEST_URI        $request_uri;
scgi_param  QUERY_STRING       $query_string;
scgi_param  CONTENT_TYPE       $content_type;

scgi_param  DOCUMENT_URI       $document_uri;
scgi_param  DOCUMENT_ROOT      $document_root;
scgi_param  SCGI               1;
scgi_param  SERVER_PROTOCOL    $server_protocol;
scgi_param  HTTPS              $https if_not_empty;

scgi_param  REMOTE_ADDR        $remote_addr;
scgi_param  REMOTE_PORT        $remote_port;
scgi_param  SERVER_PORT        $server_port;
scgi_param  SERVER_NAME        $server_name;

Na koniec dodajemy użytkownika, z racji że jest włączona prośba o hasło przed wejściem na stronę. Jeśli ktoś chce to wyłączyć to wystarczy za komentować poprzez # auth_basic "Restricted"; i auth_basic_user_file  htpasswd; oraz pominąć poniższy krok

W konsoli uruchamiamy poniższy kod zmieniając <<login>> i <<haslo>> (nawiasy ostre są tylko do wyróżnienia miejsca w kodzie) na swój login i halo jakiego chcesz używać.

printf "<<login>>:$(openssl passwd -apr1 <<haslo>>)\n" >> /etc/nginx/htpasswd

po czym wykonujemy

/etc/init.d/nginx enable
/etc/init.d/nginx start

I już nginx chodzi na http://192.168.1.1:9093

Lighttpd

Więc na start

opkg install lighttpd libsqlite3 lighttpd-mod-access lighttpd-mod-auth  lighttpd-mod-scgi lighttpd-mod-fastcgi

potem plik /etc/lighttpd/lighttpd.conf podmieniamy na

server.modules = (
   "mod_access",
   "mod_auth",
   "mod_fastcgi",
   "mod_scgi"
)

server.network-backend = "write"
server.document-root = "/www/rutorrent/"
index-file.names = ( "index.php", "index.html", "default.html", "index.htm", "default.htm" )

mimetype.assign = (
   ".pdf"   => "application/pdf",
   ".class" => "application/octet-stream",
   ".pac"   => "application/x-ns-proxy-autoconfig",
   ".swf"   => "application/x-shockwave-flash",
   ".wav"   => "audio/x-wav",
   ".gif"   => "image/gif",
   ".jpg"   => "image/jpeg",
   ".jpeg"  => "image/jpeg",
   ".png"   => "image/png",
   ".css"   => "text/css",
   ".html"  => "text/html",
   ".htm"   => "text/html",
   ".js"    => "text/javascript",
   ".txt"   => "text/plain",
   ".dtd"   => "text/xml",
   ".xml"   => "text/xml"
 )

static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

server.port = 9092
server.pid-file = "/var/run/lighttpd.pid"

fastcgi.server = (
      ".php" => ((
      "host" => "127.0.0.1",
      "port" => 1026,
       ))
)

auth.debug = 2
auth.backend = "plain"
auth.backend.plain.userfile = "/etc/lighttpd/lighttpd.user"

auth.require = (
   "/" =>
        (
         "method"  => "basic",
         "realm"   => "rutorrent",
         "require" => "user=admin"
         )
)

scgi.server = (
     "/RPC2" =>
          ( "127.0.0.1" =>
               (
        "socket" => "/tmp/rtorrent.socket",
        "check-local" => "disable",
        "disable-time" => 0,
                )
         )
)
server.event-handler = "poll"

Po czym dodajemy usera, bo ten serwer też jest zabezpieczony hasłem, robimy to poprzesz (login i pass admin, jeśli wpiszesz coś innego to w "require"=> "user=admin" admina też zmień na wybraną nazwę użytkownika) wykonanie kodu

echo "admin:admin" >> /etc/lighttpd/lighttpd.user

No i na koniec standardowo ustawienie autostartu i włączenie serwera

/etc/init.d/lighttpd enable
/etc/init.d/lighttpd start

I teraz możemy korzystać z lighttpd pod adresem http://192.168.1.1:9092

Zeby dostać się do interfejsu rTorrenta na routerze wpisujemy screen -r, żeby z tego wyjść nie zabijając klienta wciskamy CTRL+A+D, a żeby go zamknąć to CTRL+A CTRL+F CTRL+Q

Mam nadzieję że komuś się to przyda wink

2

Odp: [HOWTO] rTorrent + (GUI) ruTorrent (na nginx albo lighttpd)

Biorąc pod uwagę że tamten poradnik napisałem dwa lata temu, to tak, mogło się zmienić.

Nie wywala się podczas dodawania torrenta przez gui?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3 (edytowany przez andrzej69 2013-01-28 12:35:58)

Odp: [HOWTO] rTorrent + (GUI) ruTorrent (na nginx albo lighttpd)

Dodawałem przez nTorrent, bo ruTorrent jakoś nie zawsze łapie, ale sam rTorrent sie nie wysypuje. Muszę jeszcze pokombinować nad nową wersją bo dodali obsługę magnetlink'ów, a to by sie przydało

4 (edytowany przez zdzichu6969 2013-01-28 09:04:31)

Odp: [HOWTO] rTorrent + (GUI) ruTorrent (na nginx albo lighttpd)

Masz dwie literowki na końcu poradnika w starcie lighttpd.

Poradnik jest bardzo dobry. Jeszcze bym dodał obsługę  serwera uhttpd.  :-)

+ Dopisz jak sie dodaje torrenty nie z poziomu www, bo sie wykłada.;)

RB760iGS + RB260GS / Ryzen 5 2660 / 16G DDR4 / MiniITX - Inea 1G (https://i.imgur.com/TLbJVDw.png)
RB951-2HnD / Celeron J1900 / 4G DDR3 / MiniITX - Satpol 100M

5 (edytowany przez andrzej69 2013-01-28 12:39:10)

Odp: [HOWTO] rTorrent + (GUI) ruTorrent (na nginx albo lighttpd)

Hm u mnie działa dodawanie z www bądź nTorrenta.

Dodajemy wciskając backspace i podając albo ścieżkę, albo adres. Z Magnetlink'ami nie działa jeszcze, ale staram się skompilować nowsza wersję (tylko idzie jak po grudzie)

Bądź jest opcja dodania watchdir czyli katalogu do którego zagląda rTorrent i jak coś znajdzie to zaczyna pobierać, ale to już jest opisane na stronie projektu.

6

Odp: [HOWTO] rTorrent + (GUI) ruTorrent (na nginx albo lighttpd)

nTorrent zdalnie wymaga otwarcia 5000 z wanu ?

RB760iGS + RB260GS / Ryzen 5 2660 / 16G DDR4 / MiniITX - Inea 1G (https://i.imgur.com/TLbJVDw.png)
RB951-2HnD / Celeron J1900 / 4G DDR3 / MiniITX - Satpol 100M

7 (edytowany przez andrzej69 2013-01-28 12:53:45)

Odp: [HOWTO] rTorrent + (GUI) ruTorrent (na nginx albo lighttpd)

Ja używam go z HTTP i podane namiary na port od GUI czyli 9092 albo 9093 i mountpoint na RPC2

edit:
Rozglądałem się i z uhttpd chyba nie da się tego odpalić bo nie obsługuje scgi.

8 (edytowany przez zdzichu6969 2013-01-28 13:05:16)

Odp: [HOWTO] rTorrent + (GUI) ruTorrent (na nginx albo lighttpd)

Co do watchdira

schedule = watch_directory,5,5,load_start=/home/[user]/watch/*.torrent
schedule = untied_directory,5,5,stop_untied=
schedule = tied_directory,5,5,start_tied=

Do pliku ~/root/rtorrent.rc

Zaraz zobacze czy dziala

Edit, Działa

RB760iGS + RB260GS / Ryzen 5 2660 / 16G DDR4 / MiniITX - Inea 1G (https://i.imgur.com/TLbJVDw.png)
RB951-2HnD / Celeron J1900 / 4G DDR3 / MiniITX - Satpol 100M

9 (edytowany przez build000 2015-03-20 20:11:48)

Odp: [HOWTO] rTorrent + (GUI) ruTorrent (na nginx albo lighttpd)

Czy ten poradnik zadziała z najnowszym rtorrent-rpc z trunka jak i też z rutorrent-3.6 (ostatnia stabilna wersja) - co ewentualnie trzeba zmienić/skorygować/i.t.d. ?

EDIT:
Nie jest ciekawie jak na dzień dobry:

root@OpenWrt:~# rtorrent
rtorrent: Error in option file: ~/.rtorrent.rc:13: Command "use_udp_trackers" does not exist.
(...)
rtorrent: Error in option file: ~/.rtorrent.rc:17: Command "peer_exchange" does not exist.
(...)
rtorrent: Error in option file: ~/.rtorrent.rc:21: Command "xmlrpc_dialect" does not exist.
(...)

watch też leży (błąd widoczny wewnątrz klienta w konsoli):

Scheduled command failed: watch_directory: Command "load_start" does not exist.

To akurat chyba wynika ze zmiany komend po przejściu na >= rpc-0.9* - duże zmiany i cholercia trzeba kmbinejszen ostro (chyba sobie odpuszczę póki co).
Niektóre komendy do obsługi w konsoli też nie działają jak dawniej - krótko mówiąc - póki co ujnia wink

Z kompletu zainstalowane m.in. niżej wymienione programy/biblioteki :

xmlrpc-c - 1.39.0-1
xmlrpc-c-common - 1.39.0-1
xmlrpc-c-internal - 1.39.0-1
xmlrpc-c-server - 1.39.0-1
libtorrent - 0.13.4-git-0-72e908707f01ee01a9b4918436c64348878b63f7
rtorrent-rpc - 0.9.4-git-0-7343e33a6a0d279179b304a380bf011f1c8be64a

Ktoś potrafi to okiełznać z nową wersją rtorrent/rpc/xmlrpc/php/js/i.t.d. ?

EDIT 2:
oki - z jednym póki co sobie poradziłem (pozmieniały się komendy - chodzi o watch), powinno być tak:

schedule = watch_directory,5,5,"load.start=/mnt/torrent/watch/*.torrent"
schedule = untied_directory,5,5,stop_untied=
schedule = tied_directory,5,5,start_tied=

EDIT 3:
Zalecana przez autora metoda na znalezienie różnic oczywiście w openwrt nie zadziała (oczywiście wiadomo - nie jest do końca prawidłowa ale nie o to chodzi - po prostu find brakuje opcji):

root@OpenWrt:~# for i in `find . -name \*.php -or -name \*.js`; do
>   sed -f https://github.com/rakshasa/rtorrent/blob/master/doc/scripts/update_commands_0.9.sed $i > $i.tmp;
>   mv $i.tmp $i;
> done;
find: unrecognized: -or
BusyBox v1.22.1 (2015-03-20 13:59:27 CET) multi-call binary.

Usage: find [-HL] [PATH]... [OPTIONS] [ACTIONS]

Search for files and perform actions on them.
First failed action stops processing of current file.
Defaults: PATH is current directory, action is '-print'

    -L,-follow    Follow symlinks
    -H        ...on command line only
    -xdev        Don't descend directories on other filesystems
    -maxdepth N    Descend at most N levels. -maxdepth 0 applies
            actions to command line arguments only
    -mindepth N    Don't act on first N levels
    -depth        Act on directory *after* traversing it

Actions:
    ( ACTIONS )    Group actions for -o / -a
    ! ACT        Invert ACT's success/failure
    ACT1 [-a] ACT2    If ACT1 fails, stop, else do ACT2
    ACT1 -o ACT2    If ACT1 succeeds, stop, else do ACT2
            Note: -a has higher priority than -o
    -name PATTERN    Match file name (w/o directory name) to PATTERN
    -iname PATTERN    Case insensitive -name
    -path PATTERN    Match path to PATTERN
    -ipath PATTERN    Case insensitive -path
    -regex PATTERN    Match path to regex PATTERN
    -type X        File type is X (one of: f,d,l,b,c,...)
    -perm MASK    At least one mask bit (+MASK), all bits (-MASK),
            or exactly MASK bits are set in file's mode
    -mtime DAYS    mtime is greater than (+N), less than (-N),
            or exactly N days in the past
    -user NAME/ID    File is owned by given user
    -group NAME/ID    File is owned by given group
    -size N[bck]    File size is N (c:bytes,k:kbytes,b:512 bytes(def.))
            +/-N: file size is bigger/smaller than N
    -prune        If current file is directory, don't descend into it
If none of the following actions is specified, -print is assumed
    -print        Print file name
    -print0        Print file name, NUL terminated
    -exec CMD ARG ;    Run CMD with all instances of {} replaced by
            file name. Fails if CMD exits with nonzero

EDIT 4:
Chyba sukces (do pupy takie na ramię broń, hehe) - może to ktoś bardziej ogarnięty potwierdzić ? (przynajmniej jeśli chodzi o przykładowy /root/.rtorrent.rc - co z resztą to nawet nie wiem jak to ugryźć) - opisany w tutorialu .rtorrent.rc po niezbędnych zmianach powinien wyglądać tak (zaremowane stare opcje i ich nowe odpowiedniki poniżej):

min_peers = 40
max_peers = 100
min_peers_seed = 10
max_peers_seed = 50
max_uploads = 3
download_rate = 0
upload_rate = 0
directory = /mnt/torrent
session =   /mnt/torrent/session
port_range = 50800-50801
port_random = yes
check_hash = no
#use_udp_trackers = yes
trackers.use_udp = yes
encryption = allow_incoming, try_outgoing
dht = on
dht_port = 6881
#peer_exchange = yes
protocol.pex.set = yes
encoding_list = UTF-8
scgi_local = /tmp/rtorrent.socket
schedule = chmod,0,0,"execute=chmod,777,/tmp/rtorrent.socket"
#xmlrpc_dialect = i8
network.xmlrpc.dialect.set = i8
#schedule = watch_directory,5,5,load_start=/mnt/torrent/watch/*.torrent
schedule = watch_directory,5,5,"load.start=/mnt/torrent/watch/*.torrent"
schedule = untied_directory,5,5,stop_untied=
schedule = tied_directory,5,5,start_tied=

EDIT 5:
Jeszcze jedna uwaga co do tutoriala - projekt rutorrent przeniesiony na github, także ścieżka (przy założeniu, że mamy skompilowane wget z ssl) jest obecnie np. taka https://bintray.com/artifact/download/n … 3.6.tar.gz
Log z zasysu:

root@OpenWrt:/www# wget https://bintray.com/artifact/download/novik65/generic/rutorrent-3.6.tar.gz
--2015-03-20 19:08:17--  https://bintray.com/artifact/download/novik65/generic/rutorrent-3.6.tar.gz
Resolving bintray.com... 108.168.194.93, 108.168.194.90
Connecting to bintray.com|108.168.194.93|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://dl.bintray.com/novik65/generic/rutorrent-3.6.tar.gz [following]
--2015-03-20 19:08:18--  http://dl.bintray.com/novik65/generic/rutorrent-3.6.tar.gz
Resolving dl.bintray.com... 5.153.24.114
Connecting to dl.bintray.com|5.153.24.114|:80... connected.
HTTP request sent, awaiting response... 302 
Location: http://d29vzk4ow07wi7.cloudfront.net/5870cddef717c83560e89aee56f2b7635ed1c90d?response-content-disposition=attachment%3Bfilename%3D%22rutorrent-3.6.tar.gz%22&Policy=eyJTdGF0ZW1lbnQiOiBbeyJSZXNvdXJjZSI6Imh0dHAqOi8vZDI5dnprNG93MDd3aTcuY2xvdWRmcm9udC5uZXQvNTg3MGNkZGVmNzE3YzgzNTYwZTg5YWVlNTZmMmI3NjM1ZWQxYzkwZD9yZXNwb25zZS1jb250ZW50LWRpc3Bvc2l0aW9uPWF0dGFjaG1lbnQlM0JmaWxlbmFtZSUzRCUyMnJ1dG9ycmVudC0zLjYudGFyLmd6JTIyIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNDI2ODc0OTU4fSwiSXBBZGRyZXNzIjp7IkFXUzpTb3VyY2VJcCI6IjAuMC4wLjAvMCJ9fX1dfQ__&Signature=UburjXBiOLSPEFGD2CQ6Su3wvUyh4xXbDLenAsFQeFsIpJPePpktkDA0Pm3FzxLFpN1nrfT8ug49YIun9QheoJBvg7zzejJPEs2obT699tcMtQREQ~IQa8n9GD-36BEcCKOIlGmFb3bpbQo9TgvJrmXLt8k~dIpTaX9fBtD73n4UUzOz~EvPzQlDESHAWf8q3cGqgRdidrkyxTQ8OMZZlhp06XpiVtUM9zNX3NunhrNuIoedegaIvExT5M-hCglH9s5ccmdsqPVzOgVhN7kyi7HyW2Xnj3uNpIMNYqfO0eioBVCQvbKT6WoKvF8Ul1TpJnhS-T44SwknZNqEsuutHg__&Key-Pair-Id=APKAIQIOJCQ5764M5VTQ [following]
--2015-03-20 19:08:18--  http://d29vzk4ow07wi7.cloudfront.net/5870cddef717c83560e89aee56f2b7635ed1c90d?response-content-disposition=attachment%3Bfilename%3D%22rutorrent-3.6.tar.gz%22&Policy=eyJTdGF0ZW1lbnQiOiBbeyJSZXNvdXJjZSI6Imh0dHAqOi8vZDI5dnprNG93MDd3aTcuY2xvdWRmcm9udC5uZXQvNTg3MGNkZGVmNzE3YzgzNTYwZTg5YWVlNTZmMmI3NjM1ZWQxYzkwZD9yZXNwb25zZS1jb250ZW50LWRpc3Bvc2l0aW9uPWF0dGFjaG1lbnQlM0JmaWxlbmFtZSUzRCUyMnJ1dG9ycmVudC0zLjYudGFyLmd6JTIyIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNDI2ODc0OTU4fSwiSXBBZGRyZXNzIjp7IkFXUzpTb3VyY2VJcCI6IjAuMC4wLjAvMCJ9fX1dfQ__&Signature=UburjXBiOLSPEFGD2CQ6Su3wvUyh4xXbDLenAsFQeFsIpJPePpktkDA0Pm3FzxLFpN1nrfT8ug49YIun9QheoJBvg7zzejJPEs2obT699tcMtQREQ~IQa8n9GD-36BEcCKOIlGmFb3bpbQo9TgvJrmXLt8k~dIpTaX9fBtD73n4UUzOz~EvPzQlDESHAWf8q3cGqgRdidrkyxTQ8OMZZlhp06XpiVtUM9zNX3NunhrNuIoedegaIvExT5M-hCglH9s5ccmdsqPVzOgVhN7kyi7HyW2Xnj3uNpIMNYqfO0eioBVCQvbKT6WoKvF8Ul1TpJnhS-T44SwknZNqEsuutHg__&Key-Pair-Id=APKAIQIOJCQ5764M5VTQ
Resolving d29vzk4ow07wi7.cloudfront.net... 54.230.228.66, 54.192.231.116, 54.230.230.65, ...
Connecting to d29vzk4ow07wi7.cloudfront.net|54.230.228.66|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 254520 (249K) [application/unknown]
Saving to: 'rutorrent-3.6.tar.gz'

rutorrent-3.6.tar.gz             100%[==========================================================>] 248.55K   172KB/s   in 1.4s   

2015-03-20 19:08:20 (172 KB/s) - 'rutorrent-3.6.tar.gz' saved [254520/254520]

Zmieniły się również w samym projekcie rutorrent niektóre ścieżki, np. /*/rutorrent/config/config.php na /*/rutorrent/conf/config.php.
Jak nietrudno się domyśleć ze względu na duże zmiany w samym rpc (komendy, opcje, i.t.d.) strona http:/192.168.1.1:9092 się tylko wiecznie ładuje...

10

Odp: [HOWTO] rTorrent + (GUI) ruTorrent (na nginx albo lighttpd)

Przez dwa lata miało prawo się znów pozmieniać smile

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

11 (edytowany przez build000 2015-03-20 21:12:29)

Odp: [HOWTO] rTorrent + (GUI) ruTorrent (na nginx albo lighttpd)

Cezary - jak to dalej pogonić ? - bo chyba mnie czeka wielka przebudowa /etc/php.ini, /www/rutorrent/*, i.t.d.

EDIT:
póki co znalazłem na razie w sieci sposób na logowanie błędów xlmrpc/rtorrenta dopisujemy do /root/.rtorrent.rc :

# rtorrent full log
log.open_file = "rtorrent.log", (cat,/tmp/rtorrent.log.,(system.pid))  
log.open_file = "tracker.log", (cat,/tmp/tracker.log.,(system.pid))  
log.add_output = "info", "rtorrent.log"  
log.add_output = "dht_debug", "tracker.log"  
log.add_output = "tracker_debug", "tracker.log"  
# Instrumentation (rpc, data dump excluded)

log.open_file = "rpc.log", (cat,/tmp/rpc.log.,(system.pid))
log.add_output = "rpc_events", "rpc.log"

log.open_file = "rpc_dump.log", (cat,/tmp/rpc_dump.log.,(system.pid))
log.add_output = "rpc_dump", "rpc_dump.log"

Wygląda na to, że chyba w ogóle nie działa to jak powinno (brak wystąpień dla lighttpd w kontekście rtorrenta - dodałem do lighttpd.conf logowanie błędów):

root@OpenWrt:/tmp# netstat -tulnp | grep rtorrent
tcp        0      0 0.0.0.0:50801           0.0.0.0:*               LISTEN      21510/rtorrent
udp        0      0 0.0.0.0:6881            0.0.0.0:*                           21510/rtorrent
root@OpenWrt:/tmp# cat rtorrent.log.***
1426879628 N rtorrent main: Starting thread.
1426879628 N rtorrent scgi: Starting thread.
root@OpenWrt:~# cat /var/log/lighttpd/error.log
2015-03-20 19:54:03: (log.c.164) server started 
2015-03-20 19:54:10: (server.c.1558) server stopped by UID = 0 PID = 21477 
2015-03-20 19:54:15: (log.c.164) server started 

Użyta metoda logowania rpc w chwili wybrania przykładowej strony http://192.168.1.1:9092/ (autoryzacja hasłem/loginem działa) daje w wyniku tylko to:

root@OpenWrt:/tmp# cat rpc_dump.log.***
1426880173 scgi
---DUMP---
<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>system.client_version</methodName><params>
</params></methodCall>
---END---
1426880173 scgi
---DUMP---
Status: 200 OK
Content-Type: text/xml
Content-Length: 152

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param><value><string>0.9.4</string></value></param>
</params>
</methodResponse>

---END---
1426880173 scgi
---DUMP---
<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>system.api_version</methodName><params>
</params></methodCall>
---END---
1426880173 scgi
---DUMP---
Status: 200 OK
Content-Type: text/xml
Content-Length: 148

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param><value><string>8</string></value></param>
</params>
</methodResponse>

---END---
1426880173 scgi
---DUMP---
<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>to_kb</methodName><params>
<param><value><i8>1024</i8></value></param>
</params></methodCall>
---END---
1426880173 scgi
---DUMP---
Status: 200 OK
Content-Type: text/xml
Content-Length: 152

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param><value><string>  1.0</string></value></param>
</params>
</methodResponse>

---END---
1426880173 scgi
---DUMP---
<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>system.multicall</methodName><params><param><value><array><data>
<value><struct><member><name>methodName</name><value><string>get_directory</string></value></member><member><name>params</name><value><array><data>
</data></array></value></member></struct></value>
<value><struct><member><name>methodName</name><value><string>get_session</string></value></member><member><name>params</name><value><array><data>
</data></array></value></member></struct></value>
<value><struct><member><name>methodName</name><value><string>system.library_version</string></value></member><member><name>params</name><value><array><data>
</data></array></value></member></struct></value>
<value><struct><member><name>methodName</name><value><string>set_xmlrpc_size_limit</string></value></member><member><name>params</name><value><array><data>
<value><i4>67108863</i4></value>
</data></array></value></member></struct></value>
<value><struct><member><name>methodName</name><value><string>get_name</string></value></member><member><name>params</name><value><array><data>
</data></array></value></member></struct></value>
<value><struct><member><name>methodName</name><value><string>get_port_range</string></value></member><member><name>params</name><value><array><data>
</data></array></value></member></struct></value>
</data></array></value></param></params></methodCall>
---END---
1426880173 scgi
---DUMP---
Status: 200 OK
Content-Type: text/xml
Content-Length: 1339

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param><value><array><data>
<value><struct>
<member><name>faultCode</name>
<value><i4>-506</i4></value></member>
<member><name>faultString</name>
<value><string>Method 'get_directory' not defined</string></value></member>
</struct></value>
<value><struct>
<member><name>faultCode</name>
<value><i4>-506</i4></value></member>
<member><name>faultString</name>
<value><string>Method 'get_session' not defined</string></value></member>
</struct></value>
<value><array><data>
<value><string>0.13.4</string></value>
</data></array></value>
<value><struct>
<member><name>faultCode</name>
<value><i4>-506</i4></value></member>
<member><name>faultString</name>
<value><string>Method 'set_xmlrpc_size_limit' not defined</string></value></member>
</struct></value>
<value><struct>
<member><name>faultCode</name>
<value><i4>-506</i4></value></member>
<member><name>faultString</name>
<value><string>Method 'get_name' not defined</string></value></member>
</struct></value>
<value><struct>
<member><name>faultCode</name>
<value><i4>-506</i4></value></member>
<member><name>faultString</name>
<value><string>Method 'get_port_range' not defined</string></value></member>
</struct></value>
</data></array></value></param>
</params>
</methodResponse>

---END---
1426880173 scgi
---DUMP---
<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>execute</methodName><params>
<param><value><string>sh</string></value></param>
<param><value><string>-c</string></value></param>
<param><value><string>'/www/rutorrent/php/test.sh' stat '/www/rutorrent/share/users/admin/settings/1974958934'</string></value></param>
</params></methodCall>
---END---
1426880173 scgi
---DUMP---
Status: 200 OK
Content-Type: text/xml
Content-Length: 140

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param><value><i8>0</i8></value></param>
</params>
</methodResponse>

---END---
1426880173 scgi
---DUMP---
<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>d.multicall</methodName><params><param><value><string>main</string></value></param><param><value><string>d.get_hash=</string></value></param><param><value><string>d.is_open=</string></value></param><param><value><string>d.is_hash_checking=</string></value></param><param><value><string>d.is_hash_checked=</string></value></param><param><value><string>d.get_state=</string></value></param><param><value><string>d.get_name=</string></value></param><param><value><string>d.get_size_bytes=</string></value></param><param><value><string>d.get_completed_chunks=</string></value></param><param><value><string>d.get_size_chunks=</string></value></param><param><value><string>d.get_bytes_done=</string></value></param><param><value><string>d.get_up_total=</string></value></param><param><value><string>d.get_ratio=</string></value></param><param><value><string>d.get_up_rate=</string></value></param><param><value><string>d.get_down_rate=</string></value></param><param><value><string>d.get_chunk_size=</string></value></param><param><value><string>d.get_custom1=</string></value></param><param><value><string>d.get_peers_accounted=</string></value></param><param><value><string>d.get_peers_not_connected=</string></value></param><param><value><string>d.get_peers_connected=</string></value></param><param><value><string>d.get_peers_complete=</string></value></param><param><value><string>d.get_left_bytes=</string></value></param><param><value><string>d.get_priority=</string></value></param><param><value><string>d.get_state_changed=</string></value></param><param><value><string>d.get_skip_total=</string></value></param><param><value><string>d.get_hashing=</string></value></param><param><value><string>d.get_chunks_hashed=</string></value></param><param><value><string>d.get_base_path=</string></value></param><param><value><string>d.get_creation_date=</string></value></param><param><value><string>d.get_tracker_focus=</string></value></param><param><value><string>d.is_active=</string></value></param><param><value><string>d.get_message=</string></value></param><param><value><string>d.get_custom2=</string></value></param><param><value><string>d.get_free_diskspace=</string></value></param><param><value><string>d.is_private=</string></value></param><param><value><string>d.is_multi_file=</string></value></param></params></methodCall>
---END---
1426880173 scgi
---DUMP---
Status: 200 OK
Content-Type: text/xml
Content-Length: 312

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<fault>
<value><struct>
<member><name>faultCode</name>
<value><i4>-506</i4></value></member>
<member><name>faultString</name>
<value><string>Method 'd.multicall' not defined</string></value></member>
</struct></value>
</fault>
</methodResponse>

---END---
root@OpenWrt:/tmp# 

Jak widać sporo błędów związanych z użytymi komendami dla rpc (w starej wersji).

PODSUMOWANIE:
Czyli na początek potrzebna szprytna komenda, która podmieni wszelkie odwołania/komendy/opcje rpc na nowsze ich wersje zgodnie z https://github.com/rakshasa/rtorrent/bl … ds_0.9.sed w całym /*/rutorrent/*(być może i w innych miejscach w systemie, np. w /etc/php.ini).
Ktoś ogarnia jak to zrobić z poziomu openwrt ?

12

Odp: [HOWTO] rTorrent + (GUI) ruTorrent (na nginx albo lighttpd)

to od seda jest. zrób to sedem.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13

Odp: [HOWTO] rTorrent + (GUI) ruTorrent (na nginx albo lighttpd)

A jakaś konkretna komenda ? - coś mi nie idzie... wink

14

Odp: [HOWTO] rTorrent + (GUI) ruTorrent (na nginx albo lighttpd)

sed -f tocoś.sed  /nazwa/pliku ?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

15 (edytowany przez build000 2015-03-23 21:23:35)

Odp: [HOWTO] rTorrent + (GUI) ruTorrent (na nginx albo lighttpd)

no oki - ale to nie działa chyba do końca. Użyłem ze strony projektu komendy, ubrałem je w skrypt i wykonałem wewnątrz katalogu rutorrent z wcześniej wypakowanego archiwum (na kompie), spakowałem to nazat w *tar.gz, skopiowałem scp do routera, rozpakowałem i poprawiłem chown. Użyty skrypt na kompie:

#!/bin/bash
for i in `find . -name \*.php -or -name \*.js`; do
  sed -f update_commands_0.9.sed $i > $i.tmp;
  mv $i.tmp $i;
done

Nie zgłaszał z pozoru większych błędów a i tak nadal nie ma efektu, przykładowy /tmp/rpc_dump.log.*** (przed i po chown -R root:root /www/rutorrent):
http://wklej.org/id/1667461/
screeny: http://i.imgur.com/reGb2az.png , http://i.imgur.com/a5M2kay.png
Strona się już wyświetla i chyba prawie wszystko wydaje się być dobrze, ale po kliknięciu np. w ikonkę opcji w zakładce "Dziennik" następuje wysyp błędów:

[20.03.2015 22:04:09] WebUI started.
[20.03.2015 22:04:09] User Webservera nie ma dostępu do programu 'stat'. ruTorrent może mieć problemy z funkcjonalnością.
[20.03.2015 22:04:09] ruTorrent nie może odczytać UID usera rTorrenta. Niektóre funkcjonalności mogą być niedostępne.
[20.03.2015 22:04:09] User rTorrenta nie ma dostępu do programu 'stat'. Niektóre funkcjonalności mogą być niedostępne.
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_bind' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_check_hash' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_dht_port' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_directory' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_download_rate' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_network.http.cacert.set' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_network.http.capath.set' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_network.http.proxy_address.set' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_ip' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_max_downloads_div' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_max_downloads_global' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_max_file_size' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_max_memory_usage' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_max_open_files' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_max_open_http' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_max_peers' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_max_peers_seed' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_max_uploads' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_max_uploads_global' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_min_peers_seed' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_min_peers' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_protocol.pex.set' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_network.port_open.set' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_upload_rate' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_port_random' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_port_range' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_preload_min_size' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_preload_required_rate' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_preload_type' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_proxy_address' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_receive_buffer_size' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_safe_sync' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_network.scgi.dont_route.set' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_send_buffer_size' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_session' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_session_lock' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_session_on_completion' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_split_file_size' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_split_suffix' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_timeout_safe_sync' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_timeout_sync' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_trackers.numwant.set' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_trackers.use_udp.set' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_max_uploads_div' not defined [getsettings]
[20.03.2015 22:12:44] XMLRPC Error: Method 'get_max_open_sockets' not defined [getsettings]

Czyli jednak to nie działa należycie, owe sed (a raczej xmlrpc nie kupuje tych zmian - sam sed zatrybił prawidłowo sprawdzałem niezależnie od skryptu).
Dodam, że nie mam dysku - wszystko robię na ubi (to tylko przymiarki do docelowego rozwiązania).
Ogólnie działa pobieranie i dodanie torrenta, odświeżanie połączenia z trackerem z poziomu rutorrent, ale np. próba zmiany priorytetu plików w danej pozycji torrent kończy się takim komunikatem w zakładce "Dziennik":

[20.03.2015 23:20:32] XMLRPC Error: Wrong object type. [setprio]

Poza tym datę pokazuje tylko prawidłowo w logach, w zakładce "Dziennik" - ta pokazywana w interfejsie webgui jest opóźniona o 1 godzinę (co pośrednio i poniekąd wynika z błędów powyżej: komenda get_timeout*)
Co można jeszcze z tym zrobić żeby znów to kimało bez problemu jak na wcześniejszych wersjach rtorrent/rpc/i.t.d.?

EDIT 1
brak "stat" dało się łatwo ominąć - wystarczyło włączyć w busybox i przekompilować na nowo firmware - jeden błąd mniej. wink
(oczywiście stat dla usera zdefiniowanego w /etc/lighttpd/lighttpd.user nie działa - prawdopodobnie brak czegoś w konfiguracji lighttpd, php, i.t.d.)

EDIT 2
Tak przy okazji warto też przed (re)kompilacją włączyć w busybox "stty" aby później prostą komendą:

stty stop undef
stty start undef

unormować obsługę komend konsolowych w rtorrent.
Na dobrą sprawę można to wrzucić do /etc/rc.local

16

Odp: [HOWTO] rTorrent + (GUI) ruTorrent (na nginx albo lighttpd)

Witam

Udało mi się stabilnie odpalić rtorrenta i rutorrenta na CC RC3. Kluczem do sukcesu było użycie najnowszej wersji rutorrenta (3.7) oraz rtorrent-rpc - 0.9.4-git z domyślnego repo openwrt dla CC.

Moje pliki konfiguracyjne:

etc\lighttpd\lighttpd.conf

server.modules = (
   "mod_access",
   "mod_auth",
   "mod_fastcgi",
   "mod_scgi"
)

server.network-backend = "write"
server.document-root = "/www/rutorrent/"
index-file.names = ( "index.php", "index.html", "default.html", "index.htm", "default.htm" )

mimetype.assign = (
   ".pdf"   => "application/pdf",
   ".class" => "application/octet-stream",
   ".pac"   => "application/x-ns-proxy-autoconfig",
   ".swf"   => "application/x-shockwave-flash",
   ".wav"   => "audio/x-wav",
   ".gif"   => "image/gif",
   ".jpg"   => "image/jpeg",
   ".jpeg"  => "image/jpeg",
   ".png"   => "image/png",
   ".css"   => "text/css",
   ".html"  => "text/html",
   ".htm"   => "text/html",
   ".js"    => "text/javascript",
   ".txt"   => "text/plain",
   ".dtd"   => "text/xml",
   ".xml"   => "text/xml"
 )

static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

server.port = 9092
server.pid-file = "/var/run/lighttpd.pid"

fastcgi.server = (
      ".php" => ((
      "host" => "127.0.0.1",
      "port" => 1026,
      "bin-path" => "/usr/bin/php-cgi",
       ))
)

auth.debug = 2
auth.backend = "plain"
auth.backend.plain.userfile = "/etc/lighttpd/lighttpd.user"

auth.require = (
   "/" =>
        (
         "method"  => "basic",
         "realm"   => "rutorrent",
         "require" => "user=admin"
         )
)

scgi.server = (
     "/RPC2" =>
          ( "127.0.0.1" =>
               (
        "socket" => "/tmp/rtorrent.socket",
        "check-local" => "disable",
        "disable-time" => 0,
                )
         )
)
server.event-handler = "poll"
server.max-request-size=100000000
server.upload-dirs=("/overlay")
#server.network-backend="write"
fastcgi.debug = 1
server.errorlog = "/overlay/torrenty/error.log"
 

\www\rutorrent\conf\config.php

<?php
    // configuration parameters

    // for snoopy client
    @define('HTTP_USER_AGENT', 'Mozilla/5.0 (Windows NT 6.0; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', true);
    @define('HTTP_TIME_OUT', 30, true);    // in seconds
    @define('HTTP_USE_GZIP', true, true);
    $httpIP = null;                // IP string. Or null for any.

    @define('RPC_TIME_OUT', 5, true);    // in seconds

    @define('LOG_RPC_CALLS', false, true);
    @define('LOG_RPC_FAULTS', true, true);

    // for php    
    @define('PHP_USE_GZIP', false, true);
    @define('PHP_GZIP_LEVEL', 2, true);

    $schedule_rand = 10;            // rand for schedulers start, +0..X seconds

    $do_diagnostic = true;
    $log_file = '/tmp/errors.log';        // path to log file (comment or leave blank to disable logging)

    $saveUploadedTorrents = true;        // Save uploaded torrents to profile/torrents directory or not
    $overwriteUploadedTorrents = false;     // Overwrite existing uploaded torrents in profile/torrents directory or make unique name

    $topDirectory = '/';            // Upper available directory. Absolute path with trail slash.
    $forbidUserSettings = false;

    //$scgi_port = 5000;
    //$scgi_host = "127.0.0.1";

    // For web->rtorrent link through unix domain socket 
    // (scgi_local in rtorrent conf file), change variables 
    // above to something like this:
    //
    $scgi_port = 0;
    $scgi_host = "unix:///tmp/rtorrent.socket";

    $XMLRPCMountPoint = "/RPC2";        // DO NOT DELETE THIS LINE!!! DO NOT COMMENT THIS LINE!!!

    $pathToExternals = array(
        "php"     => '',            // Something like /usr/bin/php. If empty, will be found in PATH.
        "curl"    => '',            // Something like /usr/bin/curl. If empty, will be found in PATH.
        "gzip"    => '',            // Something like /usr/bin/gzip. If empty, will be found in PATH.
        "id"    => '',            // Something like /usr/bin/id. If empty, will be found in PATH.
        "stat"    => '',            // Something like /usr/bin/stat. If empty, will be found in PATH.
    );

    $localhosts = array(             // list of local interfaces
        "127.0.0.1", 
        "localhost",
    );

    $profilePath = '../share';        // Path to user profiles
    $profileMask = 0777;            // Mask for files and directory creation in user profiles.
                        // Both Webserver and rtorrent users must have read-write access to it.
                        // For example, if Webserver and rtorrent users are in the same group then the value may be 0770.

    $tempDirectory = null;            // Temp directory. Absolute path with trail slash. If null, then autodetect will be used.

    $canUseXSendFile = true;        // Use X-Sendfile feature if it exist

    $locale = "UTF8";

\root\.rtorrent.rc

min_peers = 40
max_peers = 100
min_peers_seed = 10
max_peers_seed = 50
max_uploads = 3
download_rate = 0
upload_rate = 0
directory = /overlay/torrenty
session =   /overlay/torrenty/session
port_range = 50800-50801
port_random = yes
check_hash = no
#use_udp_trackers = yes
encryption = allow_incoming, try_outgoing
dht = on
dht_port = 6881
#peer_exchange = yes
encoding_list = UTF-8
scgi_local = /tmp/rtorrent.socket
#scgi_port = 5000;
#scgi_host = "127.0.0.1";
#schedule = chmod,0,0,"execute=chmod,777,/tmp/rtorrent.socket"
#xmlrpc_dialect = i8

Pozostałe rzeczy robiłem według poradnika. Pozdro.

wdr3600 + e3372 // 250gb extroot // rtorent// minidlna

17 (edytowany przez mavcin 2017-06-20 19:42:15)

Odp: [HOWTO] rTorrent + (GUI) ruTorrent (na nginx albo lighttpd)

LEDE 17.01.2 r3435 - instalujemy co potrzeba

opkg install rtorrent-rpc screen php7 php7-cgi php7-mod-json
rtorrent

tworzymy ~/.rtorrent.rc domyślny plik konfiguracyjny z minimalnymi zmianami

# This is an example resource file for rTorrent. Copy to
# ~/.rtorrent.rc and enable/modify the options as needed. Remember to
# uncomment the options you wish to enable.

# Maximum and minimum number of peers to connect to per torrent.
#
#throttle.min_peers.normal.set = 40
#throttle.max_peers.normal.set = 100

# Same as above but for seeding completed torrents (-1 = same as downloading)
#
#throttle.min_peers.seed.set = 10
#throttle.max_peers.seed.set = 50

# Maximum number of simultanious uploads per torrent.
#
#throttle.max_uploads.set = 15

# Global upload and download rate in KiB. "0" for unlimited.
#
#throttle.global_down.max_rate.set_kb = 0
#throttle.global_up.max_rate.set_kb = 0

# Default directory to save the downloaded torrents.
#
directory.default.set = /mnt/usb

# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
#
session.path.set = ~/.rtorrent.session

# Watch a directory for new torrents, and stop those that have been
# deleted.
#
#schedule2 = watch_directory,5,5,load.start=./watch/*.torrent
#schedule2 = untied_directory,5,5,stop_untied=

# Close torrents when diskspace is low.
#
#schedule2 = low_diskspace,5,60,close_low_diskspace=100M

# The ip address reported to the tracker.
#
#network.local_address.set = 127.0.0.1
#network.local_address.set = rakshasa.no

# The ip address the listening socket and outgoing connections is
# bound to.
#
#network.bind_address.set = 127.0.0.1
#network.bind_address.set = rakshasa.no

# Port range to use for listening.
#
#network.port_range.set = 6890-6999

# Start opening ports at a random position within the port range.
#
#network.port_random.set = no

# Check hash for finished torrents. Might be usefull until the bug is
# fixed that causes lack of diskspace not to be properly reported.
#
#pieces.hash.on_completion.set = no

# Set whether the client should try to connect to UDP trackers.
#
#trackers.use_udp.set = yes

# Alternative calls to bind and ip that should handle dynamic ip's.
#
#schedule2 = ip_tick,0,1800,ip=rakshasa
#schedule2 = bind_tick,0,1800,bind=rakshasa

# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
#
# The example value allows incoming encrypted connections, starts unencrypted
# outgoing connections but retries with encryption if they fail, preferring
# plaintext to RC4 encryption after the encrypted handshake
#
# protocol.encryption.set = allow_incoming,enable_retry,prefer_plaintext

# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to "disable" (completely disable DHT), "off" (do not start DHT),
# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).
# The default is "off". For DHT to work, a session directory must be defined.
# 
# dht.mode.set = auto

# UDP port to use for DHT. 
#
#dht.port.set = 6881

# Enable peer exchange (for torrents not marked private)
#
#protocol.pex.set = yes

system.umask.set = 0000
session.use_lock.set = no
network.scgi.open_local = /tmp/rpc.socket
schedule2 = scgi_permission,0,0,"execute.nothrow=chmod,777,/tmp/rpc.socket"

tworzymy katalog sesji

mkdir ~/.rtorrent.session

uruchamiamy rtorrent

screen -dmSfn rtorrent rtorrent
ruTorrent

pobieramy i rozpakowujemy

cd /www
wget https://github.com/Novik/ruTorrent/archive/v3.8.tar.gz
tar zxvf v3.8
mv ruTorrent-3.8 rutorrent

w pliku /www/rutorrent/conf/config.php zakomentujmy linie

$scgi_port = 5000;
$scgi_host = "127.0.0.1";

a odkomentujemy te

$scgi_port = 0;
$scgi_host = "unix:///tmp/rpc.socket";

podajemy też ścieżke do php

"php" => '/usr/bin/php-cgi'

w pliku /www/rutorrent/conf/plugins.ini włączamy te wtyczki których rzeczywiście potrzebujemy, dodajemy

[_getdir]
enabled = no
[_noty]
enabled = no
[_noty2]
enabled = no
[_task]
enabled = no
[autotools]
enabled = no
[check_port]
enabled = no
[chunks]
enabled = no
[cookies]
enabled = no
[cpuload]
enabled = no
[create]
enabled = no
[data]
enabled = no
[datadir]
enabled = no
[diskspace]
enabled = no
[edit]
enabled = no
[erasedata]
enabled = no
[extratio]
enabled = no
[extsearch]
enabled = no
[feeds]
enabled = no
[filedrop]
enabled = no
[geoip]
enabled = no
[history]
enabled = no
[httprpc]
enabled = no
[ipad]
enabled = no
[loginmgr]
enabled = no
[lookat]
enabled = no
[mediainfo]
enabled = no
[ratio]
enabled = no
[retrackers]
enabled = no
[rpc]
enabled = user-defined
[rss]
enabled = no
[rssurlrewrite]
enabled = no
[rutracker_check]
enabled = no
[scheduler]
enabled = no
[screenshots]
enabled = no
[seedingtime]
enabled = no
[show_peers_like_wtorrent]
enabled = no
[source]
enabled = no
[theme]
enabled = no
[throttle]
enabled = no
[tracklabels]
enabled = no
[trafic]
enabled = no
[unpack]
enabled = no
[uploadeta]
enabled = no
[xmpp]
enabled = no
uHTTPd

ruTorrent ma dodatek [rpc] dzięki któremu może działać także na uHTTPd, wystarczy uruchomić obsługe php

uci set uhttpd.main.interpreter=.php=/usr/bin/php-cgi
uci commit
lighttpd

instalujemy co potrzeba

opkg install lighttpd lighttpd-mod-fastcgi lighttpd-mod-scgi

zmieniamy prawa do plików

chown -R http.www-data /www/rutorrent

/etc/lighttpd/conf.d/30-fastcgi.conf dodajemy

fastcgi.server = ( ".php" => ((
            "bin-path" => "/usr/bin/php-cgi",
            "socket" => "/tmp/php.socket",
            "check-local" => "disable",
            "disable-time" => 0,
            "max-procs" => 1,
            "bin-environment" => (
                 "PHP_FCGI_CHILDREN" => "1"
))))

/etc/lighttpd/conf.d/30-scgi.conf dodajemy

scgi.server = ( "/RPC2" =>
     ( "127.0.0.1" => (
             "socket" => "/tmp/rpc.socket",
             "check-local" => "disable",
             "disable-time" => 0
)))

i tyle, pozostaje odpalić ;)

http://192.168.1.1/rutorrent/

WNDR3800 OpenWrt 19.07.2 / WNDR3700v2 17.01.6 / TL-WR741ND v4 15.05.1