Grizzelbee / ioBroker.wireguard

A ioBroker adapter to monitor WireGuard hosts
MIT License
5 stars 4 forks source link

TypeError: Cannot read properties of undefined (reading 'at') #88

Closed ipod86 closed 1 year ago

ipod86 commented 1 year ago

Hallo,

ich bekam alle 30sek beim aktualisieren der Daten folgende Warnung im Log:

wireguard.0 2023-08-30 07:10:32.286 warn TypeError: Cannot read properties of undefined (reading 'at')

Ich dachte, dass es daran liegt, dass bei einem User "User" und "Device" in den Settings leer waren.

Jetzt bekomme ich jedoch ein anderes Log:

wireguard.0
2022
3-08-30 07:19:42.480    info    State value to set for "wireguard.0.iobroker-wg0.peers.4DhR6zpCUDD7S0zm7AUjjufro/dtFtedjwC/XH1N3zE=.device" has to be type "undefined" but received type "string"

wireguard.0
2023-08-30 07:19:42.479 info    State value to set for "wireguard.0.iobroker-wg0.peers.4DhR6zpCUDD7S0zm7AUjjufro/dtFtedjwC/XH1N3zE=.user" has to be type "undefined" but received type "string"

wireguard.0
2023-08-30 07:19:42.406 info    State value to set for "wireguard.0.iobroker-wg0.peers.4Cbhz6gYdvda6zSPHkHK1+2zZ7itHOsG1vXLlOLugl4=.device" has to be type "undefined" but received type "string"

wireguard.0
2023-08-30 07:19:42.405 info    State value to set for "wireguard.0.iobroker-wg0.peers.4Cbhz6gYdvda6zSPHkHK1+2zZ7itHOsG1vXLlOLugl4=.user" has to be type "undefined" but received type "string"

Meine Settings: Screenshot_20230830_072126_Chrome Screenshot_20230830_071336_Chrome Screenshot_20230830_072138_Chrome

Grizzelbee commented 1 year ago

Hallo iPod86,

das sieht, auf den ersten Blick, soweit erst einmal alles richtig und gut aus. Ich weiß auch, das ältere Versionen des Adapters ein Problem mit fehlenden User-/devicenamen hatten. Die Meldung aus deinem zweiten Log kommt mir ebenfalls bekannt vor. Die aktuelle Version sollte aber okay sein.

Deshalb zuerst einmal die Bitte: Welche Versionen setzt Du ein?

Unter welchem Umständen genau kann ich das Verhalten rekonstruieren?

Stammt die erste Meldung (Cannot read properties of undefined (reading 'at') von den selben o.g. Versionen oder hat Du irgend etwas aktualisiert?

Was ist passiert bevor sich die Meldungen verändert haben? Sprich: Haben sich die Meldungen nach irgendeinem Update verändert? Config-Änderung? ...

ipod86 commented 1 year ago

Stammt die erste Meldung (Cannot read properties of undefined (reading 'at') von den selben o.g. Versionen oder hat Du irgend etwas aktualisiert?

Kommt von der selben Version. Hatte es aber auch schon bei der Vorgängerversion (Ob auch da vor weiß ich nicht. Schaue ehrlich gesagt nicht so viel ins Log).

Was ist passiert bevor sich die Meldungen verändert haben? Sprich: Haben sich die Meldungen nach irgendeinem Update verändert? Config-Änderung?

Die erste Logzeile kam, als User und Device leer waren. Der andere Log als ich diese befüllt habe. Leer war nur der zweite Client.

Deshalb zuerst einmal die Bitte: Welche Versionen setzt Du ein?

NodeJs v18.17.1 js-controller 5.0.12 Adapter 1.5.10 Admin 6.9.1

EDIT: Sehe gerade, dass ein User in den Objekten keinen Namen hat. Lösche diese mal und starte den Adapter neu.

Grizzelbee commented 1 year ago

Okay. Den ersten Fehler kann ich reproduzieren. Fix kommt gleich.

Der Zweite könnte im Zusammenhang damit stehen:

Sehe gerade, dass ein User in den Objekten keinen Namen hat.

ipod86 commented 1 year ago

Okay,

nachdem ich die Objekte einmal gelöscht habe, wird auch nur der User David angelegt. Darin einmal das Device S22.

Mal noch ist das Log leer. Das Device S22 geht dann vermutlich bei beiden Verbindungen auf true.

Edit Kann es sein, dass man in den Objekten nirgends den Namen der Verbindung sieht, die ich in den Settings angegeben habe? So sehe im im Moment nicht welches Profil ich verbunden habe.

Grizzelbee commented 1 year ago

nachdem ich die Objekte einmal gelöscht habe, wird auch nur der User David angelegt. Darin einmal das Device S22.

Genau So ist das gedacht. ;)

Das Device S22 geht dann vermutlich bei beiden Verbindungen auf true.

Korrekt.

Kann es sein, dass man in den Objekten nirgends den Namen der Verbindung sieht, die ich in den Settings angegeben habe? So sehe im im Moment nicht welches Profil ich verbunden habe.

Du meinst den hier? image

Ja - das ist eine alte Einstellung, die ich plane irgendwann zu entfernen - es sei denn, sie stellt sich doch noch als sehr nützlich heraus. ;) Die Sache ist die: Zuerst gab es NUR den Namen, die Idee war dem öffentlichen Schlüssel einfach einen verständlichen Namen zuzuordnen - also z.B. Davids S22, Davids Tablet, Ninas Notebook, ... Dann bin ich auf die Idee gekommen die User und Devices so umzubauen, dass man die gut in einer Visualisierung darstellen kann. Dabei kam dann das User/Device Konzept heraus und ersetzt den einfachen "Namen". Ich bin, ehrlich gesagt, auch noch nie auf die Idee gekommen, das ein Device eines Users mehrere PubKeys haben könnte. Der Sinn erschließt sich mir noch nicht.

Wenn Du also so eine Profil-Unterscheidung brauchst, müsstest Du das aktuell über die Devices (S22_LAN, S22_ALLES) lösen. Dann hättest Du unter dem User David drei connected states: Den User als solchen und pro Device einen.

ipod86 commented 1 year ago

Dann stimmt ja jetzt alles.

Ja genau, das meine ich. In meinem Fall bin ich ja in beiden Fällen der User David und greife von meinem Device Galaxy S22 auf Wireguard zu.

Einmal geht der ganze Traffic durch das vpn und einmal nur Anfragen in das Netzwerk. Das hatte man durch den Namen unterscheiden können. Natürlich konnte ich den Benutzer oder das Device auch einfach mit einem Zusatz versehen.

Grizzelbee commented 1 year ago

Einmal geht der ganze Traffic durch das vpn und einmal nur Anfragen in das Netzwerk. Das hatte man durch den Namen unterscheiden können.

Okay. Warum das nützlich ist, verstehe ich zwar immer noch nicht ganz, macht aber vielleicht auch nichts. ;o) Ich schicke immer den ganzen Verkehr durch das VPN und was nicht für das LAN gedacht ist, wird wieder zurück ins iNet geroutet. Dadurch landet immer alles da wo es hin muss und ich brauche keine unterschiedlichen Profile.

Die Frage (aus meiner Perspektive) ist aber eher die: Über den Namen kannst Du ja (in der Konfig) beide Profile/Setups voneinander unterscheiden. Ist es drüber hinaus irgendwie aus Steuerungsgründen, Visu, ... wichtig diese beiden Profile möglichst einfach voneinander unterscheiden zu können? Denn im Zweifel gibt es im Objecttree ja noch die connectedDevices. In dem Array stehen die PubKeys drin, die online sind. Das könntest Du natürlich auseinandernehmen...

ipod86 commented 1 year ago

Ne, das reicht so. Das kann ruhig weg. War nur das System was ich angefangen habe.

Kenne mich mit dem ganzen Routingsachen nicht so aus. Das nur LAN Profil verbindet sich automatisch, sobald ich nicht im heimischen WLAN bin um auf meine Visu zu kommen. Das andere nehme ich, wenn ich in Netzwerken bin, denen ich nicht vertraue.

Hab nicht den größten upload zu Hause. Und denke es schon den Smartphone Akku, wenn nicht immer alles durch das vpn geht.