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

Hi Leon,

könntest du bitte mal drüberschauen ob du vielleicht siehst was ich falsch mache?
Den Cross Origin Fehler konnte ich jetzt los werden, aber ich bekomme immer noch eine Meldung dass die JavaScript Dateien nicht geladen werden konnten.

Meine Apache-Config:

<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]

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

          # ProxyHTMLURLMap passt Links im HTML/JavaScript Source an
          ProxyHTMLURLMap /        fhem/www/
          ProxyHTMLURLMap /fhem/     fhem/www/
          #ProxyHTMLURLMap /ftui/     /var/www/ftui/
</Location>

#<Directory />
        #  RedirectPermanent /ftui/ /fhem/www/
#</Directory>


</VirtualHost>

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



Im Pfad /war/www liegen 2 Symlinks

fhem zeigt auf /opt/fhem
ftui zeigt auf /opt/fhem/www

Meine index.html liegt unter /opt/fhem/www/tablet/tablet_pagebutton_modern

In der Index.html werden die Scriptfiles vom Pfad her so eingebunden:
<script type="text/javascript" src="/fhem/tablet/js/fhem-tablet-ui.js" defer></script>

Anbei auch nochmal ein Screenshot der Ausgabe die mir angezeigt wird.

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

CoolTux

Hallo Thomas,

Ich verwende Apache nicht und müsste auch im Netz schauen. Leider derzeit keine Zeit, würde gerne helfen.


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

Okay, ich hatte gedacht du hast das auch bei dir eingerichtet.

Trotzdem danke für dein Feedback.
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

CoolTux

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

Juhuuuu ich habe es endlich hinbekommen. Der Trick war, meine Pfade in der index.html anzupassen.
<script type="text/javascript" src="/fhem/www/tablet/lib/analogclock.js"></script>
Was für ein schwere Geburt....  :P

Aber Leon, jetzt habe ich trotzdem noch eine Frage an dich: Du hattest mir ja wegen meiner ursprünglichen Frage hier im Thread zu ReverseProxy geraten.

Wie kann ich denn nun verhindern dass ein Benutzer http://fhem-ip:8085/fhem aufruft? Bzw. wenn ich diesen Port mit BasicAuth versehe, kann dann meinen ReverseProxy so konfigurieren dass beim Aufruf von http://fhem-ip/ftui diese Login-Angaben nicht nötig sind?

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

CoolTux

Du musst dafür sorgen das nun nur noch über den Reverse Proxy Seiten aufgerufen werden. Dann kannst Du dafür sorgen das einzelne Pfade am Reverse Proxy mit Passwort versehen werden und andere offen sind.

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 musst dafür sorgen das nun nur noch über den Reverse Proxy Seiten aufgerufen werden.
Das ist leichter gesagt, als getan. Wenn ich dem WEBtablet das basicAuth verpasse, werde ich auch über die andere URL nach den Login-Daten gefragt.
Wenn ich den Port 8085 als zusätzlichen virtuellen Host zu meinem Apachen hinzufüge, wird dieser ignoriert da der ja von FHEM geöffnet ist.

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 04 Juli 2018, 16:52:51
Das ist leichter gesagt, als getan. Wenn ich dem WEBtablet das basicAuth verpasse, werde ich auch über die andere URL nach den Login-Daten gefragt.
Wenn ich den Port 8085 als zusätzlichen virtuellen Host zu meinem Apachen hinzufüge, wird dieser ignoriert da der ja von FHEM geöffnet ist.

VG, Thomas

Zeig mal Deine Konfig
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

Die Apache-Config sieht aktuell so aus:


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


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

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

Okay vielen Dank :)

FHEM
ist bei mir normal unter /opt/fhem installiert und
FTUI unter /opt/fhem/www/tablet

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

CoolTux

Sehe gerade wo ist den der Eintrag für Basic auth?
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

Die habe ich da nicht drin, da ich ja nicht das Tablet, sondern nur den Zugriff aufs Backend sperren möchte.

Zuvor hatte ich es mit zusätzlichem VirtualHost in der Config probiert, einfach Zugriffe auf Port 8085 umzuleiten.
Hatte jedoch auch nicht funktioniert.


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

DocumentRoot /var/www

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>

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

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

</Location>

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

CoolTux

Zitat von: ToM_ToM am 04 Juli 2018, 19:42:28
Die habe ich da nicht drin, da ich ja nicht das Tablet, sondern nur den Zugriff aufs Backend sperren möchte.

Zuvor hatte ich es mit zusätzlichem VirtualHost in der Config probiert, einfach Zugriffe auf Port 8085 umzuleiten.
Hatte jedoch auch nicht funktioniert.


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

DocumentRoot /var/www

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>

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

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

</Location>

</VirtualHost>


Naja das kann ja auch nicht gehen.


ProxyPass http://localhost:80/ftui
ProxyPassReverse http://localhost:80/ftui


Auf Port 80 ist doch nichts außßer der Apache selbst.
Das muss 8085 sein.

Ausserdem

<VirtualHost *:8085>

kann das auch nicht gehen. Auf Port 8085 ist doch schon FHEMWEB da kann dann nicht noch der Apache lauschen.

Leider habe ich wenig Zeit daher nur kurz das Prinzip. Ich habe mich jetzt mal eine Stunde mit den Apache beschäftigt.
apachectl configtest - zum testen Deiner Konfiguration
Danach machst ein
systemctl reload apache2



genereller Aufbau


<VirtualHost *:80>     # auf welchen Port soll gelauscht werden
    ProxyPreserveHost On

    <Location /ftui>
        ProxyPass  http://p-fhem02.tuxnet.lan:8083/fhem/ftui/                    # wohin weiterleiten
        ProxyPassReverse http://p-fhem02.tuxnet.lan:8083/fhem/ftui/      # wohin weiterleiten
        AuthType Basic
        AuthName "PellMon"
        AuthUserFile /etc/pellmon/pwd
        AuthBasicProvider file
        require valid-user
    </Location>

    <Location />
        require all granted
        ProxyPass http://p-fhem02.tuxnet.lan:8083/
        ProxyPassReverse http://p-fhem02.tuxnet.lan:8083/
    </Location>
</virtualhost>

Ganz wichtig. Du musst natürlich die Passwortabfrage innerhalb von FHEMWEB aus schalten!!!!

Und hier siehst Du schon was ich meine. Du musst mehrere locations anlegen. Wobei es nach URL aufrufe geht.
/fhem wird mit Passwort versehen
/ftui wird nicht mit Passwort versehen.

Versuche mal bitte ob Du das umsetzen kannst. Sorry das ich so wenig Zeit gerade habe.
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

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