fix: remove strict FQDN device name matching to allow arbitrary valid DNS names
All checks were successful
Docker Build & Push / build-and-push (push) Successful in 20s

This commit is contained in:
Gemini Bot
2026-03-20 09:44:59 +00:00
parent 3e96fc25dc
commit e63f25cca6
2 changed files with 1 additions and 25 deletions

View File

@@ -79,4 +79,5 @@ Falls Ihr CoreDNS-Container (hier beispielhaft `coredns` genannt) via **macvlan*
```
## Changelog
* **2026-03-20:** Restriktiver FQDN-Check entfernt. IPs mit abweichenden FQDNs (z. B. auf zusätzlichen Interfaces) werden nun ebenfalls synchronisiert, sofern der DNS-Name zur Zone passt.
* **2026-03-20:** Skript bricht bei API- oder Netzwerkfehlern nicht mehr ab (Container bleibt aktiv und versucht den Sync im nächsten Intervall).

25
sync.py
View File

@@ -171,31 +171,6 @@ def generate_zone_file_fwd(ipam_data, plugin_records):
short_name = dns_name.replace(f".{ZONE_NAME}", "")
if short_name == "": short_name = "@"
# Check: DNS Name muss zum Device/VM Namen passen (wenn zugewiesen)
# Verhindert, dass externe IPs auf anderen Hosts (Split-Brain) hier landen.
assigned = ip.get('assigned_object')
if assigned:
device_name = None
if 'device' in assigned and assigned['device']:
device_name = assigned['device']['name']
elif 'virtual_machine' in assigned and assigned['virtual_machine']:
device_name = assigned['virtual_machine']['name']
if device_name:
# Case-Insensitive Vergleich
d_norm = device_name.lower()
s_norm = short_name.lower()
# Erlaube Match mit Shortname ODER Full-FQDN als Devicename
fqdn_norm = dns_name.lower().rstrip('.')
if d_norm != s_norm and d_norm != fqdn_norm:
# Ausnahme: Wenn der Shortname "device-name-irgendwas" ist?
# Nein, User will strikte Trennung.
# Wir loggen das als Info, damit man es debuggen kann.
# log(f"DEBUG: Skipping {dns_name} on device {device_name} (Mismatch)")
continue
if ":" in address:
rtype = "AAAA"
else: