Files
Unraid-AppOps-Gateway-Public/backend/app/api/routes_nginx_proxy_manager.py
T

109 lines
2.5 KiB
Python

from __future__ import annotations
from typing import Any
from fastapi import APIRouter, Depends
from ..connectors.nginx_proxy_manager import NginxProxyManagerConnector
from .connector_runtime import load_connector_runtime
router = APIRouter(prefix='/api/apps/nginx-proxy-manager', dependencies=[Depends(load_connector_runtime)])
alias_router = APIRouter(prefix='/api/apps/npm', dependencies=[Depends(load_connector_runtime)])
def _shape(payload: dict[str, Any]) -> dict[str, Any]:
data = payload.get('data')
if not isinstance(data, dict):
data = {key: value for key, value in payload.items() if key not in {'success', 'status', 'message'}}
return {
**payload,
'success': bool(payload.get('success')),
'status': str(payload.get('status', 'ok')),
'message': str(payload.get('message', 'ok')),
'data': data,
}
def _connector() -> NginxProxyManagerConnector:
return NginxProxyManagerConnector()
@router.get('/health')
def health():
return _shape(_connector().health())
@router.get('/proxy-hosts')
def proxy_hosts():
return _shape(_connector().proxy_hosts())
@router.get('/certificates')
def certificates():
return _shape(_connector().certificates())
@router.get('/certificates/expiring')
def expiring_certificates(days: int = 30):
return _shape(_connector().expiring_certificates(days))
@router.get('/access-lists')
def access_lists():
return _shape(_connector().access_lists())
@router.get('/exposure-summary')
def exposure_summary():
return _shape(_connector().exposure_summary())
@router.get('/host-reachability')
def host_reachability():
return _shape(_connector().host_reachability())
@router.get('/security-warnings')
def security_warnings():
return _shape(_connector().security_warnings())
@alias_router.get('/health')
def alias_health():
return health()
@alias_router.get('/proxy-hosts')
def alias_proxy_hosts():
return proxy_hosts()
@alias_router.get('/certificates')
def alias_certificates():
return certificates()
@alias_router.get('/certificates/expiring')
def alias_expiring_certificates(days: int = 30):
return expiring_certificates(days)
@alias_router.get('/access-lists')
def alias_access_lists():
return access_lists()
@alias_router.get('/exposure-summary')
def alias_exposure_summary():
return exposure_summary()
@alias_router.get('/host-reachability')
def alias_host_reachability():
return host_reachability()
@alias_router.get('/security-warnings')
def alias_security_warnings():
return security_warnings()