51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
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}
|