53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
|
|
#!/usr/bin/env python3
|
||
|
|
"""Lit et valide le registre des domaines publics Set-OPS (docs/domaines.yml)."""
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import argparse
|
||
|
|
import sys
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
from inventory_rules import charger_domaines, fqdn_exposition, valider_domaines
|
||
|
|
|
||
|
|
RACINE = Path(__file__).resolve().parents[1]
|
||
|
|
FICHIER = RACINE / "docs/domaines.yml"
|
||
|
|
|
||
|
|
|
||
|
|
def lister(registre: dict) -> None:
|
||
|
|
domaines = registre.get("domaines_publics", {})
|
||
|
|
if not domaines:
|
||
|
|
print("Aucun domaine public declare.")
|
||
|
|
return
|
||
|
|
for nom_domaine, conf in domaines.items():
|
||
|
|
secondaires = conf.get("secondaires") or []
|
||
|
|
dnssec = "oui" if conf.get("dnssec") else "non"
|
||
|
|
print(f"{nom_domaine} [autorite {conf.get('autorite', '?')}, edge {conf.get('edge', '-')}, dnssec {dnssec}]")
|
||
|
|
print(f" secondaires: {', '.join(secondaires) if secondaires else '(aucun)'}")
|
||
|
|
for entree in conf.get("exposition") or []:
|
||
|
|
fqdn = fqdn_exposition(nom_domaine, entree.get("nom", ""))
|
||
|
|
print(f" exposition: {fqdn} -> {entree.get('cible', '?')} ({entree.get('type', 'web')})")
|
||
|
|
|
||
|
|
|
||
|
|
def main() -> int:
|
||
|
|
parser = argparse.ArgumentParser(description="Registre des domaines publics Set-OPS.")
|
||
|
|
sub = parser.add_subparsers(dest="commande", required=True)
|
||
|
|
sub.add_parser("lister", help="Affiche domaines, autorite et expositions.")
|
||
|
|
sub.add_parser("verifier", help="Valide la coherence du registre.")
|
||
|
|
|
||
|
|
args = parser.parse_args()
|
||
|
|
try:
|
||
|
|
registre = charger_domaines(FICHIER)
|
||
|
|
if args.commande == "lister":
|
||
|
|
lister(registre)
|
||
|
|
elif args.commande == "verifier":
|
||
|
|
valider_domaines(registre)
|
||
|
|
print("Registre des domaines valide.")
|
||
|
|
except Exception as exc:
|
||
|
|
print(f"erreur: {exc}", file=sys.stderr)
|
||
|
|
return 2
|
||
|
|
return 0
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
raise SystemExit(main())
|