37 lines
1 KiB
Python
Executable file
37 lines
1 KiB
Python
Executable file
#!/usr/bin/python3
|
|
|
|
import json
|
|
import os
|
|
import re
|
|
import subprocess
|
|
|
|
|
|
path = os.path.dirname(os.path.abspath(__file__))
|
|
try:
|
|
with open(path + '/dnssec_domains.json') as dnssec_zones:
|
|
zones = json.load(dnssec_zones)
|
|
except:
|
|
zones = []
|
|
|
|
if __name__ == '__main__':
|
|
ds_records = {}
|
|
for zone in zones:
|
|
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)
|