UnifiController: disableWlan funktioniert nicht // Failed! - state:'403' - msg:'

Begonnen von Guybrush, 04 Januar 2024, 12:42:26

Vorheriges Thema - Nächstes Thema

Guybrush

Ich habe einen UDM-SE und diesen in fhem eingebunden. Das Auslesen der Werte etc funktioniert einwandfrei. Allerdings kann ich wlans nicht abschalten.

Ich hab hier einmal verbose auf 5 gesetzt und erhalten dann beim setzen folgende Fehlermeldungen im Log:
2024.01.04 12:31:05 5: UnifiController (Unifi_Notify) - executed.
2024.01.04 12:31:06 5: UnifiController: get called with ?.
2024.01.04 12:31:13 5: UnifiController: set called with disableWLAN wlan_guest
2024.01.04 12:31:13 4: UnifiController: set disableWLAN
2024.01.04 12:31:13 5: UnifiController (Unifi_WlanconfRest_Send) - executed with { [entfernt] }.
2024.01.04 12:31:13 5: UnifiController: set called with enableWLAN wlan_guest
2024.01.04 12:31:13 4: UnifiController: set enableWLAN
2024.01.04 12:31:13 5: UnifiController (Unifi_WlanconfRest_Send) - executed with { [entfernt] }.
2024.01.04 12:31:13 5: UnifiController: get called with ?.
2024.01.04 12:31:13 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2024.01.04 12:31:13 5: UnifiController (Unifi_WlanconfRest_Receive) - Failed! - state:'403' - msg:'Failed with HTTP Code 403.'
2024.01.04 12:31:13 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2024.01.04 12:31:13 5: UnifiController (Unifi_WlanconfRest_Receive) - Failed! - state:'403' - msg:'Failed with HTTP Code 403.'

Readings sind alle möglichen da. Die Internals sehen so aus:
LASTInputDev UnifiController
MSGCNT 1173539
NAME UnifiController
NOTIFYDEV global
NR 1165
NTFY_ORDER 50-UnifiController
STATE connected
TYPE Unifi
UC_VERSION 8.0.24
UnifiController_MSGCNT 1173539
UnifiController_TIME 2024-01-04 12:40:46
VERSION 3.5.2
eventCount 537585

Meine Konfiguration sieht so aus:
defmod UnifiController Unifi [entfernt]
attr UnifiController DbLogExclude .*
attr UnifiController DbLogInclude -UC_speed_down,-UC_speed_up
attr UnifiController event-on-change-reading .*
attr UnifiController isUDM 1
attr UnifiController room Interfaces->Unifi

Die Rechte des angegebenen Users habe ich testweise in der UDM-SE mal auf Full Management bei Network und OS Settings gestellt, was aber nichts brachte. Ich finde die Logmeldungen schon etwas komisch, dass dort auch ein enableWLAN ausgeführt wird. Es kommen aber auch 2x Meldungen bzgl. HTTP 403, was ja dafür spricht, dass es so oder so ein Rechteproblem zu sein scheint? Hab ich da irgendwas bei der Konfiguration falsch oder vergessen oder ist das ein Bug?

Guybrush


passibe

Vorab: Kenne mich mit Unifi nicht aus, benutze das nicht.

Aber: Ein googeln nach "udm api 403" bringt verschiedene Posts aus dem Ubiquiti-Forum, z.B. diesen hier:
https://community.ui.com/questions/Controller-API-on-UCG-Ultra-returns-403-forbidden-on-PUT-POST-methods/57a77a5f-350a-40b2-bd68-39d596969586

Es scheint, als wäre es notwendig für PUT/POST einen CSRF-Token mitzusenden.

In 74_Unifi.pm scheint Unifi_WlanconfRest_Send für das Senden von enableWLAN/disableWLAN verantwortlich zu sein (siehe Zeilen 416 und 432). Wenn ich den Code für Unifi_WlanconfRest_Send (ab Zeile 1943) jetzt nicht ganz falsch lese, dann sehe ich da (und auch sonst nirgends) nichts davon, dass da vorher ein CSRF-Token abgefragt und dann mitgesendet wird. Das wird vermutlich der Fehler sein, d.h. hier müsste 74_Unifi.pm angepasst werden; entweder durch dich selbst oder den Maintainer @Wuehler (wobei dieser nicht mehr aktiv zu sein scheint).

Du kannst das ganze überprüfen, indem du einfach mal den Request mit cURL nachbaust und schaust, ob du es ein/ausschalten kannst, wenn du, wie im Ubiquiti-Forum beschieben, einen CSRF-Token anhängst.

passibe

Ok, scheint als hätte jemand im Unifi-Sammelthread dasselbe Problem gehabt: https://forum.fhem.de/index.php?topic=40287.msg1281973#msg1281973

Wie es aussieht hatte ich Recht mit meiner CSRF-Token-Vermutung. In diesem Beitrag sind die relevanten Patches bzw. da ist auch eine "fertige" 74_Unifi.pm: https://forum.fhem.de/index.php?topic=40287.msg1169883#msg1169883

Wieso die gepatchte Version noch nicht eingecheckt wurde/werden kann? Keine Ahnung.

Hoffe das löst dein Problem!

Guybrush

danke dir für die Fundstelle! die hatte ich tatsächlich nicht gefunden, aber so ist das immer mit überlangen threads.

