3765d4d476
Add optional auto logoff of stuck sessions on RDG flap and direct RDP failure. Hide the RDS break button on old flap 302 when the user later reconnects or the workstation session is closed. Co-authored-by: Cursor <cursoragent@cursor.com>
34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
"""RDP / RDG flap auto-disconnect settings (ui_settings singleton)."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.models.ui_settings import UI_SETTINGS_ROW_ID, UiSettings
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class RdpFlapSettings:
|
|
auto_disconnect: bool
|
|
source: str = "db"
|
|
|
|
|
|
def get_effective_rdp_flap_settings(db: Session) -> RdpFlapSettings:
|
|
row = db.get(UiSettings, UI_SETTINGS_ROW_ID)
|
|
if row is None:
|
|
return RdpFlapSettings(auto_disconnect=False, source="default")
|
|
return RdpFlapSettings(auto_disconnect=bool(row.auto_rdp_flap_disconnect), source="db")
|
|
|
|
|
|
def upsert_rdp_flap_settings(db: Session, *, auto_disconnect: bool) -> RdpFlapSettings:
|
|
row = db.get(UiSettings, UI_SETTINGS_ROW_ID)
|
|
if row is None:
|
|
row = UiSettings(id=UI_SETTINGS_ROW_ID, show_sidebar_system_stats=True)
|
|
db.add(row)
|
|
row.auto_rdp_flap_disconnect = bool(auto_disconnect)
|
|
db.commit()
|
|
db.refresh(row)
|
|
return get_effective_rdp_flap_settings(db)
|