imrprove
All checks were successful
Build and Deploy MITM Webserver / build (push) Successful in 8s

This commit is contained in:
2026-01-10 19:05:05 +01:00
parent 8fdf23f3b5
commit 79f18eabab

View File

@@ -317,7 +317,21 @@ def delete_rules_by_ids(ids: List[str], family: str, table: str, chain: str) ->
# ---------------------- API endpoints ---------------------- # ---------------------- API endpoints ----------------------
@router.get("/rules") @router.get("/rules")
def get_rules(family: Optional[str] = DEFAULT_FAMILY, table: Optional[str] = DEFAULT_TABLE): def get_rules(family: Optional[str] = DEFAULT_FAMILY, table: Optional[str] = DEFAULT_TABLE, chain: Optional[str] = DEFAULT_CHAIN):
"""
Ensure the table/chain exist (try to create them if missing), then return
the rules from nftables. If ensure_table_chain fails we return 500 with a clear message.
"""
logger.debug("GET /nft/rules called (family=%s table=%s chain=%s)", family, table, chain)
try:
# Ensure required table/chain exist before listing rules
ensure_table_chain(family, table, chain)
except RuntimeError as e:
logger.error("failed to create/ensure nft table/chain %s.%s/%s: %s", family, table, chain, e)
# return an HTTP 500 so the frontend knows setup failed
raise HTTPException(status_code=500, detail=f"failed to ensure nft table/chain: {e}")
# now safe to list rules
rules = list_rules_from_nft(family, table) rules = list_rules_from_nft(family, table)
return {"count": len(rules), "rules": rules, "version": _current_version} return {"count": len(rules), "rules": rules, "version": _current_version}