OpenWrt - serwer ed2k
Instalacja serwera ed2k - amule na OpenWrt
Ostatnia zmiana: 2013-11-27 16:55

1. Przygotowania
2. Instalacja
3. Konfiguracja
4. Automatycznie uruchamianie

Celem jest uruchomienie kompletnego serwera amule wraz interfejsem www do jego kontroli. Sam amule skompilowany na platformę mipsel jest za duży na to, żeby całkowicie "zmieścić" do w pamięci flash, dlatego tez zarówno program jak i ściągane dane zostaną umieszczone na zewnętrznym nośniku. W moim przypadku był to dysk zewnętrzny w kieszeni USB. Może to być także karta pamięci lub inny rodzaj nośnika. Jako system testowy wykorzystano OpenWrt Whiterussian 0.9 na Asus WL-500gP.

UWAGA: W większości przypadków pliki udostępnione w sieci p2p są nielegalnie. Masz tego świadomość.

Należy także pamiętać, że OpenWrt pracuje zwykle na urządzeniach do ograniczonej pamięci i zasobach sprzętowych. W konfiguracji amule należy zminimalizować liczbę połączeń, filtracje adresów itd. Należy również ograniczyć liczbę plików włożonych do kolejki.

Wszystkie patche i pliki niezbędne do kompilacji amule pod openwrt: amule_src.tgz

UWAGA: Kamikaze 8.09 posiada standardowo paczki z amule, więc poniższy poradnik jest całkowicie nieprzydatny, jeżeli masz tą wersję.

Przygotowania
Dysk zewnętrzny należy sformatować w systemie plików ext2. Wykonujemy to przy pomocy polecenia

        mkfs.ext2 -m 0 /dev/sda1

(zakładając, że podłączony dysk jest widoczny jako /dev/sda)
Przygotowany nośnik należy połączyć do urządzania. Powinien zostać on automatycznie zamontowany (w moim przypadku w /mnt/disc0_1).

Instalacja
Od tego momentu wszystkie czynności należy wykonać będąc zalogowanym w OpenWrt. Nie będzie to standardowa instalacja z pakietów z racji rozmiaru paczki i sposobu jej przygotowania.

Ponieważ nie wiadomo gdzie zostanie zamontowany nośnik, należy zrobić odpowiedni link symboliczny do katalogu /tmp/shared, który będzie katalogiem domowym serwera amule

        ln -s /mnt/disc0_1 /tmp/shared 

Należy przejść do tego katalogu:

        cd /tmp/shared

a następnie pobrać przygotowaną wersję amule i rozpakować ją do tego katalogu.

        wget http://eko.one.pl/openwrt/amule-2.1.3.tgz
        tar zxvf amule-2.1.3.tgz
        rm amule-2.1.3.tgz

Podany pakiet jest moim kompilatem; jeżeli będzie sprawiał problemy (ale nie problemy konfiguracyjne! od tego jest strona www.amule.org) - proszę o kontakt.
Konfiguracja
Pierwsze uruchomienie amule powoduje wygenerowanie odpowiedniego pliku konfiguracyjnego.

        /tmp/shared/bin/amule start

Ponieważ zostaje wymuszony katalog domowy (HOME), cała konfiguracja amule zawarta jest w katalogu /tmp/shared/home/amule/.aMule
Potrzebujemy jeszcze odpowiednio przygotowanego hasła do serwera amule:

        echo -n haslo | md5sum | cut -d ' ' -f 1

Słowo haslo należy zastąpić swoim własnym. Zostanie wygenerowany ciąg znaków; należy je zapisać/zapamiętać :)

Ulubionym edytorem należy pozmieniać parę opcji konfiguracyjnych (przy wyłączonym amule!). Uruchamiamy edycję...

        /tmp/shared/bin/amule stop
        nano /tmp/shared/home/amule/.aMule/amule.conf

... i ustawiamy podane niżej opcje

        [eMule]
        IPFilterAutoLoad=0
        [WebServer]
        Enabled=1
        Password=###
        Template=php-default
        [ExternalConnect]
        AcceptExternalConnections=1
        ECPassword=###
        ShowProgressBar=1

W miejsce ### należy wstawić wcześniej wygenerowany ciąg znaków.

Należy także pobrać aktualną listę serwerów (z http://ed2k.2x4u.de - link jest zmieniany po kilka minut więc trzeba wejść na stronę i skopiować aktualny!) i skopiować do katalogu /tmp/shared/home/amule/.aMule oraz wskazać katalog z szablonem stron www:

        ln -s /tmp/shared/share/amule/webserver/ /tmp/shared/home/amule/.aMule/webserver

Ponowne uruchomienie polecenia

        /tmp/shared/bin/amule start

powinno uruchomić już serwer amule.

Jeżeli po uruchomieniu serwera nie będzie on widoczny w liście procesów (do uzyskania przez ps ax), należy zmienić opcję -f w pliku /tmp/shared/bin/amule na -i -o. Spowoduje to wypisanie na konsolę komunikatów startowych umożliwiając tym samym diagnozę problemów.

Dostęp do serwera można uzyskać zarówno z linii poleceń (amulecmd) jak również z poziomu www pod adresem http://adres_serwera:4711

Przykładowe zrzuty ekranu:

(kliknij, aby powiększyć)


(kliknij, aby powiększyć)

Ściągnięte pliki znajdują się w katalogu /tmp/shared/home/amule/.aMule/Incoming; można to zmienić zmieniając odpowiednią opcję w pliku konfiguracyjnym. W razie problemów z amule należy zapoznać się z pomocą dostępną na stronie amule http://www.amule.org/wiki/index.php/Main_Page. Wszystkie odpowiedzi typu "a dlaczego mam lowid" czy "a dlaczego mi nie działa ta opcja" są też wyjaśnione na stronie pomocy aMule.
Automatycznie uruchamianie
W katalogu /etc/init.d należy utworzyć plik o nazwie S99amule

        touch /etc/init.d/S99amule
        chmod 755 /etc/init.d/S99amule

I umieścić w nim wywołanie serwera:

        #!/bin/sh
        ln -s /mnt/disc0_1 /tmp/shared
        /tmp/shared/bin/amule start

Rozwiązanie to ma pewne wady - nie zawsze podmontowany jest dysk i nie zawsze dostępny jest katalog /tmp/shared wskazujący na ten nośnik.

Lepszym rozwiązaniem wydaje się być wykorzystanie skryptu automatycznego mountowania dysku.

W pliku /etc/hotplug.d/usb, w pliku 01-mount należy zamienić

        for part in part*; do
            path=/mnt/${dev}_${part##*part}
            mkdir -p ${path}
            mount ${part} ${path}
        done

na

        for part in part*; do
            path=/mnt/${dev}_${part##*part}
            mkdir -p ${path}
            mount ${part} ${path}
            if [ -f ${path}/bin/amule ]; then 
                ln -s ${path} /tmp/shared
                /tmp/shared/bin/amule start
            fi
        done


Przed odłączeniem dysku należy upewnić się, że nie jest on wykorzystywany, i w szczególności, nie jest uruchomiony serwer amule. Można zrobić odpowiedni skrypt połączony pod przycisk SES (EZSetup w Asus WL-500gP). Wtedy, jeżeli chcemy odłączyć dysk wystarczy nacinąć przycisk, odczekać kilka sekund i można go bezpiecznie odłączyć. Przykład takiego skryptu (do umieszczenia w katalogu /etc/hotplug.d/button pod nazwą 01-umount)

        if [ "$BUTTON" = "ses" ] ; then
            if [ "$ACTION" = "pressed" ] ; then
                if [ -f /tmp/shared/bin/amule ]; then 
                    /tmp/shared/bin/amule stop
                    umount /dev/sda1
                    sleep 3
                fi
            fi
        fi

    
Informacje na temat dalszej konfiguracji i pracy amule dostępne są na forum.