Skip to content

Commit cc4acc3

Browse files
author
Nicola Canepa
committed
[net_utils.py] Support empty dns_zone to use hardcoded list
1 parent 9e9e59e commit cc4acc3

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

src/tools/libs/net_utils.py

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,18 @@ def hosts_if_not_me(hosts: list) -> typing.List[Host]:
5454

5555

5656
def 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

Comments
 (0)