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: