[Howto] pyLoad; Downloader mit Rapidshare Support

  • [NAS Typ:] alle
    [Firmware:] 209 Pro II v 3.1.0 07.8, 239 Pro v 3.2.6 0427
    [Getestet:] ja
    [Sonstige Modifikationen:] keine


    Hallo Allerseits,


    diese Anleitung soll die Installation von pyLoad beschreiben. Während der Installation mittels dieser Schnellstart-Anleitung und der offiziellen Router-Installations-Anleitung im pyLoad-Wiki sind mir doch ein paar kleinere Unterschiede aufgefallen, daher diese Anleitung.


    Voraussetzungen:


    * SSH-Zugriff (z.B. mit Putty)
    * Das Paketmangement-System Optware-ipkg


    Schritt 1: Optware installieren


    Schritt 2: Einige Tools nachinstallieren
    Per SSH auf das NAS zugreifen und folgende Befehle ausführen

    Code
    ipkg install screenipkg install nanoipkg install wget-sslipkg install unzip


    Ich bevorzuge als Texteditor nano anstelle von vi. Und unzip, weil mir der Busybox unzip-Befehl schon einige Probleme bereitet hat.


    Schritt 3: Benötigte Pakete für pyload nachladen

    Code
    ipkg install pythonipkg install py25-cryptoipkg install py25-curlipkg install libcurlipkg install py25-opensslipkg install py25-djangoipkg install py25-pilipkg install tesseract-ocripkg install tesseract-ocr-lang-eng


    Schritt 4: Herunterladen von pyLoad und entpacken

    Code
    mkdir /opt/pyloadcd /opt/wget http://get.pyload.org/get/unzip-unzip pyload-v0.3.2.ziprm pyload-v0.3.2.zip


    Schritt 5: pyLoad Konfigurationsdatei bearbeiten
    nano und vi erlauben das Einfügen von Inhalten aus der Zwischenablage mittels Rechtsklick.

    Code
    cd pyload/module/configcp core_default.xml core.xmlnano core.xml


    In dieser XML-Datei ändert bitte, den Port (7227) sowie den Benutzernamen (admin) und das Passwort (pwhere) ab. Dann ist es wichtig den Port des Webinterfaces auf einen freien Port zu legen. Standardeinstellung ist 8001. Ich habe den Port auf 8500 gelegt.
    Des Weiteren solltet den 'download_folder' umlegen, damit ihr per Samba/Ftp rankommt: /share/MD0_DATA/Qdownload (MD0_DATA bei einer RAID-Konfiguration). Dort könnt Ihr auch die Sprache (en;de;fr) wählen sowie die Updatesuche ausschalten, was wichtig wäre ,denn sonnst fährt sich die NAS alle 6 Stunden aus dem Standby (<search_updates type="bool" name="Search">FALSE</search_updates>).
    Alles weitere zur Konfigurationsdatei findet Ihr hier.


    Schritt 6: Optional GOCR für die Capatcha-Erkennung
    Diesen Schritt habe ich nur mit Schwierigkeiten und cross compiling auf einer ARM-NAS hinbekommen. Auf einer x39 läuft dieser Schritt ohne Probleme.

    Code
    ipkg install makecd /tmp/wget -P /tmp http://files.mavvy.net/xtreamer/gocr-0.48.tar.gz  && tar xvzf /tmp/gocr-0.48.tar.gz -C /tmpcd /tmp/gocr-0.48./configure --prefix=/optmake && make installcd /tmp/rm -r gocr-0.48rm gocr-0.48.tar.gz


    Schritt 7: Ersteinrichtung der SQL-lite Tabellen
    In diesem Schritt wird auch der Superuser des Django-Webservers abgefragt (Nutzername, Passwort, Emailadresse).

    Code
    cd /opt/pyloadpython module/web/manage.py syncdb


    Schritt 8: Testen von pyLoad


    Code
    python pyLoadCore.py


    Nun sollte pyLoad über seinen Webserver erreichbar sein: http:[nas:ip]:[eingestellter]port.


    pyLoad beenden mittels: STRG+C


    Schritt 9: pyLoad Startdatei erstellen

    Code
    nano pyLoad.sh


    Dies erstellt die Startdatei die Ihr mit folgendem Inhalt füllt:

    Bash
    #!/bin/shprefix='/opt'PATH=${prefix}/bin:${prefix}/sbin:/sbin:/bin:/usr/sbin:/usr/binTITLE='pyLoad - Open Source Downloader'FOLDER='/opt/pyload'NAME='pyLoad'INTERFACE="screen -A -m -d -S $NAME" start() {	 if ps -ef|grep $NAME|grep SCREEN|grep -v grep > /dev/null; then            echo -e "Can't start $TITLE. Server is already running."	 else	    echo "Starting Service: $NAME"            cd $FOLDER            $INTERFACE python pyLoadCore.py	 fi        }stop() {        if ps -ef|grep $NAME|grep SCREEN|grep -v grep > /dev/null; then             ps -ef|grep -v grep|grep SCREEN|grep $NAME|awk '{print $1}'> $FOLDER/$NAME-screen.pid	     echo "Stopping Service: $TITLE"                # Get the process ID from the pid file                 for id in `cat $FOLDER/$NAME-screen.pid`                         do kill -9 $id                         echo "Killing process ID $id"                         rm -rf $FOLDER/$NAME-screen.pid                         break                 done 	else	    echo -e "Cannot stop $TITLE. Server is not running."	fi        }case "$1" in        start)                start                ;;        stop)                stop                ;;        restart)                stop                sleep 4                start                ;;        *)                echo "Usage: $0 (start|stop|restart)"                exit 1                ;;esacexit 0


    Datei Beenden und speichern ( STRG+X ->y-> enter)


    Datei ausführbar machen:

    Code
    chmod +x pyLoad.sh


    Testen des Scriptes mittels: pyLoad.sh start,stop,restart

    Code
    ./pyLoad.sh start./pyLoad.sh stop


    Schritt 10: Qnap-Autostart-Datei anpassen
    Im letzen Schritt muss die Autostart.sh Datei editiert bzw. bzw. überhaupt erst angelegt werden (Qnap x39). Im Qnap-Wiki-Arikel einen geeigneten Mount-Befehl heraussuchen.


    Qnap 239:

    Code
    mount -t ext2 /dev/sdx6 /tmp/config


    Qnap 209:

    Code
    mount -t ext2 /dev/mtdblock5 /tmp/config


    Code
    cd /tmp/confignano autorun.sh


    Dann folgenden Code in die Datei einfügen:

    Bash
    #!/bin/sh#Symlink Optware to /optrm -rf /optln -sf /share/MD0_DATA/.qpkg/Optware /opt#export Optware PATHecho "export PATH=$PATH:/opt/bin:/opt/sbin:/usr/local/sbin" >> /etc/profile#Autostart von pyLoadcd /opt/pyload/./pyLoad.sh start


    Bitte achtet auf schon evtl. schon vorhandene Startbefehle (z.B. SSOTS). Speichen und Beenden (STRG+X -> y -> enter)


    Datei ausführbar machen und testen:

    Code
    chmod +x autorun.sh./autorun.sh


    Als letzten Schritt trennen der verbundenen Partition mittels:

    Code
    cd /
    umount /tmp/config


    Das kompilierte GOCR überlebt durch das angepasste Prefix (prefix=/opt) auch einen Reboot, der pyLoad startet automatisch und ist von nun an auch über die Weboberfläche erreichbar.
    Natürlich ist das alles ohne Gewähr und auf eigene Gefahr. Getestet auf meiner TS-239 und einer 209 Pro II. Aber pyLoad sollte auf jeder Qnap funktionieren, welche die oben genannten Pakete in der IPKG-Quelle hat.


    Viel Spaß mit dem Tool.

  • Wenn ich python module/web/manage.py syncdb eingebe, erhalte ich:

    Code
    Traceback (most recent call last):  File "module/web/manage.py", line 6, in <module>    import settings # Assumed to be in the same directory.  File "/share/HDA_DATA/.qpkg/Optware/pyload/module/web/settings.py", line 21, in <module>    config = XMLConfigParser(os.path.join(PYLOAD_DIR,"module","config","core.xml"))  File "/share/HDA_DATA/.qpkg/Optware/pyload/module/web/../../module/XMLConfigParser.py", line 35, in __init__    self.loadData()  File "/share/HDA_DATA/.qpkg/Optware/pyload/module/web/../../module/XMLConfigParser.py", line 43, in loadData    self.xml = parse(fh)  File "/opt/lib/python2.5/xml/dom/minidom.py", line 1915, in parse    return expatbuilder.parse(file)  File "/opt/lib/python2.5/xml/dom/expatbuilder.py", line 928, in parse    result = builder.parseFile(file)  File "/opt/lib/python2.5/xml/dom/expatbuilder.py", line 207, in parseFile    parser.Parse(buffer, 0)xml.parsers.expat.ExpatError: mismatched tag: line 42, column 6


    In meiner core.xml steht:

    XML
    <?xml version="1.0" ?><config name="Configuration" version="0.1">    <remote name="Remote">        <port type="int" name="Port">7227</port>        <listenaddr type="ip" name="Adress">0.0.0.0</listenaddr>        <username type="str" name="Username">admin</username>        <password type="str" name="Password">laszlo2007</password>    </remote>    <ssl name="SSL">        <activated type="bool" name="Activated">False</activated>        <cert type="str" name="Remote Port">ssl.srt</cert>        <key type="str" name="Remote Port">ssl.key</key>    </ssl>    <webinterface name="Webinterface">        <activated type="bool" name="Activated">True</activated>        <lighttpd type="bool" name="Use Lighttpd">False</lighttpd>        <host type="ip" name="IP">0.0.0.0</host>        <port type="int" name="Port">8500</port>        <template type="str" name="Template">default</template>        <local type="bool" name="Local">True</local>        <ssl type="bool" name="SSL">False</ssl>        <username type="str" name="Username">None</username>        <adress type="ip" name="Adress">None</adress>        <extport type="int" name="Extern Port">None</extport>        <pw type="str" name="Password">None</pw>    </webinterface>    <log name="Log">        <file_log type="bool" name="File Log">True</file_log>        <log_folder type="str" name="Folder">Logs</log_folder>        <log_count type="int" name="Count">5</log_count>    </log>    <general name="General">        <language type="str" input="en;de;fr" name="Language">de</language>        <download_folder type="str" name="Download Folder">/share/Qdownload/pyload>        <max_downloads type="int" name="Max Parallel Downloads">3</max_downloads>        <link_file type="str" name="File For Links">links.txt</link_file>        <failed_file type="str" name="File For Failed Links">failed_links.txt</failed_file>        <debug_mode type="bool" name="Debug Mode">False</debug_mode>        <max_download_time type="int" name="Max Download Time">5</max_download_time>        <download_speed_limit type="int" name="Download Speed Limit">0</download_speed_limit>        <checksum type="bool" name="Use Checksum">True</checksum>    </general>    <updates name="Updates">        <search_updates type="bool" name="Search">True</search_updates>        <install_updates type="bool" name="Install">False</install_updates>    </updates>    <reconnect name="Reconnect">        <activated type="bool" name="Use Reconnect">False</activated>        <method type="str" name="Method">None</method>        <startTime type="time" name="Start">0:00</startTime>        <endTime type="time" name="End">0:00</endTime>    </reconnect>    <downloadTime name="Download Time">        <start type="time" name="Start">0:00</start>        <end type="time" name="End">0:00</end>    </downloadTime>    <proxy name="Proxy">        <activated type="bool" name="Activated">False</activated>        <adress type="str" name="Adress">http://localhost:8080</adress>        <protocol type="str" name="Protocol">http</protocol>    </proxy></config>


    Wenn ich dann PyLoad starten will mit python pyLoadCore.py erhalte ich:


    Und wenn ich dann auf http://NAS-IP:8500
    gehe, passiert: Nichts. Seiten-Ladefehler.
    Habt ihr eine Idee, was ich falsch gemacht habe? Pakete sind alle installiert.


    Viele Grüße
    Don

  • Guten Abend,


    prinzipiell sieht es so aus, als hast du Python als QPKG Paket installiert? Ich hatte dann einen ähnlichen Fehler. Wenn das so ist funktioniert das nicht - entferne das OPKG Paket und starte am sicherheitshalber die Kiste dann neu.


    Tja - schauen wir mal

  • Hallo golgorod,
    vielen Dank für dein HowTo!


    hab leider ein Prob mit deinem Startskript:

    Zitat

    ./pyLoad.sh: line 17: screen: command not found


    Scheint wohl ein Problem mit screen zu sein?
    Oder an was kann das liegen?


    Einzig den Pfad habe ich im Skript angepasst:

    Zitat

    FOLDER='/opt/pyload/pyload'




    Matthias

  • Hi Matthias,
    schaue Dir mal den 2. Schritt an:

    Code
    ipkg install screen
    ipkg install nano
    ipkg install wget-ssl
    ipkg install unzip


    Grüsse, David

  • Ja, und? Was meinst du?
    Ist längst alles installiert. Daran liegt es nicht. screen an sich geht schon.


    z.b. Befehl:

    Zitat

    screen python pyLoadCore.py


    ist no problem.


    Oder meinst du was anderes??



    Matthias

  • Vielen Dank für deine Anleitung!!!


    Ich habe jedoch noch ein Problem. Wie bekomme ich auf meine 209 II folgendes compiliert?


    Schritt 6: Optional GOCR für die Capatcha-Erkennung.


    Vielen Dank für deine Tips.


    Xean

  • Zitat von "matradix"

    hab leider ein Prob mit deinem Startskript:


    Scheint wohl ein Problem mit screen zu sein?
    Oder an was kann das liegen?


    Einzig den Pfad habe ich im Skript angepasst:


    Hallo Matthias,


    sieht ja fast so aus, als ob da beim einfügen irgendwo nen Umbruch erzeugt würde - das änderen des Folders ist kein Problem.


    Vergleich mal die Scripte. Die Datei sollte eigentlich gleich lang bleiben.

  • Hallo golgorod,


    danke! :D
    Nun geht es! Habe es erst mit vi gemacht. Vielleicht hat der was anders gemacht.
    Nun das Skript gelöscht und mit nano neu erstellt, voila :thumb:

  • Zitat von "xean"


    Du hast das gocr schon für deine 209 compiliert. Könntest du mir das vielleicht zukommen lassen?


    Testet es bitte...Kompiliert für ARM CPUs(109,209,219,...) gocr_0.48-1.zip entpacken und die ipk-Datei per WinSCP oder ähnliches auf die Box kopieren, zum Beispiel in /root/...


    Code
    cd #
    ipkg install gocr_0.48-1_arm.ipk


    dann sollte gocr reichen um das Programm zu starten...

  • Hmm als Rapidshare funktioniert bei mir. Uploaded bekomme ich nur Fehlermeldungen. Hat das mal jemand getestet?


    Ich bekomme folgnede Fehlermeldung:


    Traceback (most recent call last):
    File "/share/MD0_DATA/.qpkg/Optware/pyload/module/network/Request.py", line 326, in writefunc
    self.fp.write(buf)
    IOError: [Errno 28] No space left on device



    Speicher ist noch genügend da...


    GOCR funktioniert auch...

  • Ich habe gerade auch ein paar Files von Uploaded.to geladen, das lief bei mir ohne Probleme - die Fehlermeldung habe ich auch nicht nicht so gesehen. Komisch, da Rapidshare ordentlich arbeitet.

  • Um auf mein Problem zurückzukommen ( 2. Post :( Ich hatte Python als QPKG Paket installiert. Habe es aber schon längst deinstalliert. ( Laut Web-Oberfläche )
    NACHTRAG: Wenn ich auf db-nas.fritz.box:8001 gehe, erhalte ich eine Leere ( weiße ) Page. Wenn ich die pyLoadCore ausführe, erhalte ich das gleiche. Wenn ich ./pyLoad.sh start eingebe(SSH) eingebe, bekomme ich Nichts. Also keine Error-Meldung, aber auch keine Meldung, dass alles Einwandfrei läuft.
    Und wenn ich auf die MySQL per PhpMyAdmin zugreife, sind da keine neuen Tabellen.


    Offtopic: Da ich grad einen Portscan machte: Wofür ist der Port 3689, 111, 3493 und 49152?

  • Perfekte Anleitung - lies sich ohne Probleme wie beschrieben auf meiner 209 Pro II installieren. Vielen Dank für diesen Beitrag!

  • Zitat von "DonBambus"

    Um auf mein Problem zurückzukommen ( 2. Post :( Ich hatte Python als QPKG Paket installiert. Habe es aber schon längst deinstalliert. ( Laut Web-Oberfläche )
    NACHTRAG: Wenn ich auf db-nas.fritz.box:8001 gehe, erhalte ich eine Leere ( weiße ) Page. Wenn ich die pyLoadCore ausführe, erhalte ich das gleiche. Wenn ich ./pyLoad.sh start eingebe(SSH) eingebe, bekomme ich Nichts. Also keine Error-Meldung, aber auch keine Meldung, dass alles Einwandfrei läuft.
    Und wenn ich auf die MySQL per PhpMyAdmin zugreife, sind da keine neuen Tabellen.


    Offtopic: Da ich grad einen Portscan machte: Wofür ist der Port 3689, 111, 3493 und 49152?


    3689= itunes Dienst
    111= portmapper bzw. wird für nfs benötigt
    3493= Network UPS
    49152=proftp


    Zu Deinem Problem: Es sollte reichen, wenn du das QPKG per Weboberfläche deinstallierst, dannach nen neustart und ich hatte keinerlei Probleme. Hab das grad durchgespielt - ein glück, dass ich ein Gerät zum testen da hab. Bei der Eingabe des Startscriptes (./pyload.sh) wirst du auch nichts sehen, da pyLoad direkt in einem screen gestartet wird->keine Ausgabe auf der Console. Bei python pyloadCore.py solltest du eine Ausgabe auf Konsole erhalten, zumindest eine Fehlermeldung. Sofern du immernoch die Meldungen bekommst wie in deinem 2ten Post wird pyLoad auch nicht laufen.
    python module/web/manage.py syncdb muss ausgeführt werden (und fehlerfrei durchlaufen) um die Datenbanktabellen über SQLlite anzulegen - nicht im MySQL Server der QNAP.
    Du hast also immer noch Probleme mit Python. Oder beim Entpacken ist was scheifgegangen.


    Quick&Dirty (sofern du wenig angepasstes Zeug in deinem Optware hast):
    Qnap Weboberfläche: Deaktivieren und Deinstallieren von Optware
    NeuStart
    Lade Dir das Optware am Besten auch neu runter und installiere es. Aktiviere das Paket -> Neustart.
    Dann sollte eigenltich alles bereit für die Installation sein.

  • hallo,
    danke erstmal für die top anleitung.. hat auch alles soweit funktioniert bis zu autorun.sh.. das erstellen sit kein problem nur testen kann ich die nicht

    Code
    [/tmp/config] # ./autorun.sh
    ./autorun.sh: line 11: cd: /opt/pyload: No such file or directory
    ./autorun.sh: line 12: ./pyLoad.sh: No such file or directory


    dies wird dann angezeigt.. nachdem ich etwas an der autorun.sh ändere habe ich kein zugriff mehr auf den /opt/ weshalb wohl auch der fehler angezeigt wird.. erst nach einem neustart des nas kann ich wieder auf den /opt/ zugreifen..
    und autostarten tut der die pyLoad.sh auch nicht..
    vielleicht weiß ja wer eine lösung..
    ich habe übrigens den qnap ts-110


    gruß haddo


  • Die Lösung steht in der Anleitung selbst:


    Zitat von "golgorod"


    Des Weiteren solltet den 'download_folder' umlegen, damit ihr per Samba/Ftp rankommt: /share/MD0_DATA/Qdownload (MD0_DATA bei einer RAID-Konfiguration).


    Da du keine RAID Konfiguration hast gibt es keinen gemountetes Verzeichnis mit /share/MD0_DATA/Qdownload.
    Du musst das Ganze evtl. in /share/HDA_DATA/Qdownload ändern ... Solltest du einen Midnight Commander installiert haben. und markierst den Ordner ~opt siehst du den eigentlichen Verzeichnispfad der dahinter steckt.


    Das gleiche Problem hatte ich nämlich zunächst auch erst ;)


    Mfg Jens

  • Hallo,


    hab bis jetzt die Anleitung bis zum Punkt 8 ausgeführt und wollte per Webinterface testen.
    Bei mir kommt jedoch jedesmal wenn ich mich versuche mit den unter Punkt 5 eingegeben Userdaten einzuloggen der Schriftzug "Your username and password didn't match. Please try again.", was mache ich falsch bzw. muss ich irgenwo anders die Logindaten für das Webinterface eingeben.


    Vielen Dank


    MfG
    DesertEagle2