From 9f9e950d5c3f08e3998dff8179cb863cbf043d91 Mon Sep 17 00:00:00 2001 From: Benjamin Graillot Date: Tue, 25 Dec 2018 21:14:16 +0100 Subject: [PATCH] Handle multiple KSK at the same time --- dnssec_generate.py | 31 +++++++++++++++++-------------- main.py | 3 ++- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/dnssec_generate.py b/dnssec_generate.py index ab5844e..8be2e5b 100755 --- a/dnssec_generate.py +++ b/dnssec_generate.py @@ -16,19 +16,22 @@ except: if __name__ == '__main__': ds_records = {} for zone in zones: - cds = subprocess.check_output(['/usr/sbin/knotc', 'zone-read', zone, '@', 'CDS'])[:-1].decode('utf-8') - ds = {} - try: - cds = cds.split(' ') - ds['subzone'] = cds[1] - ds['id'] = cds[4] - ds['algo'] = cds[5] - ds['type'] = cds[6] - ds['fp'] = cds[7] - except: - print('Unable to find ksk for', zone) - continue - ds['ttl'] = 172800 - ds_records[zone] = ds + cdss = subprocess.check_output(['/usr/sbin/knotc', 'zone-read', zone, '@', 'CDS'])[:-1].decode('utf-8').split('\n') + for cds in cdss: + ds = {} + try: + cds = cds.split(' ') + ds['subzone'] = cds[1] + ds['id'] = cds[4] + ds['algo'] = cds[5] + ds['type'] = cds[6] + ds['fp'] = cds[7] + except: + print('Unable to find ksk for', zone) + continue + ds['ttl'] = 172800 + if not zone in ds_records: + ds_records[zone] = [] + ds_records[zone].append(ds) with open('dnssec.json', 'w') as dnssec: json.dump(ds_records, dnssec) diff --git a/main.py b/main.py index d607356..d600ca9 100755 --- a/main.py +++ b/main.py @@ -218,7 +218,8 @@ def write_dns_file(zone): zones_ds = json.load(ds) ds_records = "" for zone in zones_ds: - ds_records += template_ds.format(**zones_ds[zone]) + "\n" + for ds in zones_ds[zone]: + ds_records += template_ds.format(**ds) + "\n" else: ds_records = "\n"