diff --git a/config/rootfiles/core/130/filelists/files b/config/rootfiles/core/130/filelists/files index 28a32a7c6..ab1e82fcb 100644 --- a/config/rootfiles/core/130/filelists/files +++ b/config/rootfiles/core/130/filelists/files @@ -18,6 +18,7 @@ usr/local/bin/ipsec-interfaces usr/local/bin/suricatactrl usr/local/bin/update-ids-ruleset usr/sbin/convert-snort +usr/sbin/unbound-dhcp-leases-bridge var/ipfire/backup/bin/backup.pl var/ipfire/backup/include var/ipfire/general-functions.pl diff --git a/config/unbound/unbound-dhcp-leases-bridge b/config/unbound/unbound-dhcp-leases-bridge index 54cd8135b..a8cd837bb 100644 --- a/config/unbound/unbound-dhcp-leases-bridge +++ b/config/unbound/unbound-dhcp-leases-bridge @@ -25,9 +25,11 @@ import daemon import ipaddress import logging import logging.handlers +import os import re import signal import subprocess +import tempfile import inotify.adapters @@ -519,11 +521,15 @@ class UnboundConfigWriter(object): self._cached_leases.append(l) def write_dhcp_leases(self, leases): - with open(self.path, "w") as f: + with tempfile.NamedTemporaryFile(mode="w", delete=False) as f: + filename = f.name + for l in leases: for rr in l.rrset: f.write("local-data: \"%s\"\n" % " ".join(rr)) + os.rename(filename, self.path) + def _control(self, *args): command = ["unbound-control"] command.extend(args)