Das scheint aber auch nicht zu funktionieren. dort wird nach X-CSFR-TOKEN gesucht. Im Response Header heißt das aber nur noch X-Csrf-Token. Damit funktioniert das aber nicht. Hab da nun auch mal im Netz gesucht und scheinbar muss man da mehr beachten. Laut Code wird nämlich bei jeder Abfrage, egal ob GET, POST, PUT der x-csfr-token mitgeschickt. Unifi scheint das aber dann zu blocken, wenn es bei anderen Sachen als POST requests auch geschickt wird

https://community.ui.com/questions/POST-requests-to-UDM-API-return-403-Forbidden-GET-requests-succeed/ffb7e204-2c2b-4bef-9cf3-e06f412a4c58?page=0


passibe

Eigentlich ist die Groß-/Kleinschreibung bei HTTP-Headern egal. Daran sollte es also nicht liegen. Wenn das nicht über HTTPS läuft, kannst du ggfs.

Am besten du fragst einfach im verlinkten (langen) Thread nochmal oder verlinkst dort das Thema hier – da sind ja Leute, die das aktuell einsetzen, irgendwie muss das bei denen ja auch funktionieren (kann mir kaum vorstellen, dass dort niemand mehr die enableWLAN/disableWLAN-Funktion nutzt).

Nur zr Sicherheit: Hast du nach dem Rüberkopieren der gepatchten Versionshutdown restartausgeführt (siehe hier)?

Ralli

Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.81.5.20250527) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

Guybrush

Zitat von: passibe am 08 April 2025, 17:34:10Eigentlich ist die Groß-/Kleinschreibung bei HTTP-Headern egal. Daran sollte es also nicht liegen. Wenn das nicht über HTTPS läuft, kannst du ggfs.
die groß/kleinschreibung mag egal sein auf seiten Unifi. Die Regex im Skript greift aber nicht, da die nicht case insensitive ist. Hatte das in der 74_Unifi.pm auch mal zum testen angepasst, so dass die Regex gegriffen hat und der X-Csfr-Token in der response mitgeschickt wurde. Hat damit aber leider auch nicht funktioniert.

Zitat von: passibe am 08 April 2025, 17:34:10Nur zr Sicherheit: Hast du nach dem Rüberkopieren der gepatchten Version
shutdown restartausgeführt (siehe hier)?
hab ich natürlich auch gemacht  ;)

Guybrush

Zitat von: Ralli am 08 April 2025, 17:36:56https://forum.fhem.de/index.php?topic=40287.msg1297760#msg1297760

mega! danke dir.

hab das direkt ausprobiert und der loginfehler scheint damit weg zu sein. funktionieren tut das aber immer noch nicht. mit verbose 5 wird dafür das logfile jetzt vollgespamt mit sowas hier:

2025.04.08 20:20:52 5: UnifiController: set called with enableWLAN wlan_guest
2025.04.08 20:20:52 4: UnifiController: set enableWLAN
2025.04.08 20:20:52 5: UnifiController (Unifi_WlanconfRest_Send) - executed with {"name":"***********}.
2025.04.08 20:20:52 5: UnifiController (Unifi_ProcessUpdate) - finished after 3.4590 seconds.
2025.04.08 20:20:56 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:56 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:56 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:56 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:56 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:56 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:56 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:57 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:57 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:57 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:57 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:57 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:57 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:57 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:57 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:57 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:57 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:57 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:57 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:57 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:57 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:58 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:58 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:58 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:58 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:58 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:58 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:58 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:58 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:58 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:58 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:58 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:58 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:58 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:58 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:58 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:58 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:59 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:59 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:59 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:59 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:59 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:59 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:59 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:59 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:59 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:59 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:20:59 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - Failed! - state:'Error while requesting' - msg:'https://***********/proxy/network/api/s/default/rest/wlanconf/*********** - read from https://***********:443 timed out'
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - Failed! - state:'Error while requesting' - msg:'https://***********/proxy/network/api/s/default/rest/wlanconf/*********** - read from https://***********:443 timed out'
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - Failed! - state:'Error while requesting' - msg:'https://***********/proxy/network/api/s/default/rest/wlanconf/*********** - read from https://***********:443 timed out'
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - executed.
2025.04.08 20:21:00 5: UnifiController (Unifi_WlanconfRest_Receive) - Failed! - state:'Error while requesting' - msg:'https://***********/proxy/network/api/s/default/rest/wlanconf/*********** - read from https://***********:443 timed out'

die sensiblen daten hab ich mit ****** ersetzt. Scheint jetzt jedenfalls so zu sein, dass das in einer Endlosschleife hängt. Die Fehler kommen ständig erneut. Die Timeouts resultieren vermutlich aus einem Block der UDM-SE. Du hast da nicht zufällig auch spontan eine idee? ;) muss ich mir jetzt jedenfalls auch anschauen, das das nun wieder ist

Guybrush

also das disable/enableWlan funktioniert jetzt. das war eine selbst gebaute endlosschleife über ein notify, was auf einmal funktionierte  ;D

fhem resumed wlan_guest WiFi. Source IP: *****. Today at 20:15
fhem paused wlan_guest WiFi. Source IP: *****. Today at 20:15

jetzt kam dafür ein neues Problem auf. Schalte ich das wlan_guest ab, dann fliegt auch mein trust wlan weg und alles muss sich neu verbinden. das scheint jetzt aber "nur" noch ein unifi problem zu sein, womit fhem nichts zu tun hat