Publish curated Unraid-AppOps-Gateway source from 034c9f844d2455850ba37b31379b7edaa786583e

This commit is contained in:
Public Source Publisher committed 2026-10-01 19:39:31 +00:00
1 parent c61fbfd87f
commit 1a54836efc
101 files changed
+4973 -1298

No files matched your search

+2 -62
View File
@@ -1,17 +1,11 @@
from __future__ import annotations
from fastapi import APIRouter, Depends, HTTPException, Request, Response
from fastapi import APIRouter, Depends, HTTPException, Request
from pydantic import BaseModel
from fastapi.responses import FileResponse, PlainTextResponse
from sqlmodel import Session
from ..core.security import (
OPERATOR_SESSION_COOKIE,
issue_operator_session,
operator_session_status,
require_operator_request,
revoke_operator_session,
)
from ..core.security import require_operator_request
from ..db.session import get_session
from ..services.audit_logger import log_event
from ..services.deployment_target_registry import DeploymentTargetRegistry
@@ -30,20 +24,14 @@ from ..services.runtime_service import (
export_policies,
get_sqlite_backup_path,
list_sqlite_backups,
operator_auth_policy,
runtime_info,
sqlite_maintenance_status,
verify_sqlite_backup,
update_operator_auth_policy,
)
router = APIRouter(prefix='/api')
class OperatorAuthPolicyRequest(BaseModel):
required: bool
class DeploymentTargetRegistrationRequest(BaseModel):
repository: str
revision: str
@@ -54,21 +42,6 @@ def get_runtime_info(session: Session = Depends(get_session)):
return runtime_info(session)
@router.get('/operator/session')
def get_operator_session(request: Request):
return operator_session_status(request)
@router.get('/runtime/operator-auth')
def get_operator_auth_policy():
return operator_auth_policy()
@router.patch('/runtime/operator-auth')
def patch_operator_auth_policy(payload: OperatorAuthPolicyRequest, session: Session = Depends(get_session)):
return update_operator_auth_policy(session, payload.required)
@router.post('/admin/deployment-targets/single-container')
def admin_register_single_container_deployment_target(
payload: DeploymentTargetRegistrationRequest,
@@ -144,39 +117,6 @@ def admin_register_single_container_deployment_target(
}
def _session_cookie_secure(request: Request) -> bool:
forwarded_proto = request.headers.get('X-Forwarded-Proto', '').split(',', 1)[0].strip().lower()
return request.url.scheme == 'https' or forwarded_proto == 'https'
@router.post('/operator/session')
def create_operator_session(request: Request, response: Response):
session_id = issue_operator_session(request)
response.set_cookie(
OPERATOR_SESSION_COOKIE,
session_id,
httponly=True,
secure=_session_cookie_secure(request),
samesite='strict',
path='/',
)
return {'authorized': True, 'mode': 'session', 'identity': None}
@router.delete('/operator/session')
def delete_operator_session(request: Request, response: Response):
require_operator_request(request)
revoke_operator_session(request)
response.delete_cookie(
OPERATOR_SESSION_COOKIE,
httponly=True,
secure=_session_cookie_secure(request),
samesite='strict',
path='/',
)
return {'authorized': False, 'mode': 'locked', 'identity': None}
@router.get('/health/deep')
def get_deep_health(session: Session = Depends(get_session)):
return deep_health(session)