asyncOutput() und FHEMWEB mit websocket Probleme

Begonnen von CoolTux, 06 März 2018, 16:54:49

Vorheriges Thema - Nächstes Thema

CoolTux

Ja ist es sicherlich. Steht ja auch ausser Frage. Mich interessiert aber wieso. Der Port wird forwarded, Protokoll TCP. Leider kenne ich websocket nicht, denke aber es sollte doch mit dem Forward ohne Probleme gehen. Oder?
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

dev0

Wenn es weitergeletet wird: ja. Bist Du sicher, dass es so ist?

CoolTux

Ja denn die Webseite wird ja geladen, ich kann die Widgets verwenden, also damit auch schalten, es werden alles Readings angezeigt und das beste es werden mir aktuallisierte Readings angezeigt. Also Reading Timestamp ändert sich und wird rot.
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

dev0

Wäre ich von diesem Problem betroffen, dann würde ich den in/out Traffic auf dem Switchport mitschneiden und mit Wireshark o.ä. nachschauen, ob wirklich alles _unverändert_ durchgeht. Oder die FW, zum Testen, deaktivieren. Je nach Aufwand.

CoolTux

Zitat von: dev0 am 08 März 2018, 13:17:18
Wäre ich von diesem Problem betroffen, dann würde ich den in/out Traffic auf dem Switchport mitschneiden und mit Wireshark o.ä. nachschauen, ob wirklich alles _unverändert_ durchgeht. Oder die FW, zum Testen, deaktivieren. Je nach Aufwand.

Es handelt sich dabei um simpelstes linux kernel packetfiltern. Ich schaue heute Abend gerne auch nich mit wenn ich teste was die Firewall dazu sagt.
Ausschalten geht leider nicht, dann ist alles tot.
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

Hallo Rudi,

Hier nun die Daten für den direkten Zugriff, lediglich über eine Firewall mit Portforwarding




Browserkonsole

20:01:14.586 FW_queryValue:{AttrVal("aqicnMaster","room","")}
fhemweb.js:427 20:01:14.680 Inform-channel opened (websocket) with filter aqicnMaster
fhemweb.js:427 20:01:15.093 Rcvd:
fhemweb.js:427 20:02:08.096 FW_cmd:/fhem?detail=aqicnMaster&dev.getaqicnMaster=aqicnMaster&fwcsrf=csrf_821718558298017&cmd.getaqicnMaster=get&arg.getaqicnM...
fhemweb.js:1106 WebSocket connection to 'wss://fhem02.tuxnet.local:8083/fhem?XHR=1&inform=type=status;filter=aqicnMaster;since=1520535674;fmt=JSON&fw_id=919&timestamp=1520535674680' failed: A server must not mask any frames that it sends to the client.
fhemweb.js:427 20:02:09.895 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<
fhemweb.js:427 20:02:14.796 ERRMSG:<
fhemweb.js:427 20:02:14.896 Inform-channel opened (websocket) with filter aqicnMaster
fhemweb.js:427 20:02:15.151 Rcvd: ["aqicnMaster","search finished","<div id=\u0022aqicnMaster\u0022  title=\u0022search finished\u0022 class=\u0022col2\u0022>search f...(147)



FHEM Log

2018.03.08 20:02:08 4: WEB_10.6.6.17_37301 POST /fhem?detail=aqicnMaster&dev.getaqicnMaster=aqicnMaster&cmd.getaqicnMaster=get&arg.getaqicnMaster=stationSearchByCity&val.getaqicnMaster=Potsdam&XHR=1&addLinks=1&fwcsrf=csrf_821718558298017&fw_id=919; BUFLEN:0
2018.03.08 20:02:08 4: authorize WEB/cmd/get: allowed_WEB returned dont care
2018.03.08 20:02:08 4: authorize WEB/cmd/get: allowed_WEBhook returned dont care
2018.03.08 20:02:08 4: authorize WEB/devicename/aqicnMaster: allowed_WEB returned dont care
2018.03.08 20:02:08 4: authorize WEB/devicename/aqicnMaster: allowed_WEBhook returned dont care
2018.03.08 20:02:09 4: WEB: /fhem?detail=aqicnMaster&dev.getaqicnMaster=aqicnMaster&cmd.getaqicnMaster=get&arg.getaqicnMaster=stationSearchByCity&val.getaqicnMaster=Potsdam&XHR=1&addLinks=1&fwcsrf=csrf_821718558298017&fw_id=919 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2018.03.08 20:02:10 4: AsyncOutput from WEB_10.6.6.17_37301
2018.03.08 20:02:10 4: Connection closed for WEB_10.6.6.17_37340: EOF
2018.03.08 20:02:15 4: Connection accepted from WEB_10.6.6.17_37344
2018.03.08 20:03:05 4: Closing inactive connection WEB_10.6.6.17_37302
2018.03.08 20:04:05 4: Closing inactive connection WEB_10.6.6.17_37301


Das Firewalllog meldet nichts.
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

rudolfkoenig

Habe nicht wirklich eine Idee, und verstehe auch die Chrome-Fehlermeldung nicht.
Kannst du bitte den Text noch ausgeben, indem du in 01_FHEMWEB.pm die neue Zeile
  Log3 $hash->{SNAME}, 4, "AsyncOutput from $hash->{NAME}";
durch
  Log3 $hash->{SNAME}, 4, "AsyncOutput from $hash->{NAME} $data";
ersetzt, und nochmal testest?

Gibt es diese Probleme auch durch einen ssh Tunnel zum FHEM Server?
D.h. "ssh -L8083:localhost:8083 fhemuser@fhemserver", und im Browser http://localhost:8083/fhem

CoolTux

Zitat von: rudolfkoenig am 09 März 2018, 19:36:57
Habe nicht wirklich eine Idee, und verstehe auch die Chrome-Fehlermeldung nicht.
Kannst du bitte den Text noch ausgeben, indem du in 01_FHEMWEB.pm die neue Zeile
  Log3 $hash->{SNAME}, 4, "AsyncOutput from $hash->{NAME}";
durch
  Log3 $hash->{SNAME}, 4, "AsyncOutput from $hash->{NAME} $data";
ersetzt, und nochmal testest?

Gibt es diese Probleme auch durch einen ssh Tunnel zum FHEM Server?
D.h. "ssh -L8083:localhost:8083 fhemuser@fhemserver", und im Browser http://localhost:8083/fhem

Kann ich gerne testen.
Kann auch mal versuchen über ssh ein Socket Proxy auf zu bauen. Mal schauen.


Da keine Dir.
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

Guten Morgen Rudi,

Interessanter Weise bekomme ich über SSH den selben Effekt. Anbei die Logs


2018.03.10 07:31:30 4: WEB_127.0.0.1_45452 POST /fhem?detail=aqicnMaster&dev.getaqicnMaster=aqicnMaster&cmd.getaqicnMaster=get&arg.getaqicnMaster=stationSearchByCity&val.getaqicnMaster=Potsdam&XHR=1&addLinks=1&fwcsrf=csrf_821718558298017&fw_id=3098; BUFLEN:0
2018.03.10 07:31:30 4: authorize WEB/cmd/get: allowed_WEB returned dont care
2018.03.10 07:31:30 4: authorize WEB/cmd/get: allowed_WEBhook returned dont care
2018.03.10 07:31:30 4: authorize WEB/devicename/aqicnMaster: allowed_WEB returned dont care
2018.03.10 07:31:30 4: authorize WEB/devicename/aqicnMaster: allowed_WEBhook returned dont care
2018.03.10 07:31:30 4: WEB: /fhem?detail=aqicnMaster&dev.getaqicnMaster=aqicnMaster&cmd.getaqicnMaster=get&arg.getaqicnMaster=stationSearchByCity&val.getaqicnMaster=Potsdam&XHR=1&addLinks=1&fwcsrf=csrf_821718558298017&fw_id=3098 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2018.03.10 07:31:31 4: AsyncOutput from WEB_127.0.0.1_45452 ["#FHEMWEB:WEB","FW_okDialog('<table><tr><td><table class=\u0022block wide\u0022><tr class=\u0022even\u0022><td><b>City</b></td><td><b>Last Update Time</b></td><td><b>Latitude</b></td><td><b>Longitude</b></td><td></td></tr><tr class=\u0022odd\u0022><td>Potsdam, Großbeerenstr. v, Germany</td><td>2018-03-10 06:00:00</td><td>52.389817</td><td>13.0903142</td><td><a target=\u0022_blank\u0022 href=\u0022https://www.google.de/maps/search/52.389817+13.0903142\u0022>Station on Google Maps</a></td><td><a href=\u0022https://localhost:8083/fhem?cmd=define+Potsdam__Gro_beerenstr._v__Germany+Aqicn+6198&fwcsrf=csrf_821718558298017\u0022>Create Station Device</a></td></tr><tr class=\u0022even\u0022><td>Potsdam-Zentrum, Germany</td><td>2018-03-10 07:00:00</td><td>52.401111111111</td><td>13.059722222222</td><td><a target=\u0022_blank\u0022 href=\u0022https://www.google.de/maps/search/52.401111111111+13.059722222222\u0022>Station on Google Maps</a></td><td><a href=\u0022https://localhost:8083/fhem?cmd=define+Potsdam_Zentrum__Germany+Aqicn+6189&fwcsrf=csrf_821718558298017\u0022>Create Station Device</a></td></tr><tr class=\u0022odd\u0022><td>Potsdam, Zeppelinstr. v, Germany</td><td>2018-03-10 07:00:00</td><td>52.393888888889</td><td>13.037777777778</td><td><a target=\u0022_blank\u0022 href=\u0022https://www.google.de/maps/search/52.393888888889+13.037777777778\u0022>Station on Google Maps</a></td><td><a href=\u0022https://localhost:8083/fhem?cmd=define+Potsdam__Zeppelinstr._v__Germany+Aqicn+6199&fwcsrf=csrf_821718558298017\u0022>Create Station Device</a></td></tr><tr class=\u0022even\u0022><td>Potsdam, Groß Glienicke, Germany</td><td>2018-03-10 07:00:00</td><td>52.484166666667</td><td>13.123611111111</td><td><a target=\u0022_blank\u0022 href=\u0022https://www.google.de/maps/search/52.484166666667+13.123611111111\u0022>Station on Google Maps</a></td><td><a href=\u0022https://localhost:8083/fhem?cmd=define+Potsdam__Gro__Glienicke__Germany+Aqicn+6188&fwcsrf=csrf_821718558298017\u0022>Create Station Device</a></td></tr></table></td></tr></table>')",""]
2018.03.10 07:31:31 4: Connection closed for WEB_127.0.0.1_45498: EOF
2018.03.10 07:31:36 4: Connection accepted from WEB_127.0.0.1_45512
2018.03.10 07:31:36 4: Connection closed for WEB_127.0.0.1_45512: EOF
2018.03.10 07:31:37 4: Connection accepted from WEB_127.0.0.1_45516




07:31:01.530 FW_queryValue:{AttrVal("aqicnMaster","room","")}
fhemweb.js:427 07:31:01.625 Inform-channel opened (websocket) with filter aqicnMaster
fhemweb.js:427 07:31:02.005 Rcvd:
fhemweb.js:427 07:31:30.392 FW_cmd:/fhem?detail=aqicnMaster&dev.getaqicnMaster=aqicnMaster&fwcsrf=csrf_821718558298017&cmd.getaqicnMaster=get&arg.getaqicnM...
fhemweb.js:1106 WebSocket connection to 'wss://localhost:8083/fhem?XHR=1&inform=type=status;filter=aqicnMaster;since=1520663460;fmt=JSON&fw_id=3098&timestamp=1520663461624' failed: Invalid frame header
FW_longpoll @ fhemweb.js:1106
(anonymous) @ VM214:1
fhemweb.js:427 07:31:31.669 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<
fhemweb.js:427 07:31:36.570 ERRMSG:<
fhemweb.js:427 07:31:36.670 Inform-channel opened (websocket) with filter aqicnMaster
fhemweb.js:427 07:31:37.085 Rcvd:
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

rudolfkoenig

Bin ratlos, bei mir funktioniert es: Ich habe aus der AsyncOutput-Zeile in deinem Log die <table>...</table> Daten in /tmp/t.txt gespeichert, es mit <html> "umkeidet", \u0022 in " konvertiert und es per
Zitatfhem> { FW_AsyncOutput($defs{"WEB_127.0.0.1_53192"}, `cat /tmp/t.txt`) }
angezeigt, und ich bekomme die angehaengte Darstellung, was meiner Ansicht nach ok ist.

Irgendwer muss bei Dir die Daten aendern, ich wuerde, wie dev0 das vorgeschlagen hat, mit Wireshark / tcpdump / etc es in beiden Faellen (geht/geht nicht) protokollieren, und die beiden Protokolle vergleichen. Sorry, aber das ist das Beste, was mir z.Zt. einfaellt.

CoolTux

Zitat von: rudolfkoenig am 10 März 2018, 12:06:03
Bin ratlos, bei mir funktioniert es: Ich habe aus der AsyncOutput-Zeile in deinem Log die <table>...</table> Daten in /tmp/t.txt gespeichert, es mit <html> "umkeidet", \u0022 in " konvertiert und es per angezeigt, und ich bekomme die angehaengte Darstellung, was meiner Ansicht nach ok ist.

Irgendwer muss bei Dir die Daten aendern, ich wuerde, wie dev0 das vorgeschlagen hat, mit Wireshark / tcpdump / etc es in beiden Faellen (geht/geht nicht) protokollieren, und die beiden Protokolle vergleichen. Sorry, aber das ist das Beste, was mir z.Zt. einfaellt.

Musst Dich entschuldigen. Vielen Dank für Deine Unterstützung. Ich werde mir das ganze dann die Tage mal in Ruhe anschauen. Auch so wie dev0 und Du es vorgeschlagen haben.



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

CoolTux

Gute Nachrichen. Ich habe neue Infos. Es liegt nicht an websocket, es liegt an HTTPS. Sobald ich HTTPS deaktiviere und alles andere so lasse, geht es.
Jetzt muss ich nur noch rausfinden was HTTPS da macht.
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

Ich habe soeben die Gegenprobe auf meinem lokalen virtualisierten FHEM gemacht, da wo es vorher (ohne HTTPS) ging. Nun habe auch hier, nach aktivieren von HTTPS, genau das selbige Fehlerbild.
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

Wäre es möglich das ein anderer Entwickler einmal asyncOutput unter HTTPS testet 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

michael.winkler

Zitat von: CoolTux am 13 März 2018, 10:29:12
Wäre es möglich das ein anderer Entwickler einmal asyncOutput unter HTTPS testet bitte?
Hi,

das Verhalten kann ich nachstellen.

Allerdings habe ich direkt auf dem FHEM Server kein SSL aktiviert, sondern einen SSL Server davor hängen. Der SSL Server leitet alles auf den entsprechenden HTTP Port vom FHEM Server weiter.

Mit Longpoll=1 zeigt es die Dialog. Mit Longpoll=websocket kommt im Browser folgende Fehlermeldung.


fhemweb.js:1106 WebSocket connection to 'wss://10.10.0.242/fhem?XHR=1&inform=type=status;filter=WEB.Test;since=1520938390;fmt=JSON&fw_id=154&timestamp=1520938389720' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET