FHEM-Backend sperren - nur Zugriff per TabletUI ?

Begonnen von ToM_ToM, 02 März 2018, 15:33:22

Vorheriges Thema - Nächstes Thema

ToM_ToM

#30
Hey Leon,

vielen Dank dass du dir die Zeit genommen hast. Ich habe jetzt mal deine Config entsprechend an meine angepasst.


<VirtualHost *:80>
ServerName $host
ServerAdmin webmaster@localhost
#DocumentRoot /var/www/html

DocumentRoot /var/www


Header set Access-Control-Allow-Origin "*"

ErrorLog ${APACHE_LOG_DIR}/fhem-ftui-error.log
CustomLog ${APACHE_LOG_DIR}/fhem-ftui-access.log combined

ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On

<Location /ftui>

          #Für Logpoll = Websocket die Aufrufe umleiten
          RewriteEngine On
          RewriteCond %{HTTP:Upgrade} =websocket [NC]
          RewriteRule /ftui(.*)           ws://localhost:8085/fhem/ftui$1 [P,L]
          RewriteCond %{HTTP:Upgrade} !=websocket [NC]
          RewriteRule /ftui(.*)           http://localhost:8085/fhem/ftui$1 [P,L]

  # Websockets
  ProxyPass ws://localhost:8085/fhem
  ProxyPassReverse ws://localhost:8085/fhem

  # ProxyPass/ProxyPassReverse leitet HTTP requests auf eine andere URL um
  ProxyPass http://localhost:8085/fhem/ftui
  ProxyPassReverse http://localhost:8085/fhem/ftui
  #ProxyHTMLEnable On

          # ProxyHTMLURLMap passt Links im HTML/JavaScript Source an
          ProxyHTMLURLMap /        fhem/www/
          ProxyHTMLURLMap /fhem/     fhem/www/
          #ProxyHTMLURLMap /ftui/images/     /var/ftui/images/


        AuthType Basic
        AuthName "ftui"
        AuthUserFile /var/www/httpwds
        AuthBasicProvider file
        require valid-user


</Location>

    <Location />
        require all granted
        ProxyPass http://localhost:8083
        ProxyPassReverse http://localhost:8083
    </Location>

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet



Aber wenn ich jetzt meine eig. Seite http://192.168.152.250/ftui/tablet_pagebutton_modern/index.html aufrufe, bekomme ich im Browser den Fehler:


Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /ftui/tablet_pagebutton_modern/index.html.

Reason: DNS lookup failure for: localhost:8083ftui

Apache/2.4.25 (Debian) Server at 192.168.152.250 Port 80


Sobald ich <Location /> drin habe, scheint ihn das speziellere <Location /ftui> gar nicht mehr zu interessieren.

VG, Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

CoolTux

Ändere mal
<Location /ftui>

in

<Location /fhem/ftui>


Wenn das alles nicht klappt reißen wir alles ein und machen es anders.
Du verwendest für tabletui ja die Methode mit httpsrv richtig?
Man kann aber auch einen externen Webserver die ftui Daten ausliefern lassen. Dann hast zwar mobilWeb Port 9085 immer noch, braucht man auch. Und der ist auch ohne Passwort aber du stellst den dann über allowed so ein das nur locahost erlaubt ist.
Und ftui lässt du dann Apache aus liefern mit eigener URL

http://smarthome


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

ToM_ToM

Guten Morgen.

Also wenn ich die Anpassung entsprechend vornehme, ist meine Seite nicht mehr per http://192.168.152.250/ftui/tablet_pagebutton_modern/index.html erreichbar, aber dafür per http://192.168.152.250/fhem/ftui/tablet_pagebutton_modern/index.html
Allerdings ohne Inhalt. Da muss ich jetzt alle Pfade innerhalb der HTML-Dateien wieder anpassen.

Für http://192.168.152.250 verlangt er jetzt auch nach Benutzer und Passwort.
Gebe ich jedoch weiterhin http://192.168.152.250:8085/fhem ein, komme ich ohne Login drauf.

Und ja, ich verwende aktuell HTTPSRV:

defmod TABLETUI HTTPSRV ftui/ ./www/tablet Tablet-UI
attr TABLETUI DbLogExclude .*
attr TABLETUI group Tablet
attr TABLETUI room SYSTEM->Fhem


VG, Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

CoolTux

Guten Morgen,

Wollen wir es dann lieber so machen wie ich geschrieben habe? Also ohne HTTPSRV? Ich denke mal das dieser Weg einfacher wäre.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

ToM_ToM

ZitatWollen wir es dann lieber so machen wie ich geschrieben habe? Also ohne HTTPSRV? Ich denke mal das dieser Weg einfacher wäre.

Wenn ich damit mein Ziel erreichen kann, keine Einschränkungen gegenüber der Methode mit HTTPSRV habe und ich dir wertvolle Zeit ersparen kann, dann gerne. :)
Ich muss nur leider gleich zur Arbeit und könnte daher erst heute Abend weitermachen.
Ich kann zwar zwischendrin mal ins Forum schauen und Fragen beantworten, jedoch leider nichts testen.
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

CoolTux

Du kannst mal bitte versuchen das hier um zu setzen
https://forum.fhem.de/index.php/topic,55132.msg470824.html#msg470824

Im Grunde ist es nichts anderes wie das was Du jetzt auch schon machst. Nur eben ausschließlich für FTUI. Als Web Instanz nimmst weiterhin den 8085. Dieser darf basic auth haben. Am Ende sichern wir den dann noch ab. Diese Instanz wird dann wirklich nur ausschließlich für FTUI Reverse Proxy da sein.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

ToM_ToM

Hi Leon,

diesen Thread hatte ich mir schon zur Hilfe genommen um meine Config aufzubauen. Auch den Trick mit den Symlinks habe ich verwendet.
Die Anzeige funktioniert ja auch. Es muss ja nur noch irgendwie der Zugriff aufs Backend unterbunden werden.

VG, Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

CoolTux

Eigentlich sollte doch mit dieser Konfiguration ein Zugriff über den Proxy auf FHEMWEB nicht mehr möglich sein.
Und wenn du es so gemacht hast wozu dann noch das HTTPSRV Device? Lösch das mal bitte.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Hier mal ein Beispiel für nginx


