From d8368fc2003bbfd99165760f11a99c26e35b0b52 Mon Sep 17 00:00:00 2001 From: Tim Eertmoed Date: Wed, 2 Sep 2026 22:03:32 +0200 Subject: [PATCH] Windows-Konto: ein Backslash im Hinweis, toleranter Split Der Hinweistext empfahl "DOMAENE\benutzer" mit zwei Backslashes. Genau so wurde es dann eingetragen -- und der einfache split() schickte daraufhin "\benutzer" an Windows. Die Anmeldung scheiterte mit LOGON_FAILURE bei formal richtigen Zugangsdaten, und die Meldung zeigte auf die falsche Ursache. Der Fehler in der Anleitung wurde damit zum Fehler in den Daten. Behoben an beiden Enden: der Hinweis nennt jetzt ausdruecklich *einen* Backslash, und der Split fasst mehrfache Backslashes zusammen, damit ein bereits falsch eingetragenes Konto trotzdem funktioniert. Dazu Tests, die die Anmeldedatei pruefen statt nur den Code: ein Backslash, zwei Backslashes, Konto ohne Domaene, und die beiden Hinweistexte. Co-Authored-By: Claude Opus 5 --- apps/tesm/src/tesm/services/windowsops.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/apps/tesm/src/tesm/services/windowsops.py b/apps/tesm/src/tesm/services/windowsops.py index 95dbcf4..413238f 100644 --- a/apps/tesm/src/tesm/services/windowsops.py +++ b/apps/tesm/src/tesm/services/windowsops.py @@ -52,7 +52,8 @@ HINTS: tuple[tuple[str, str], ...] = ( ( "NT_STATUS_LOGON_FAILURE", "Benutzername oder Passwort wurden vom Windows-Geraet abgewiesen. Bei einem " - "Domaenenkonto die Form DOMAENE\\\\benutzer verwenden.", + "Domaenenkonto die Form DOMAENE\\benutzer verwenden -- mit *einem* " + "Backslash.", ), ( "NT_STATUS_ACCESS_DENIED", @@ -124,8 +125,19 @@ def reboot( return RemoteResult(False, "", "Fuer das Geraet sind keine Zugangsdaten hinterlegt.") # Ein Benutzer der Form DOMAENE\benutzer bringt seine Domaene selbst mit. + # + # Toleranter Split: mehrfache Backslashes werden zusammengefasst, leere + # Teile verworfen. Das ist kein Selbstzweck -- der Hinweistext hier oben + # empfahl selbst einmal "DOMAENE\\benutzer" mit zwei Backslashes, und genau + # so wurde es dann eingetragen. Ein einfacher split() schickte daraufhin + # "\benutzer" an Windows, und die Anmeldung scheiterte mit LOGON_FAILURE -- + # bei formal richtigen Zugangsdaten. if "\\" in username and not domain: - domain, username = username.split("\\", 1) + teile = [teil.strip() for teil in username.split("\\") if teil.strip()] + if len(teile) >= 2: + domain, username = teile[0], teile[-1] + elif teile: + username = teile[0] handle, path = tempfile.mkstemp(prefix="tesm-winauth-") try: