Komisches Verhalten von FHEMWEB hinter Proxy

Begonnen von eki, 26 Mai 2020, 21:04:20

Vorheriges Thema - Nächstes Thema

eki

Ich habe hier eine FHEM Installation, die Apache als Proxy/ReverseProxy verwendet. Das funktioniert  auch alles soweit, allerdings gibt es ein eigenartiges Verhalten wenn ich FHEM Files in der FHEMWEB Oberfläche im Browser öffne. Sobald die Files irgendetwas enthalten, das wie HTML aussieht z.B. "<IN>" in den gplot Files, dann wird der Inhalt des Files im Browser verändert. Das sieht für mich so aus, als ob der Apache oder wer auch immer, das als HTML interpretiert und versucht zu "reparieren", indem er z.B. "</in>" ans Ende setzt und alles, was in "<>" steht in Kleinbuchstaben wandelt.
Als Beispiel hier mal ein Screenshot des FHEM Editors für ein Standard Gplot File.

Das passiert nur, wenn http über den Apache läuft, wenn ich mich per VPN auf den Server einlogge und auf die lokalen Adressen gehe, ist alles OK, die Files selbst enthalten die Anhängsel natürlich nicht.

Hat irgendjemand eine Idee was da los ist?

Wernieman

- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

xenos1984

Benutzt du in der Proxy Config ProxyHTMLDocType?

ZitatIf the first form is used, mod_proxy_html will also clean up the HTML to the specified standard. It cannot fix every error, but it will strip out bogus elements and attributes. It will also optionally log other errors at LogLevel Debug.

eki


                                                                             
<VirtualHost *:80>                                                           
    ServerName           Domain                               
    RedirectPermanent    / https://Domain/                   
    RewriteEngine on                                                         
    RewriteCond %{SERVER_NAME} = Domain                       
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]   
</VirtualHost>                                                               

<VirtualHost *:443>                                   
    ServerName          Domain       
                                                     
    SSLEngine           on                           
    SSLProtocol         all -SSLv2 -SSLv3             
    SSLCipherSuite      ECDHE-RSA-AES128-GCM-SHA256:EC...
    SSLHonorCipherOrder on                           
    SSLCompression      off                           
    SSLOptions          +StrictRequire               
                                                     
                                                     
    #Use RootDir /var/www/fhemweb  # hier sollte ein V...
                                                     
    ProxyPass  /.well-known !                         

    Alias /.well-known "/var/www/proxy/.well-known" 
    <Directory "/var/www/fhemweb/.well-known">       
       order allow,deny                             
       allow from all                               
       AllowOverride All                             
       AddDefaultCharset Off                         
    </Directory>                                     
                                                     
    RewriteEngine on                                 
    RewriteCond %{HTTP:Upgrade} =websocket [NC]     
    RewriteRule /fhem(.*)           ws://localhost:2019/fhem$1 [P]     
    RewriteCond %{HTTP:Upgrade} !=websocket [NC]                       
    RewriteRule /fhem(.*)           http://localhost:2019/fhem$1 [P]   
                                                                       
    ProxyRequests Off                                                 
    ProxyVia Off                                                       
    ProxyPreserveHost       Off                                       
    ProxyPass          /fhem http://Hostname:2019/fhem           
    ProxyPassReverse   /fhem http://Hostname:2019/fhem           
                                                                       
    #Header always set Strict-Transport-Security "max-age=31536000"   
                                                                       
    <Proxy *>                                                         
        Order deny,allow                                               
        Allow from all                                                 
        AuthType Basic                                                 
        AuthName "Password Required"                                                                                       
        AuthUserFile /etc/fhem-htpasswd                                         
        Require valid-user                                                     
    </Proxy>                                                                   

    SetOutputFilter INFLATE;proxy-html;DEFLATE                                 
    SSLCertificateFile          /etc/letsencrypt/live/Domain/fuLachanfall.pem
    SSLCertificateKeyFile       /etc/letsencrypt/live/Domain/prIckes.pem
    Include /etc/letsencrypt/options-ssl-apache.conf                           
</VirtualHost>                                                                 


Einige Zeilen sind gekürzt, der richtige Domainname ist durch "Domain" bzw. der richtige Hostnamen durch "Hostnamen" ersetzt.

Christoph Morrison

Wie sieht die Konfiguration von mod_proxy_html aus?

Wernieman

Bin jetzt nicht sooo tief im apache, aber könnte es "SetOutputFilter" sein?
https://httpd.apache.org/docs/2.4/filter.html

Und der Inhalt von Include /etc/letsencrypt/options-ssl-apache.conf
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

eki

Zitat von: Christoph Morrison am 26 Mai 2020, 21:39:24
Wie sieht die Konfiguration von mod_proxy_html aus?



ProxyHTMLLinks  a               href                             
ProxyHTMLLinks  area            href                             
ProxyHTMLLinks  link            href                             
ProxyHTMLLinks  img             src longdesc usemap             
ProxyHTMLLinks  object          classid codebase data usemap     
ProxyHTMLLinks  q               cite                             
ProxyHTMLLinks  blockquote      cite                             
ProxyHTMLLinks  ins             cite                             
ProxyHTMLLinks  del             cite                             
ProxyHTMLLinks  form            action                           
ProxyHTMLLinks  input           src usemap                       
ProxyHTMLLinks  head            profile                         
ProxyHTMLLinks  base            href                             
ProxyHTMLLinks  script          src for                         



Der Rest ist auskommentiert.

Christoph Morrison

#7
Hast du testweise den Filter für proxy-html mal ausgeschaltet um eingrenzen zu können ob es an mod_proxy_html liegt? Deflate/Inflate machen sowas sicher nicht.
Es sieht so aus als würde das Markup irgendwie "repariert" werden.

Was mich stutzig macht an dem was du gepostet hast, ist, dass der Filter ohne ProxyHTMLEnable gar nicht funktionieren würde, d.h. es muss irgendwo noch mehr Config geben. grep mal nach ProxyHTML in /etc/apache2 - vielleich ist noch in einer anderen Config was.

Wernieman

Ich würde auch so vergehen:
Mal einiges Auskommentieren und prüfen, ob es dann noch geht bzw. eventuell der Fehler "weg" ist ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html