Hallo zusammen,
nach dem Update auf shNG 1.8.2 und sV 3.0.1 habe ich mich mal wieder an das Thema "Zugang via https" gemacht. Nach diversen fehlgeschlagenen Versuchen in der Vergangenheit hat diesmal soweit alles funktioniert und ich hab meine Visu über https laufen.
Einen Bug hatte ich dann allerdings noch auf der shNG Admin Webseite. Ich kann nicht genau erklären, wie oder warum die Situation zustande kam. Allerdings war es irgendwann so, dass ich nicht mehr zwischen den einzelnen Menüpunkten der Admin-Webseite hin- und herschalten konnte. Stattdessen wurde einfach nur der Teil unterhalb der Menüleiste leer angezeigt. Mit rechter Maustaste und anzeigen in neuem Tab wurde der Inhalt geladen und angezeigt.
Im Chrome wurde mir ein Fehler angezeigt. Die Admin Webseite versuchte einen Websocket über ws:// (also unverschlüsselt) aufzumachen. Chrome blockiert das, weil die Seite ja über https geladen wurde. (Stichwort: "mixed content")
Der Fehler im Chrome deutet auf die Datei "modules/admin/webif/static/main.9c9acf7f875b584f8f78.js" als Verursacher hin. In diesem sehr großen JavaScript kommt nur ein einziges mal "ws://" vor:
Ich habe an dieser Stelle einfach mal "ws://" durch "wss://" ersetzt:
Danach ein Neustart und alles läuft fehlerfrei. Das Admin-Interface kann wieder sauber kommunizieren und der oben beschriebene Fehler ist verschwunden.
Das ganze ist natürlich vorerst nur mal ein Workaround. Im JavaScript sollte möglichst eine Unterscheidung gemacht werden und entweder ws:// bei Verwendung von http oder wss:// bei Aufruf über https:// verwendet werden. Dafür langen meine JavaScript Kenntnisse aber nicht.
Einen weiteren kleinen Bug hab ich dann auch noch gefunden. Nachdem das ganze lief tauchte im Log folgender Fehler auf:
Hier war einfach ein Typo in Zeile 328.
Es muss natürlich
heißen.
Dafür werde ich vielleicht noch einen PR einreichen, falls gewünscht.
Hoffe, das hilft vielleicht dem ein oder anderen.
Beste Grüße
Christian
nach dem Update auf shNG 1.8.2 und sV 3.0.1 habe ich mich mal wieder an das Thema "Zugang via https" gemacht. Nach diversen fehlgeschlagenen Versuchen in der Vergangenheit hat diesmal soweit alles funktioniert und ich hab meine Visu über https laufen.
Einen Bug hatte ich dann allerdings noch auf der shNG Admin Webseite. Ich kann nicht genau erklären, wie oder warum die Situation zustande kam. Allerdings war es irgendwann so, dass ich nicht mehr zwischen den einzelnen Menüpunkten der Admin-Webseite hin- und herschalten konnte. Stattdessen wurde einfach nur der Teil unterhalb der Menüleiste leer angezeigt. Mit rechter Maustaste und anzeigen in neuem Tab wurde der Inhalt geladen und angezeigt.
Im Chrome wurde mir ein Fehler angezeigt. Die Admin Webseite versuchte einen Websocket über ws:// (also unverschlüsselt) aufzumachen. Chrome blockiert das, weil die Seite ja über https geladen wurde. (Stichwort: "mixed content")
Der Fehler im Chrome deutet auf die Datei "modules/admin/webif/static/main.9c9acf7f875b584f8f78.js" als Verursacher hin. In diesem sehr großen JavaScript kommt nur ein einziges mal "ws://" vor:
Code:
e.prototype.connect = function() { var e = this , t = sessionStorage.getItem("hostip") , n = "[B]ws://[/B]" + sessionStorage.getItem("wsHost") + ":" + sessionStorage.getItem("wsPort");
Code:
sed -i 's/ws:\/\//wss:\/\//g' main.9c9acf7f875b584f8f78.js
Das ganze ist natürlich vorerst nur mal ein Workaround. Im JavaScript sollte möglichst eine Unterscheidung gemacht werden und entweder ws:// bei Verwendung von http oder wss:// bei Aufruf über https:// verwendet werden. Dafür langen meine JavaScript Kenntnisse aber nicht.
Einen weiteren kleinen Bug hab ich dann auch noch gefunden. Nachdem das ganze lief tauchte im Log folgender Fehler auf:
Code:
2021-03-16 12:44:08 ERROR websockets.server Error in connection handler > Traceback (most recent call last): > File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/server.py", line 191, in handler > await self.ws_handler(self, path) > File "/opt/smarthome/modules/websocket/__init__.py", line 301, in handle_new_connection > await self.unregister(websocket) > File "/opt/smarthome/modules/websocket/__init__.py", line 319, in unregister > await self.log_connection_event('removed', websocket) > File "/opt/smarthome/modules/websocket/__init__.py", line 328, in log_connection_event > self.logger.infp("USER {}: {} - local port: {}".format(action, 'with SSL connection', websocket.port)) > AttributeError: 'Logger' object has no attribute 'infp'
Code:
self.logger.[B]infp[/B]("USER {}: {} - local port: {}".format(action, 'with SSL connection', websocket.port))
Code:
self.logger.[B]info[/B] ...
Dafür werde ich vielleicht noch einen PR einreichen, falls gewünscht.
Hoffe, das hilft vielleicht dem ein oder anderen.
Beste Grüße
Christian
Kommentar