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

Sobald ich in meiner Config folgendes verwende:


  ProxyPass http://localhost:8085/fhem
  ProxyPassReverse http://localhost:8085/fhem


verlangt der Browser nach den Login-Daten von FHEM.
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

ToM_ToM

Hier nochmal meine aktuelle Config mit der jetzt alles über den Apache läuft und nicht mehr über HTTPSVR.


<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 /fhem>

          #Für Logpoll = Websocket die Aufrufe umleiten
          RewriteEngine On
          RewriteCond %{HTTP:Upgrade} =websocket [NC]
          RewriteRule /fhem(.*)           ws://localhost:8085/fhem$1 [P,L]
          RewriteCond %{HTTP:Upgrade} !=websocket [NC]
          RewriteRule /fhem(.*)           http://localhost:8085/fhem$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
  ProxyPassReverse http://localhost:8085/fhem
  ProxyHTMLEnable On

SetOutputFilter INFLATE;proxy-html;DEFLATE

</Location>


</VirtualHost>

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



Symlink habe ich jetzt auch angepasst und somit nur noch einen (siehe Screenshot).

Im Prinzip steht jetzt nur noch das LOGIN-Thema aus.

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

ToM_ToM

Ich habe schon versucht, den Weiterleitungs-Urls die Login-Daten mitzugeben

ProxyPass USER_NAME:PASSWORD@http://localhost:8085/fhem

Hat aber leider auch nicht geholfen.
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

CoolTux

Zitat von: ToM_ToM am 07 Juli 2018, 16:10:51
Ich habe schon versucht, den Weiterleitungs-Urls die Login-Daten mitzugeben

ProxyPass USER_NAME:PASSWORD@http://localhost:8085/fhem

Hat aber leider auch nicht geholfen.

Das verstehe ich jetzt gar nicht. Du solltest dich das Basic auth bei FHEM rausnehmen? Und wieso ist ein Link unter /var/www/ auf fhem. Eigentlich brauchst doch nur einen für ftui.
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

ZitatDas verstehe ich jetzt gar nicht. Du solltest dich das Basic auth bei FHEM rausnehmen? Und wieso ist ein Link unter /var/www/ auf fhem. Eigentlich brauchst doch nur einen für ftui.

Und wie sichere ich dann das Backend gegen Zugriff ab wenn ich das rausnehme? Das verstehe ich leider noch nicht so ganz.
Wenn ich nur einen ftui-Verzeichnis habe, wie soll ich dann den Proxy konfigurieren? Muss mir das morgen nochmal in Ruhe anschauen.

Aber jetzt erst mal Gute Nacht! ;)
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

CoolTux

Du musst unterscheiden zwischen TabletUI und FHEM. FHEM kann man auch noch anders einschränken wie nur durch Passwort.
Du kannst allowedFrom verwenden um den Zugriff nur von locahost zu erlauben.
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

ZitatDu kannst allowedFrom verwenden um den Zugriff nur von locahost zu erlauben.

Aaah... jetzt verstehe ich. :) Cool.

Aber so richtig komme ich immer noch nicht ans Ziel. Ich habe jetzt die letzten 4 Stunden sämtliche Einstellungen und Variationen durchprobiert.

Ziel ist, wenn der User http://192.168.152.250/frontend eingibt, soll er die FTUI-Oberfläche sehen und mehr nicht.

Meine Config sieht nun so aus:

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

DocumentRoot /var/www

AddDefaultCharset UTF-8


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 /frontend>

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

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

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

          # ProxyHTMLURLMap passt Links im HTML/JavaScript Source an
          #ProxyHTMLURLMap /        /fhem/
          #ProxyHTMLURLMap /frontend/     /frontend/
         


        #AuthType Basic
        #AuthName "Password Required"
        #AuthUserFile /var/www/basicAuth.htpasswd
        #Require valid-user
#Order allow,deny
#Allow from all

SetOutputFilter INFLATE;proxy-html;DEFLATE

</Location>



</VirtualHost>

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


Anbei auch nochmal die Screenshots was ich aktuell mit dieser Config zu sehen bekomme wenn ich http://192.168.152.250/frontend eingebe und http://192.168.152.250/frontend/tablet_pagebutton_modern/index.html

Den Symlink _fhem im Screenshot kannst du ignorieren. Dem habe ich einen Unterstrich verpasst weil er in dieser Config nicht verwendet wird.

In meiner index.html binde ich die Scripte so ein:


<!-- <script type="text/javascript" src="/fhem/pgm2/jquery.min.js"></script> -->
<script type="text/javascript" src="/frontend/js/fhem-tablet-ui.js" defer></script>

<!-- Widget analogclock von http://ueberueck.com/index.php/fhem-hausautomatisierung/fhem-tablet-ui/ftui-widget-analogclock -->
<script type="text/javascript" src="/frontend/lib/analogclock.js"></script>

<!-- define your personal style here, it wont be overwritten  -->
<link rel="stylesheet" href="/frontend/css/fhem-tablet-ui-user2.css" />


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

CoolTux

Kann das leider zur Zeit nicht nachstellen. Zu wenig Zeit.
Eventuell findest du noch Hinweise im TabletUI Forum. Da mal rein gehen und oben in der Suche Apache eingeben.
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

Habe es gerade eine Stunde versucht. Ich bekomme es jedenfalls nicht so schön hin wie mit nginx.

Daher meine Empfehlung. Nimm nginx
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.

Danke dass du dir die Zeit dafür nimmst, es zu testen.

Ich habe es jetzt soweit hinbekommen dass ich via http://192.168.152.250/frontend/index.html auf die FTUI-Oberfläche komme und wenn ich den Teil frontend oder index weglasse, nicht mehr in FHEM lande.

Gebe ich allerdings http://192.168.152.250/frontend/index.html/ ein, also mit einem Slash am Ende, dann wird mir das FHEM-Backend angezeigt.


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

DocumentRoot /var/www

AddDefaultCharset UTF-8


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

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

  # ProxyPass/ProxyPassReverse leitet HTTP requests auf eine andere URL um
  ProxyPass http://localhost/fhem/www/tablet/tablet_pagebutton_modern
  ProxyPassReverse http://localhost/fhem/www/tablet/tablet_pagebutton_modern
  ProxyHTMLEnable On


SetOutputFilter INFLATE;proxy-html;DEFLATE



</Location>

<Location /fhem>

          #Für Logpoll = Websocket die Aufrufe umleiten
          RewriteEngine On
          RewriteCond %{HTTP:Upgrade} =websocket [NC]
          RewriteRule /fhem(.*)           ws://localhost:8085/fhem$1 [P,L]
          RewriteCond %{HTTP:Upgrade} !=websocket [NC]
          RewriteRule /fhem(.*)           http://localhost:8085/fhem$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
  ProxyPassReverse http://localhost:8085/fhem
  ProxyHTMLEnable On

          # ProxyHTMLURLMap passt Links im HTML/JavaScript Source an
          #ProxyHTMLURLMap /        /fhem/
          #ProxyHTMLURLMap /fhem/     /fhem/
         


        #AuthType Basic
        #AuthName "Password Required"
        #AuthUserFile /var/www/basicAuth.htpasswd
        #Require valid-user
#Order allow,deny
#Allow from all

SetOutputFilter INFLATE;proxy-html;DEFLATE

</Location>




</VirtualHost>

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



Mit nginx bekomme ich das so hin wie ich das gerne hätte, dass man sich nur FTUI anzeigen lassen kann und nicht mehr aufs FHEM-Backend kommt?
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

CoolTux

Ich bin soweit gekommen das ich einfach nur
http://tablet.bananapi.local

eingegeben habe und dann auf die FTUI Seite gekommen bin. Leider habe ich aber nur das Hintergrundbild gesehen. Laut F12 Entwicklerkonsole konnte er /gmp2 oder so ähnlich nicht laden.

Wie gesagt konnte ich bei meinem NGINX auch /fhem eingeben und war dann auf FHEM. ABER!!! Du kannst ja einen Browser nehmen wo die Start URL festgesetzt ist. Du kannst die URL Zeile entfernen so das man nur über das eigentliche FTUI Menü navigieren kann. Das kannst Du mit dem Browser machen.


Du kannst die FHEM Instanz welche Du über nginx oder auch Apache aufrufst doch kastrieren. Du kannst ähnlich wie beim webhook Wikieintrag alle Räume unsichtbar machen so das man gar nichts mehr sieht.
https://wiki.fhem.de/wiki/GEOFANCY#Webhook_weiter_absichern
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

ZitatLeider habe ich aber nur das Hintergrundbild gesehen. Laut F12 Entwicklerkonsole konnte er /gmp2 oder so ähnlich nicht laden.

Ja das kenne ich. Hatte auch ewig gebraucht um es mit der Konfiguration jetzt hinzubekommen. Es sind im Prinzip 3 Punkte die man hinbekommen muss.

1. genereller Seitenaufruf
2. das korrekte Laden der JS und CSS - Files aus den richtigen Pfaden
3. Asynchrones Aktualisieren im Hintergrund damit das Frontend Statusänderungen mitbekommt.

Das mit dem Aufruf über http://tablet.bananapi.local funktioniert bei mir leider nicht. Ich muss immer den Weg über die IP gehen. Aber damit kann ich leben.

Dann behalte ich mal meine Konfig so bei (sie läuft ja jetzt so) und passe das Backend von FHEM auf Port 8085 soweit an dass man dort nichts mehr machen kann.

Vielen vielen Dank nochmal für deine Hilfe!  :D
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

CoolTux

Gerne doch.

Hier siehst Du mal wie es bei mir aus sieht wenn man die FHEM Instanz aufruft
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

Ein Problem habe ich aber leider noch mit der Apache/Proxy-Lösung.

Umlaute und Gradzeichen etc. werden nicht korrekt dargestellt.

In der Apache Config habe ich folgendes eingefügt:


AddDefaultCharset UTF-8


In der index.html habe ich auch folgendes im Header:
<meta http-equiv="content-type" content="text/html; charset=utf-8">

Aber irgendwie werden die Sonderzeichen nicht korrekt dargestellt. Hast du da evtl. noch eine Idee?

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

CoolTux

Zitat von: ToM_ToM am 09 Juli 2018, 19:44:29
Ein Problem habe ich aber leider noch mit der Apache/Proxy-Lösung.

Umlaute und Gradzeichen etc. werden nicht korrekt dargestellt.

In der Apache Config habe ich folgendes eingefügt:


AddDefaultCharset UTF-8


In der index.html habe ich auch folgendes im Header:
<meta http-equiv="content-type" content="text/html; charset=utf-8">

Aber irgendwie werden die Sonderzeichen nicht korrekt dargestellt. Hast du da evtl. noch eine Idee?

VG, Thomas

Leider nein. Sorry. Müsste da auch erstmal im Netz schauen.
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