Konfiguration des Enigma2-WebInterface

  • Wie ihr evtl. schon bemerkt habt, ist die Konfiguration des WebInterface auf den Enigma2 Boxen geändert worden von mir. Und dies aus folgenden Gründen:
    - Es konnte ohne Eingriffe in den Quelltext kein 2. Port konfiguriert werden.
    - Wenn man das WebInterface auf einen anderen Port als 80 eingestellt hatte, funktionierte das Streamen nicht mehr.
    - Wenn man im WebInterface die Passwordabfrage aktiviert hatte, funktionierte das Streamen nicht mehr.


    Daher gibt es nun sehr detailierte Einstellungsmöglichkeiten. Es kann für jede IP-Adresse (127.0.0.1, 0.0.0.0 bzw. alle konfigurierten Netzwerkgeräte) jeweils ein eigener Port einzelt vergeben werden. Dh. man kann nun xbeliebe Ports definieren auf denen das WebInterface verfügbar ist und diesen Port dann individuell konfigurieren.


    Hier dann mal ein kleiner Ausflug in den Ablauf beim Streamen eines Senders mit VLC:
    - Anwender klickt auf den Streambutton des jeweiligen Senders im WebInterface (oder startet VLC z.B. mit http://dm800/web/stream.m3u?re…1%3AC00000%3A0%3A0%3A0%3A)
    - Das Webinterface generiert darauf hin eine M3U Playlist mit einem Eintrag, welche der Browser mit VLC öffnet.
    - VLC liest aus der M3U dann den eigentlichen Link zum Stream (http://dm800:8001/1:0:1:6DCA:44D:1:C00000:0:0:0:) und öffnet diesen.
    - Hinter dem Port 8001 lauert der streamproxy, der die TS-Daten per HTTP-Stream bereit stellt. Dieser muss, bevor er Daten senden kann, in Enigma2 einen Tuner reservieren. Daher...
    - ruft der streamproxy kontaktiert unter der URL http://127.0.0.1:80/web/stream…:6DCA:44D:1:C00000:0:0:0: dann wiederum Enigma2 und reserviert eine Aufnahme (Streams werden intern in E2 wie Aufnahmen behandelt) und am 8001 bereit stellt.
    - VLC bekommt TS-Daten und spielt diese ab.


    Zusammengefasst heisst das, das der Port 80 auf 127.0.0.1 zwingend erreichbar sein muss und keine Passwortabfrage aktiviert haben darf (streamproxy hat kein Support dafür).


    In der Grundkonfiguration gibt es nur ein Interface:
    1. Adresse : 0.0.0.0
    1. Port : 80
    1. Passwort: aus
    Die Adresse 0.0.0.0 ist ein Dummy für alle verfügbaren IP´s (also sowohl 127.0.0.1 als auch 192.168.1.3 beispielsweise)


    Konfiguration mit geschützen Port 80 und StreamingSupport für Freigabe ins Internet:
    1. Adresse : 192.168.1.3
    1. Port : 80
    1. Passwort: ein


    2. Adresse : 127.0.0.1
    2. Port : 80
    2. Passwort: aus


    Konfiguration mit offenen Port80 und geschützen Port 443 (SSL geht damit aber auch nicht) und StreamingSupport für Freigabe ins Internet:
    1. Adresse : 0.0.0.0
    1. Port : 80
    1. Passwort: aus


    2. Adresse : 0.0.0.0
    2. Port : 443
    2. Passwort: ein

    Einmal editiert, zuletzt von 3c5x9 ()

  • Zitat

    der streamproxy kontaktiert dann wiederum Enigma2 und reserviert eine Aufnahme


    Wird diese denn nun auch wieder zuverlässig freigegeben oder wird das ein never ending Bug bleiben?

    Ich bin nicht faul sondern im Energiesparmodus!

  • Zitat

    Original von LazyT


    Wird diese denn nun auch wieder zuverlässig freigegeben oder wird das ein never ending Bug bleiben?


    Sorry, da musst du tmbinc mal drauf ansprechen. Denn auf das Verhalten des Streamproxy haben wir vom WebIf aus keinen Einfluss.


    PS.: Bist du mit deinem Programm (?) weiter gekommen? Du müsstest wget 'http://blablau/rrr?jjj=111&uuu=222' benutzten. Ohne die ' ist für die shell nach dem & schluss und damit fehlt dem WebIf nen Parameter. Hoffe Reichi hatte das ausgerichtet von mir :smiling_face:

    Einmal editiert, zuletzt von 3c5x9 ()

  • Zitat

    Sorry, da musst du tmbinc mal drauf ansprechen. Denn auf das Verhalten des Streamproxy haben wir vom WebIf aus keinen Einfluss


    Hatte mit Reichi ja schonmal darüber gesprochen ob es nicht möglich wäre eine URL aufzurufen die dann den streamproxy triggert seine Verbindungen zu checken und gegebenenfalls abzubauen, aber leider... :loudly_crying_face:


    Naja, muss DreamStream für E2 halt weiter warten.


    Zitat

    Bist du mit deinem Programm (?) weiter gekommen?


    Nicht weiter probiert. Hatte im Programm nicht funktioniert und beim Schnelltest mit wget auch nicht, daher dachte ich wäre eventuell ein Bug im WebIF. :face_with_rolling_eyes:

    Ich bin nicht faul sondern im Energiesparmodus!

  • hi,


    ich möchte das webinterface so konfigurieren, dass wenn ich von außen übers internet zugreife ich user/passwort eingeben muss.


    greife ich aber über das lokale netz zu (notebook, PC etc), dann möchte ich, dass keine user/passwort-abfrage kommt.



    raimund

    • Offizieller Beitrag

    Hallo,


    das geht so (momentan) leider nicht.
    Grund dafür ist ganz einfach, dass ein Webinterface ja von der box aus gesehen alle Anfragen auf der selben IP bekommt (z.B. 192.168.0.100) egal ob sie von intern kommen oder von extern.
    Technisch wäre es möglich eine Authentifizierung auf basis der "rufenden" IP zu realisieren. Momentan will ich aber erstmal den Konfigurationsdialog nicht mehr anfassen... ich bin hier schon länger auf der Suche nach einer benutzerfreundlicheren Lösung, so richtig eingefallen ist mir bisher aber leider nichts...

  • Ist die Lösung mit den verschiedenen Port´s nicht benutzter freundlich?


    Also man kann doch für extern einen extra Port öffnen und nur diesen mit einem Passwort versehen! Dieser Port muss ja eh noch geforwardet werden, also ist der interne Port eh egal.


    PS.: Reichi, guck dir auch mal die OpenSSL Pakete an, da ist fehlt seit ner ganzen Weile irgend ein Paket im std. OE. Damit bekommste ne komische Meldung beim Start des WebIfs mit SSL Verschlüsselung.

    • Offizieller Beitrag

    Das Problem ist einfach, was mach ich wenn ein interface nicht mehr da ist?
    Woher weiß ich, ob es "wieder kommt" (eventuell hat der User nur kurz den WLAN-Stick anderweitig gebraucht).
    Wie verhalte ich mich, wenn sich die IP eines Interfaces ändert (weil der User z.B. nen neuen Router hat)?


    Es gibt leider momentan immer wieder Probleme bei Benutzern die halt dann nicht verstehen warum's auf einmal nimmer geht.
    Deshalb stelle ich mir die Frage ob man wirklich eine "Interface-basierte" Konfiguration benötigt, oder ob es nicht auch reichen würde wenn man zwar Ports, SSL und Auth konfigurieren könnte, aber eben Interface-übergreifend.
    Das würde den Dialog für die Nutzer halt deutlich vereinfachen... andererseits schränkt es die Möglichkeiten ein und der ein oder andere wäre u.U. nicht so richtig glücklich damit...


    Andererseits verstehen die wenigsten warum zur Hölle man Manuell ein Interface 127.0.0.1 ohne Auth konfigurieren muss und viele wissen vermutlich nichtmal richtig was das mit den IPs und Ports eigentlich allles soll...


    Interessant wäre einfach wie viele Benutzer tatsächlich 2 ECHTE Interfaces (z.B. WLAN und LAN) gleichzeitig und mit unterschiedlichen Konfigurationen in Betrieb haben, wenn's nur 5 weltweit sind würde ich dazu tendieren Ports + Auth + SSL tatsächlich Interrface-Übergreifend zu gestalten.

  • Man könnte ja auch einfach erzieherisch tätig werden und definieren, das es ohne SSL und HTTP Auth eben nicht geht, und das std. so eingestellt ist und nicht veränderbar ist. Dann kann man sich die ganze Konfiguration da sparen.


    Man könnte auch alle Requests die !=eigenes Subnetz sind mit SSL und PWD beantworten. Die entsprechende Client-IP ist in jedem Request in twisted drin ... nur man kann innerhalb einer Factory nicht von offen auf SSL umschalten, da wäre nen Redirekt auf nen anderen Port nötig.


    Evtl. ist eine Zwischenlösung auch die beste... man konfiguriert die Interfaces vor, eins für 0.0.0.0:80 mit alles offen und 0.0.0.0:443 für SSL und PWD incl. einem "Reset to defaults" Button. Für den Fall das man etwas konfiguriert hat, was nicht funzt.

  • 1. Ich fände ein Logging für das e2-webif toll, hab aber nix gefunden?
    Mir gehts um die https-auth. Da ich das web-if für Fernzugriff via Fritzbox konfiguriert habe würde ich gerne Logins und natürlich Fehlversuche entdecken.


    2. Kann ich ggf. die Authentifizierung-Überschrift: ... Ausgabe der Website: "Enigma2 WebInterface" irgendwo anpassen? (Damit ein zufälliger besucher nicht gleich weiss, vor welchem Sytem er steht.)

    dm8000 (2xDVB-S2, DVB-C, DVB-T, 2 TB HDD, 4pin Fan) mit DMM - OE2.0+GP3.2

    2 Mal editiert, zuletzt von tomde ()

    • Offizieller Beitrag

    Nein ist es nicht. "Logging" bringt auf einer Dreambox viele Probleme mit sich...
    Wohin loggen? (im Flash ist z.B. auf einer dm7025 nur noch wenig freier Platz)
    Wieviel loggen?
    Wie (technisch) loggen?


    Das ist halt nicht "mal eben kurz was konfigurieren" sondern man muss sich da auch entwicklungstechnische Gedanken machen wie man das am besten angeht.
    Und ich persönlich muss ehrlich zugeben, dass ich es auch nicht als wirklich wichtiges Feature erachte (da fände ich Dinge wie z.B. einen Bouquet-Editor für das WebInterface deutlich interessanter).

  • Zitat

    Wohin loggen? Wieviel loggen? Wie (technisch) loggen?

    1. Vorschlag:
    - AccessLog Konfigurierbar, ein/aus, Pfad z.B. nach /tmp/webifAccess.log oder /media/cf/webifAccess.log
    - Nur die Anmeldungen loggen, die sich bei eingeschalteter Authentisierung anmelden, z.B.:

    Code
    Sun Mar  7 01:42:49 CET 2010 [webif] User root login successful. IP: 10.10.10.10
    Sun Mar  7 01:44:49 CET 2010 [webif] User root login failed. IP: 10.10.10.20


    - Oder gar nur die fehlerhaften Anmeldungen am WebIf loggen und ggf. im Hauptfenster auf die Anzahl fehlerhafter Login Versuche hinweisen.


    - Dann unter Menüpunkt: Extras, Log das AccessLog anzeigen.


    Zitat

    ... nicht als wirklich wichtiges Feature erachte (da fände ich Dinge wie z.B. einen Bouquet-Editor für das WebInterface deutlich interessanter).

    So ein AccessLog ist schon etwas "nice to have", eben auch eine nette
    eine Sicherheits-/Auditfunktion.


    2. Die Funktionen des BouquetEditors Dreamboxedit im WebIf abzubilden, wär natürlich toll, aber bestimmt ein grosser Brocken.


    3. Wie wärs mit einem Logoff Button, der die credentials / session-cookies löscht und so eine Neuanmeldung am WebIf erfordert. (statt den Browser schliessen zu müssen)


    4. Was schickes und publikumswirksames wäre vielleicht eine Mosaikfunktion im WebInterface?

    dm8000 (2xDVB-S2, DVB-C, DVB-T, 2 TB HDD, 4pin Fan) mit DMM - OE2.0+GP3.2

    5 Mal editiert, zuletzt von tomde ()