WebIF: Eigene Seiten ohne Patchen implementieren?

  • Hi @all,


    ich bin absoluter Python-Newbie und habe eine kleine Erweiterung für das WebIF erstellt, allerdings muss dafür die "WebScreens.py" gepatched werden.
    Ist es irgendwie möglich eigene Seiten zu implementieren, ohne das originale WebIF "anzufassen" (Klassen-Vererbung z.B.)?
    Des Weiteren wäre es auch sehr interessant zu wissen, ob eigene Menü-Einträge im Header-Menü oder in den Sub-Menüs (z.B. Extras) ohne Patchen möglich sind.


    Vielen Dank für alle Tipps & Tricks.



    Nachfolgend meine Erweiterung "HTTP-ShellExec"...


    Beschreibung:
    HTTP-ShellExec dient zum Ausführen von Bash-Skripten/-Befehle.
    Warum braucht man sowas?! Hmm, in meinem Fall ist es z.B. das Fernsteuern der Receiver in meinem Haus.
    Bei mir läuft ein kleiner Linux-Server, der von außen erreichbar ist (die Receiver beabsichtigt nicht), von dem man die Receiver dann dennoch per WebIF (wget/bash) abfragen/steuern kann, also z.B. auch mal ein Reboot ausführen kann.


    Beispiele:
    Hello World: "http://DeineDreamBoxIP/web/shellexec?http_shell&bash&'echo Hello World'"
    Total Memory: "http://DeineDreamBoxIP/web/shellexec?http_shell&mem&t"
    Free Memory: "http://DeineDreamBoxIP/web/shellexec?http_shell&mem&f"
    Used Memory: "http://DeineDreamBoxIP/web/shellexec?http_shell&mem&u"
    Memory: "http://DeineDreamBoxIP/web/shellexec?http_shell&bash&free"
    Kernel Buffer anzeigen (max. die letzten 100 Zeilen): "http://DeineDreamBoxIP/web/shellexec?http_shell&bash&dmesg | tail -n 100"
    Uptime: "http://DeineDreamBoxIP/web/shellexec?http_shell&bash&uptime"
    CPU-Info: "http://DeineDreamBoxIP/web/shellexec?http_shell&bash&'cat /proc/cpuinfo'"


    Return:
    HTTP-ShellExec liefert die Skript-Ausgaben per XML zurück, welche sich z.B. per PHP parsen/auswerten lassen.
    Bsp. "http://DeineDreamBoxIP/web/shellexec?http_shell&bash&free":

    XML
    <?xml version="1.0" encoding="UTF-8"?>
    <e2shellexec>
        <e2shell>total         used         free       shared      buffers
      Mem:       157764        82788        74976            0         1148
     Swap:       131072            0       131072
    Total:       288836        82788       206048</e2shell>
    </e2shellexec>


    WebScreens.py (Patch):


    web/shellexec.xml:

    Code
    <e2:screen name="ShellExecWebScreen">&lt;?xml version="1.0" encoding="UTF-8"?>
    &lt;e2shellexec>
        &lt;e2shell><e2:element source="ShellExec">
            <e2:convert type="web:TextToXML" />
        </e2:element>&lt;/e2shell>
    &lt;/e2shellexec>
    </e2:screen>


    WebComponents\Sources\ShellExec.py:


    /usr/script/http_shell.sh:

    Beste Grüße
    Schorsch