server {
        listen [::]:8080 ipv6only=off;

        root                                    /var/www/tabletui;

        server_name                             smarthome.tuxnet.local;

        location /fhem {
                proxy_pass http://localhost:8084/fhem;
                proxy_redirect off;
                proxy_buffering off;
        }

        location /pgm2 {
                alias                           /opt/fhem/www/pgm2;
        }

        location /fhem-tablet-ui {
                alias                           /opt/fhem/www/tablet;
                index                           index.html index.htm index.php;
        }

        location / {
                index                           index.html index.htm index.php;
                try_files                       $uri $uri/ /index.php;
        }
}
~                                                                                                                                                        ~                                                                                                                                                        ~                                                                                                                                                        ~                                                                                                                                                        ~                                                                                                                                                        ~                                                                                                                                                        ~                                                                                                                                                        ~                                                                                                                                                        server {                                                                                                                                                         listen [::]:8080 ipv6only=off;                                                                                                                           root                                    /var/www/tabletui;                                                                                               server_name                             smarthome.tuxnet.local;                                                                                          location /fhem {                                                                                                                                                 proxy_pass http://localhost:8084/fhem;                                                                                                                   proxy_redirect off;                                                                                                                                      proxy_buffering off;                                                                                                                             }                                                                                                                                                        location /pgm2 {                                                                                                                                                 alias                           /opt/fhem/www/pgm2;                                                                                              }                                                                                                                                                        location /fhem-tablet-ui {                                                                                                                                       alias                           /opt/fhem/www/tablet;                                                                                                    index                           index.html index.htm index.php;                                                                                  }                                                                                                                                                        location / {                                                                                                                                                     index                           index.html index.htm index.php;                                                                                          try_files                       $uri $uri/ /index.php;                                                                                           }                                                                                                                                                }


Ich habe das im übrigen nie getestet, aber ja wenn ich /fhem Aufrufe kommt FHEMWEB. Aber das gute ist ja das ich die Location /fhem hier in der Konfiguration gut einzeln mit Basic Auth schützen könnte.

Wenn ich smarthome.tuxnet.local:8080 auf rufe kommt sofort tabletui.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

ToM_ToM

Also ich glaube, ich muss mich tatsächlich mit nginx beschäftigen.

Mit Apache bekomme ich das leider nicht zum Laufen. Sobald ich AuthType Digest verwende, kommt permanent die Frage nach Benutzer und Passwort. Egal ob ich es korrekt eingebe oder nicht. Es wird immer behandelt als hätte ich die Login-Daten falsch eingegeben und ich komme nicht auf die Seite.

Zitat
<VirtualHost *:80>
   ServerName tablet.bananapi.local
   ServerAdmin webmaster@localhost
   #DocumentRoot /var/www/html

   DocumentRoot /var/www


   Header set Access-Control-Allow-Origin "*"

   ErrorLog ${APACHE_LOG_DIR}/fhem-ftui-error.log
   CustomLog ${APACHE_LOG_DIR}/fhem-ftui-access.log combined

   ProxyRequests Off
   ProxyVia Off
   ProxyPreserveHost On
   
   <Location /ftui>

          #Für Logpoll = Websocket die Aufrufe umleiten
          RewriteEngine On
          RewriteCond %{HTTP:Upgrade} =websocket [NC]
          RewriteRule /ftui(.*)           ws://localhost:8085/fhem/ftui$1 [P,L]
          RewriteCond %{HTTP:Upgrade} !=websocket [NC]
          RewriteRule /ftui(.*)           http://localhost:8085/fhem/ftui$1 [P,L]

     # Websockets
     ProxyPass ws://localhost:8085/fhem
     ProxyPassReverse ws://localhost:8085/fhem

     # ProxyPass/ProxyPassReverse leitet HTTP requests auf eine andere URL um
     ProxyPass http://localhost:8085/fhem/ftui
     ProxyPassReverse http://localhost:8085/fhem/ftui
     #ProxyHTMLEnable On

          # ProxyHTMLURLMap passt Links im HTML/JavaScript Source an
          ProxyHTMLURLMap /        fhem/www/
          ProxyHTMLURLMap /fhem/     fhem/www/
          #ProxyHTMLURLMap /ftui/images/     /var/ftui/images/


        AuthType Digest
        AuthName "ftui"
   AuthDigestProvider file
        AuthUserFile /var/www/ftui.pwdigest
        Require valid-user
   Order allow,deny
   Allow from all


   </Location>
   

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet


Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

CoolTux

Ich sehe keine einzige Zeile wo was zum Basic auth drin steht. Hast du denn eine passwd angelegt?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

ToM_ToM

Ich habe stattdessen Digest verwendet wie im Beispiel des anderen Threads. Und ja, die Datei ist angelegt.


    AuthType Digest
        AuthName "ftui"
   AuthDigestProvider file
        AuthUserFile /var/www/ftui.pwdigest
        Require valid-user
   Order allow,deny
   Allow from all
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

ToM_ToM

Okay, ich habe den Fehler mit der Passwort-Datei gefunden.

Der Aufrunf von http://192.168.152.250/ftui/ bringt mich jetzt schon mal nach korrekter Login-Eingabe wieder auf die FHEM-Oberfläche.
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

CoolTux

Und hast du den Link angelegt. Von /var/www/ftui nach /opt/fhem/ftui oder ähnlich?
Lädt denn ftui jetzt
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

ToM_ToM

#44
FTUI lädt jetzt wieder. Aber ich habe auch das TABLETUI noch als HTTPSRV Device angelegt.

Die FTUI-Oberfläche kann ich jetzt wieder über http://192.168.152.250/ftui/tablet_pagebutton_modern/index.html aufrufen.
Aber somit bin ich jetzt wieder wie am Anfang, nur dass ich jetzt zusätzlich noch das Frontend mit abgesichert habe.

Wenn ich das HTTPSRV Device lösche, bringt mich der Link http://192.168.152.250/ftui/tablet_pagebutton_modern/index.html auf die FHEM-Seite (nur ohne korrektem Layout).

Um das Frontend anzuzeigen brauche ich jetzt http://192.168.152.250/ftui/tablet/tablet_pagebutton_modern/index.html
Allerdings komme im Frontend nun lauter Fehlermeldungen hoch Authorizateion required
Mir erschließt sich die Logik noch nicht ganz wie jetzt im Hintergrund die Abfragen an Port 8085 stattfinden. Dort verwende ich ja jetzt auch BasicAuth um das Backend abzusichern.

Anbei noch ein Screenshot mit den Symlinks
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8