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 <noreply@anthropic.com>
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user