33 lines
969 B
Python
Executable file
33 lines
969 B
Python
Executable file
import subprocess
|
|
|
|
|
|
def get_ds(zone, verbose=False):
|
|
if verbose:
|
|
print("Getting CDS of %s:" % (zone,))
|
|
print("/usr/sbin/knotc zone-read %s @ CDS" % (zone,))
|
|
try:
|
|
cdss = subprocess.check_output(['/usr/sbin/knotc', 'zone-read', zone, '@', 'CDS'])[:-1].decode('utf-8').split('\n')
|
|
except subprocess.CalledProcessError:
|
|
return []
|
|
dss = []
|
|
if verbose:
|
|
print("CDS of %s = %s" % (zone, cdss))
|
|
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:
|
|
if verbose:
|
|
print('Unable to find ksk for', zone)
|
|
continue
|
|
ds['ttl'] = 172800
|
|
if verbose:
|
|
print("DS record of %s : %s" % (zone, ds))
|
|
print("\n\n")
|
|
dss.append(ds)
|
|
return dss
|