@@ -54,17 +54,18 @@ def hosts_if_not_me(hosts: list) -> typing.List[Host]:
5454
5555
5656def hosts_from_dns (dns_zone : typing .Optional [str ], log : logging .Logger ) -> dict :
57- try :
58- soa_answer = dns .resolver .resolve (dns_zone , 'SOA' )
59- full_zone = dns .zone .from_xfr (dns .query .xfr (dns .resolver .resolve (soa_answer [0 ].mname , 'A' )[0 ].address , dns_zone ))
60- all_hosts = {'linux' : set (), 'mac' : set ()}
61- for record_name , dns_record in full_zone .items ():
62- txt_rdata = dns_record .get_rdataset (dns .rdataclass .IN , dns .rdatatype .TXT )
63- if txt_rdata :
64- for record_text in [s .decode ('utf-8' ).lower () for t in txt_rdata for s in t .strings ]:
65- if record_text in all_hosts .keys ():
66- all_hosts [record_text ].add (record_name .to_text ().lower ())
67- return all_hosts
68- except AttributeError :
69- log .info ('Using hardcoded hosts as requested' )
70- return HOSTS
57+ if dns_zone :
58+ try :
59+ soa_answer = dns .resolver .resolve (dns_zone , 'SOA' )
60+ full_zone = dns .zone .from_xfr (dns .query .xfr (dns .resolver .resolve (soa_answer [0 ].mname , 'A' )[0 ].address , dns_zone ))
61+ all_hosts = {'linux' : set (), 'mac' : set ()}
62+ for record_name , dns_record in full_zone .items ():
63+ txt_rdata = dns_record .get_rdataset (dns .rdataclass .IN , dns .rdatatype .TXT )
64+ if txt_rdata :
65+ for record_text in [s .decode ('utf-8' ).lower () for t in txt_rdata for s in t .strings ]:
66+ if record_text in all_hosts .keys ():
67+ all_hosts [record_text ].add (record_name .to_text ().lower ())
68+ return all_hosts
69+ except AttributeError :
70+ log .info ('Using hardcoded hosts as requested' )
71+ return HOSTS
0 commit comments