from fastapi import APIRouter, Depends, HTTPException, Query from sqlalchemy.orm import Session from database import get_db from utils.auth import verify_token from schemas import ( ConfigResponse, SystemSettings, PKISetting, SystemSettingsUpdate, PKISettingUpdate ) from services import config, pki router = APIRouter(dependencies=[Depends(verify_token)]) @router.get("/config", response_model=ConfigResponse) def get_config( section: str = Query(None, enum=["server", "pki"]), db: Session = Depends(get_db) ): response = ConfigResponse() if section is None or section == "server": response.server = config.get_system_settings(db) if section is None or section == "pki": response.pki = config.get_pki_settings(db) return response @router.put("/config/server", response_model=SystemSettings) def update_server_config( settings: SystemSettingsUpdate, db: Session = Depends(get_db) ): return config.update_system_settings(db, settings) @router.put("/config/pki", response_model=PKISetting) def update_pki_config( settings: PKISettingUpdate, db: Session = Depends(get_db) ): return config.update_pki_settings(db, settings) @router.post("/system/init") def init_system_pki(db: Session = Depends(get_db)): try: msg = pki.init_pki(db) return {"message": msg} except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @router.delete("/system/pki") def clear_system_pki(db: Session = Depends(get_db)): msg = pki.clear_pki(db) return {"message": msg}