Agent DNS
- load_config() lit maintenant la section `redis` du config.yaml
(host, port, password, ssl, ssl_ca_cert, ssl_certfile, ssl_keyfile)
→ l'agent ne tombait plus sur localhost:6379 par défaut
- Suppression de retry_on_timeout (déprécié redis-py 6.0)
- Suppression de socket_keepalive_options (clés string invalides)
- int() forcé sur port et db dans run() pour éviter TypeError
- Traceback complet sur fatal error
- get_state: relativize=False → dnspython conserve les FQDN complets
- get_state: parse les enregistrements "; [DISABLED]" pour les inclure
avec active=False dans le state retourné
- _fmt_value: ne ajoute plus le point final sur les noms relatifs
(srvweb → reste srvweb, srvweb.infolix.fr → srvweb.infolix.fr.)
- save_zone_raw: named-checkzone + snapshot (même logique qu'apply_zone)
- gen_certs.sh: REDIS_HOST obligatoire, détection IP vs FQDN pour le SAN
Backend DNS
- _sync_zone_from_state: normalise les noms FQDN → court avant _stable_id
(mail.infolix.fr. → mail pour correspondre à ce qui est en BDD)
- _sync_zone_from_state: active=%s au lieu de COALESCE(active,1)
→ les enregistrements désactivés importés depuis le fichier de zone
sont correctement marqués active=0 en BDD
Frontend
- App.jsx: VITE_API_BASE prioritaire sur localStorage
- validateRecord: accepte les noms relatifs sans point pour CNAME/MX/NS