From 5cff7d4644ea7d7ddcd89a38cea9b317a033ff9a Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Sun, 21 Apr 2024 17:56:03 +0200 Subject: [PATCH] Better zone headers --- TODO | 1 - nsconfig/core.py | 9 ++++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index 4764f92..5a8e101 100644 --- a/TODO +++ b/TODO @@ -3,7 +3,6 @@ - Classless reverse delegation - Blackhole zones - DNSSEC -- Auto-generated files should contain a comment saying so - Automated generation of Null MX - Bind: custom config - Logging diff --git a/nsconfig/core.py b/nsconfig/core.py index 7613061..1ea7055 100644 --- a/nsconfig/core.py +++ b/nsconfig/core.py @@ -261,10 +261,16 @@ class NscZonePrimary(NscZone): n.A(*args, reverse=reverse) return n + def zone_header(self) -> str: + return ( + f'; Zone file for {self.name}\n' + + '; Generated by NSC, please do not edit manually.\n' + + '\n') + def dump(self, file: Optional[TextIO] = None) -> None: # Could use self.zone.to_file(sys.stdout), but we want better formatting file = file or sys.stdout - file.write(f'; Zone file for {self.name}\n\n') + file.write(self.zone_header()) last_name = None for name, ttl, rec in self.zone.iterate_rdatas(): if name == last_name: @@ -290,6 +296,7 @@ class NscZonePrimary(NscZone): def gen_hash(self) -> None: sha = hashlib.sha1() + sha.update(self.zone_header().encode('us-ascii')) for name, ttl, rec in self.zone.iterate_rdatas(): text = f'{name}\t{ttl}\t{rec.rdtype.name}\t{rec.to_text()}\n' sha.update(text.encode('us-ascii')) -- 2.39.2