Hi,
ich habe hier für den Zugriff von außen FHEM über Apache2 laufen, und musste feststellen, dass eigentlich alles nach der Anleitung im Wiki läuft (kleine Änderungen habe ich noch aufgenommen). Ein Problem habe ich allerdings:
Wenn ich in FHEMWEB "Edit Files" und dann "99_myUtils.pm" auswähle, klappt es ohne Proxy. Mit Proxy wird die 99_myUtils.pm in der Mitte irgendwo zerhackt und im Editor kaputt angezeigt. Wenn ich ohne Proxy direkt zugreife, ist alles ok.
Hatte das schonmal jemand?
Danke, Christian
Hi!
Genau das gleiche Problem ist mir auch aufgefallen.
99_myUtils.pm hat beim Editieren (über ReverseProxy) derzeit 61 Zeilen. Hier das letzte Modul, das gerade editiert wurde:
######## Netzwerk Gerät über Fritzbox abfragen V1############
sub checkFritzMACpresent($$) {
# Benötigt: Name der zu testenden Fritzbox ($Device),
# zu suchende MAC ($MAC),
# Rückgabe: 1 = Gerät gefunden
# 0 = Gerät nicht gefunden
my ($Device, $MAC) = @_;
my $Status = 0;
$MAC =~ tr/:/_/;
$MAC = "mac_".uc($MAC);
my $StatusFritz = ReadingsVal($Device, $MAC, "weg");
if ($StatusFritz eq "weg") {
Log 1, ("checkFritzMACpresent ($Device): $MAC nicht gefunden, abwesend.");
$Status = 0;
} elsif ($StatusFritz eq "inactive") {
Log 1, ("checkFritzMACpresent ($Device): $MAC ist >inactive<, also abwesend.");
$Status = 0;
} else {
# Reading existiert, Rückgabewert ist nicht "inactive", also ist das Gerät per WLAN angemeldet.
Log 1, ("checkFritzMACpresent ($Device): $MAC gefunden, Gerät heißt >$StatusFritz<.");
$Status = 1;
}
return $Status
}
Speichern -> FHEM sagt "erfolgreich gespeichert".
Datei wieder geöffnet --> nur noch 54 Zeilen und die letzten Zeilen sind zerhackt:
######## Netzwerk Gerät über Fritzbox abfragen V1############
sub checkFritzMACpresent($$) {
# Benötigt: Name der zu testenden Fritzbox ($Device),
# zu suchende MAC ($MAC),
# Rückgabe: 1 = Gerät gefunden
# 0 = Gerät nicht gefunden
my ($Device, $MAC) = @_;
my $Status = 0;
$MAC =~ tr/:/_/;
$MAC = "mac_".uc($MAC);
my $StatusFritz = ReadingsVal($Device, $MAC, "weg");
if ($StatusFritz eq "weg") {
Log 1, ("checkFritzMACpresent ($Device): $MAC nicht gefunden, abwesend.");
$Status = 0;
} elsif ($StatusFritz eq "inactive") {
Log 1, ("checkFritzMACpresent ($Device): $MAC ist >inactive$StatusFritz<. return ende>
</.>
Gibt es dafür auch eine Lösung? :o
Wie ist denn der Proxy konfiguriert, was macht der genau?
Nur ein URL-Rewriting oder auch andere Sachen?
Ich tippe mal auf unterschiedliche Zeichensätze oder sowas...
in Deinem Fall wird ja scheinbar das < irgendwie als Steuerzeichen gedeutet !?
Zitat von: Hollo am 10 Februar 2016, 12:55:36
Wie ist denn der Proxy konfiguriert, was macht der genau?
Nur ein URL-Rewriting oder auch andere Sachen?
Ich tippe mal auf unterschiedliche Zeichensätze oder sowas...
in Deinem Fall wird ja scheinbar das < irgendwie als Steuerzeichen gedeutet !?
Ich benutze den ReverseProxy, um FHEM (nur) über eine SSL-Verbindung mit Nutzernamen und Passwort erreichbar zu machen.
Er macht also neben URL-Rewriting auch noch Single-Sign on und Verschlüsselung.
Also in etwa sowas:
<VirtualHost *:443>
ProxyPass /fhem http://192.168.178.2:8083/fhem
ProxyPassReverse /fhem http://192.168.178.2:8083/fhem
</VirtualHost>
Im Router habe ich ein Portforwarding von Port 443 auf den Proxyserver:Port443 eingerichtet.
Über https://meinedomain.de/fhem komme ich dann auf meine FHEM-Webseite.
Es funktioniert auch alles wie gewünscht - bis auf den Effekt mit dem Editor in FHEM.
Ich habe das gerade mit einem Apache/Proxy/Reverseproxy getestet, und hatte keine Probleme die Datei in FHEMWEB zu bearbeiten. Ich habe die Date schrittweise bis 100k vergroessert, dann wurde es mir langweilig.
Auch mit der gezeigten Funktion (checkFritzMACpresent) hatte ich keine Probleme
Hab auch seit ca. 2 Jahren die selbe Konstellation laufen und noch nie Probleme gehabt.
Hmm,
nachdem das bei anderen offenbar keine Probleme macht, habe ich nun noch ein wenig probiert.
Ich hatte da noch folgendes aktiv:
SetOutputFilter INFLATE;proxy-html;DEFLATE
Nachdem ich das entfernt hatte konnte ich nach einem Reload des Webservices tatsächlich auch problemlos über den ReverseProxy die Datei editieren. ;D
Danke für's anstupsen! ;)
Das Problem ist, dass es hier ohne
SetOutputFilter INFLATE;proxy-html;DEFLATE
gar nicht funktioniert. Dann bekomme ich beim Aufruf der Seite nur einen Content Encoding Fehler vom Browser. Der Apache sagt dazu:
[Thu Feb 11 13:52:50.526867 2016] [deflate:error] [pid 26979] [client 192.168.3.3:64585] AH01402: Zlib error 1 flushing inflate buffer ((null)), referer: https://www.example.com/fhem
Hm...