umbau 1.2

This commit is contained in:
2026-09-03 01:22:00 +02:00
parent 685068c21b
commit 13542163d8
3 changed files with 148 additions and 82 deletions

View File

@ -36,8 +36,25 @@ def rdp_drive_path(host_id: int, session_id: int) -> Path:
A sah/ueberschrieb/las die Dateien von B. Je-Sitzung-Pfade schliessen das
aus; Aufraeumen beim Sitzungsende siehe app/rdp_proxy/ws_tunnel.py
(`_cleanup_rdp_drive_path`).
Bug-Fix (Live-Test, 2./3.9.): urspruenglich als ZWEI Verzeichnis-Ebenen
unter rdp-drives/ angelegt (.../rdp-drives/{host_id}/{session_id}).
guacds RDP-Parameter "create-drive-path" legt aber nachweislich NUR das
direkte Blattverzeichnis an, keine fehlenden Elternverzeichnisse (kein
"mkdir -p") -- fuer einen Host, der noch keine Sitzung mit Dateitransfer
hatte, existierte .../rdp-drives/{host_id}/ nie, wodurch guacd mit
"Unable to create directory ... No such file or directory" abbrach. Ein
Versuch, das Elternverzeichnis stattdessen im App-Prozess selbst
anzulegen, scheiterte am echten Testserver an den Dateirechten (rdp-drives/
gehoert dem guacd-Systembenutzer, Modus 750 -- der App-Prozess hat dort
keinerlei Zugriff). Deshalb jetzt EINE flache Ebene mit host_id UND
session_id im Verzeichnisnamen selbst: weiterhin pro Sitzung eindeutig
(Befund E6 bleibt gewahrt), aber guacd muss nur noch einen einzigen neuen
Eintrag direkt unter dem bereits existierenden rdp-drives/ anlegen --
funktioniert nachweislich, siehe Docstring oben ("vorher war der Pfad NUR
je Host angelegt", also genau diese Verschachtelungstiefe).
"""
return settings.data_dir / "rdp-drives" / str(host_id) / str(session_id)
return settings.data_dir / "rdp-drives" / f"{host_id}_{session_id}"
# Der von "connect"/"select" bis zur eigentlichen Bilduebertragung genutzte
# StreamReader-Puffer muss groesser als der asyncio-Default (64 KiB) sein --