feat: Enhance gateway management and add Caddyfile generation support

This commit is contained in:
2026-02-21 01:08:11 -08:00
parent 54ba2ccc62
commit f99c2dad86
16 changed files with 711 additions and 230 deletions

View File

@@ -132,3 +132,12 @@ def get_gateway() -> GatewayInfo:
service_count=len(config.services),
managed_count=len(config.managed),
)
@router.get("/gateway/caddyfile")
def get_caddyfile() -> dict[str, str]:
"""Return the generated Caddyfile content."""
from castle_cli.commands.gateway import _generate_caddyfile
config = load_config(settings.castle_root)
return {"content": _generate_caddyfile(config)}

View File

@@ -112,6 +112,19 @@ async def _do_action(name: str, action: str) -> JSONResponse:
)
@router.get("/{name}/unit")
def get_unit(name: str) -> dict[str, str | None]:
"""Return the generated systemd unit file(s) for a managed component."""
from castle_cli.commands.service import _generate_timer, _generate_unit
_validate_managed(name)
config = load_config(settings.castle_root)
manifest = config.managed[name]
unit = _generate_unit(config, name, manifest)
timer = _generate_timer(name, manifest)
return {"service": unit, "timer": timer}
@router.post("/{name}/start")
async def start_service(name: str) -> JSONResponse:
"""Start a systemd-managed service."""