feat: close workstation login on RDG 303 disconnect (0.4.6)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
PTah
2026-06-26 08:16:06 +10:00
parent fd1be5e7e4
commit 606bf53019
8 changed files with 448 additions and 6 deletions
+15 -2
View File
@@ -7,6 +7,8 @@ import re
from dataclasses import dataclass
from datetime import datetime, timezone
from sqlalchemy.orm import Session
from app.models import Event, Host
from app.services.event_actor_user import extract_event_actor_user
from app.services.linux_admin_settings import LinuxAdminConfig
@@ -81,12 +83,23 @@ def _event_login_user(event: Event) -> str:
return str(_details_dict(event).get("user") or "").strip()
def event_session_terminated(event: Event) -> bool:
def event_session_terminated(event: Event, db: Session | None = None) -> bool:
from app.services.rdg_workstation_session import (
event_closed_by_rdg,
resolve_workstation_login_closed,
)
details = _details_dict(event)
if details.get("session_terminated") is True:
return True
at = details.get(SESSION_TERMINATED_AT_KEY)
return at is not None and str(at).strip() != ""
if at is not None and str(at).strip() != "":
return True
if event_closed_by_rdg(event):
return True
if db is not None and event.type == "rdp.login.success":
return resolve_workstation_login_closed(db, event)
return False
def mark_event_session_terminated(event: Event, *, by_username: str | None = None) -> None: