Remove dependency on dns-manager and use dnspython directly instead

This commit is contained in:
2026-01-18 17:54:58 +01:00
parent 5570bab736
commit 6c8a1999eb
5 changed files with 323 additions and 87 deletions

View File

@@ -145,11 +145,32 @@ def load_config(config_path):
cfg["database"].setdefault("backend", "sqlite")
cfg.setdefault("dns_service", {})
cfg["dns_service"].setdefault("manager_config_file", "/etc/dns-manager/config.yml")
cfg["dns_service"].setdefault("dns_server", "localhost")
cfg["dns_service"].setdefault("dns_port", 53)
cfg["dns_service"].setdefault("dns_timeout", 5)
cfg["dns_service"].setdefault("cleanup_interval", 60)
if cfg["dns_service"]["cleanup_interval"] < 1:
cfg["dns_service"]["cleanup_interval"] = 1
# Validate dns_server
if not cfg["dns_service"]["dns_server"]:
raise ConfigError("dns_service.dns_server cannot be empty")
# Validate ddns_default_key_file if provided
default_key = cfg["dns_service"].get("ddns_default_key_file")
if default_key and not os.path.isfile(default_key):
raise ConfigError(f"ddns_default_key_file not found: {default_key}")
# Validate zone_keys if provided
zone_keys = cfg["dns_service"].get("zone_keys", {})
if not isinstance(zone_keys, dict):
raise ConfigError("dns_service.zone_keys must be a table")
for zone, key_path in zone_keys.items():
if not isinstance(key_path, str):
raise ConfigError(f"dns_service.zone_keys.{zone} must be a string path")
if not os.path.isfile(key_path):
raise ConfigError(f"Zone key file not found for {zone}: {key_path}")
cfg.setdefault("defaults", {})
cfg["defaults"].setdefault("dns_ttl", 60)
cfg["defaults"].setdefault("expiry_ttl", 3600)