Geräteverwaltung: Geräte doppelt (Name und IP), Entfernen scheitert mit „Unknown device“ #289
Labels
No labels
herkunft/alpha-feedback
status
blockiert
status
zu-testen
typ
bug
typ
docs
typ
enhancement
typ
feature
typ
idea
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
iris/Iris#289
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Beobachtung (Alf, 2026-10-31)
In der Geräteverwaltung (iris/Iris#284) tauchen Geräte teilweise doppelt auf: einmal mit Namen, einmal als IP („Gerät (192.168.…)“). Das letzte Gerät ließ sich nicht entfernen, die Meldung war „Unknown device“. Dadurch ließ sich das iPhone nicht aussperren.
Vermutete Ursachen (aus dem Code gelesen, am Gerät nicht gemessen)
IrisRemoteServer.swift, Registrierung vor demswitch) legt für jede Anfrage ohne HeaderX-Device-IDeinen Eintragip:<Adresse>mit dem Namen „Gerät ()“ an. Anfragen ohne Header kommen von WebViews, Bild-/Video-Laden, der Share-Extension und ähnlichem, die den Header nicht mitschicken. Dasselbe Gerät steht dann einmal mit seiner UUID und einmal als IP in der Liste.RequestPath.pathComponentszerlegt den Pfad ohne Prozent-Dekodierung. Die Clients kodieren die ID inPOST /devices/<id>/<aktion>; enthält sie ein%(zum Beispiel IPv6-Link-Localip:fe80::…%en0) oder ein anderes kodiertes Zeichen, passt die dekodierte ID nicht zum Register, und der Server antwortet 404 „Unknown device“. Das trifft genau dieip:-Einträge.Zu prüfen
registeredRemoteDevices_v1bzw.GET /devices)?X-Device-IDund woher?Möglicher Fix
/devices/<id>/…dekodieren (Mac-Server; Linux-FastAPI dekodiert selbst, aber prüfen).ip:-Einträge nicht mehr anlegen, wenn die Anfrage zu einem bekannten Gerät gehört (zum Beispiel gleiche IP wie ein Gerät mit Namen), oder grundsätzlich keine IP-Einträge anlegen, sondern nur Geräte mitX-Device-IDführen.ip:-Einträge beim Laden aufräumen.Verwandt: iris/Iris#284.
PR #135 gemergt: test(devices): Geräte-ID mit Prozent und Doppelpunkt (iris/Iris#289)
http://docker:3000/iris/iris-linux-server/pulls/135
Commits:
Stand: Geräte doppelt und „Unknown device“ beim Entfernen
Befund (aus dem Code, am Gerät nicht gemessen): (1) Der Mac-Server trug jede Anfrage ohne
X-Device-IDalsip:<Adresse>ein und doppelte damit echte Geräte. (2)pathComponentswird nicht prozent-dekodiert; eine ID wieip:fe80::…%en0kam als…%25en0an und fand nichts, Antwort 404 „Unknown device“.Geändert
IrisRemoteServer.swift: Geräte werden nur noch mitX-Device-IDin die Liste eingetragen (die ID für Sperre und Freigaben bleibt unverändert);handleDeviceActiondekodiert die ID aus dem Pfad.RegisteredDeviceStore.swift: vorhandeneip:-Einträge werden beim Laden entfernt, sofern sie weder gesperrt noch freigegeben sind.test_device_id_with_percent_and_colon_can_be_removedergänzt, 8 passed gegen den Dev-Host (Wegwerf-Gerät,rotate: false).Geprüft: Xcode-Build Iris; Linux-Test.
Nicht geprüft: Der Mac-Server mit echten Geräten (Liste nach dem Neustart, Entfernen eines
ip:-Eintrags mit%); da die altenip:-Einträge beim ersten Start entfernt werden, lässt sich das Entfernen mit%am Mac nicht mehr an Altdaten nachstellen.Offen: Anfragen ohne Header sind weiter anonym; ein Gerät, das nie einen Header schickt, taucht gar nicht in der Liste auf.
PR #290 gemergt: fix(devices): keine ip:-Einträge mehr, Geräte-ID im Pfad dekodieren (iris/Iris#289)
http://docker:3000/iris/Iris/pulls/290
Commits:
Stand: Geräte doppelt und „Unknown device“ beim Entfernen
Befund (aus dem Code, am Gerät nicht gemessen): (1) Der Mac-Server trug jede Anfrage ohne
X-Device-IDalsip:<Adresse>ein und doppelte damit echte Geräte. (2)pathComponentswird nicht prozent-dekodiert; eine ID wieip:fe80::…%en0kam als…%25en0an und fand nichts, Antwort 404 „Unknown device“.Geändert
IrisRemoteServer.swift: Geräte werden nur noch mitX-Device-IDin die Liste eingetragen (die ID für Sperre und Freigaben bleibt unverändert);handleDeviceActiondekodiert die ID aus dem Pfad.RegisteredDeviceStore.swift: vorhandeneip:-Einträge werden beim Laden entfernt, sofern sie weder gesperrt noch freigegeben sind.test_device_id_with_percent_and_colon_can_be_removedergänzt, 8 passed gegen den Dev-Host (Wegwerf-Gerät,rotate: false).Geprüft: Xcode-Build Iris; Linux-Test.
Nicht geprüft: Der Mac-Server mit echten Geräten (Liste nach dem Neustart, Entfernen eines
ip:-Eintrags mit%); da die altenip:-Einträge beim ersten Start entfernt werden, lässt sich das Entfernen mit%am Mac nicht mehr an Altdaten nachstellen.Offen: Anfragen ohne Header sind weiter anonym; ein Gerät, das nie einen Header schickt, taucht gar nicht in der Liste auf.