Publish curated Unraid-AppOps-Gateway source from 034c9f844d2455850ba37b31379b7edaa786583e
This commit is contained in:
1 parent
c61fbfd87f
commit
1a54836efc
101 files changed
+4973
-1298
No files matched your search
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user