feat: implement Remote WinBox worker, API, frontend integration, OpenBao persistence, and supporting docs
This commit is contained in:
63
backend/app/schemas/winbox_remote.py
Normal file
63
backend/app/schemas/winbox_remote.py
Normal file
@@ -0,0 +1,63 @@
|
||||
"""Request/response schemas for Remote WinBox (Browser) sessions."""
|
||||
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
from enum import Enum
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class RemoteWinboxState(str, Enum):
|
||||
creating = "creating"
|
||||
active = "active"
|
||||
grace = "grace"
|
||||
terminating = "terminating"
|
||||
terminated = "terminated"
|
||||
failed = "failed"
|
||||
|
||||
|
||||
class RemoteWinboxCreateRequest(BaseModel):
|
||||
idle_timeout_seconds: int = Field(default=600, ge=60, le=3600)
|
||||
max_lifetime_seconds: int = Field(default=7200, ge=300, le=14400)
|
||||
|
||||
|
||||
class RemoteWinboxSessionResponse(BaseModel):
|
||||
session_id: uuid.UUID
|
||||
status: RemoteWinboxState = RemoteWinboxState.active
|
||||
websocket_path: str
|
||||
expires_at: datetime
|
||||
max_expires_at: datetime
|
||||
idle_timeout_seconds: int
|
||||
max_lifetime_seconds: int
|
||||
xpra_ws_port: Optional[int] = None
|
||||
|
||||
|
||||
class RemoteWinboxStatusResponse(BaseModel):
|
||||
session_id: uuid.UUID
|
||||
status: RemoteWinboxState
|
||||
created_at: datetime
|
||||
expires_at: datetime
|
||||
max_expires_at: datetime
|
||||
idle_timeout_seconds: int
|
||||
max_lifetime_seconds: int
|
||||
xpra_ws_port: Optional[int] = None
|
||||
|
||||
|
||||
class RemoteWinboxTerminateResponse(BaseModel):
|
||||
session_id: uuid.UUID
|
||||
status: RemoteWinboxState
|
||||
reason: str
|
||||
|
||||
|
||||
class RemoteWinboxDuplicateDetail(BaseModel):
|
||||
detail: str = "Active session exists"
|
||||
session: RemoteWinboxStatusResponse
|
||||
|
||||
|
||||
class RemoteWinboxSessionItem(BaseModel):
|
||||
"""Used in the combined active sessions list."""
|
||||
session_id: uuid.UUID
|
||||
status: RemoteWinboxState
|
||||
created_at: datetime
|
||||
expires_at: datetime
|
||||
Reference in New Issue
Block a user