bug fixes

This commit is contained in:
Nikola Mitev 2024-11-12 11:59:42 +00:00
parent 02e2c3592a
commit d8caa60712

View File

@ -16,18 +16,22 @@ def resolve_domain(domain, timeout=1, iterations=100, delay=0):
result = {}
for resolver in resolvers:
result.setdefault(resolver, {})
for rtype in rtypes:
demisto.debug(f'Resolving {domain} using {resolver} for {rtype} records...')
# run every query 100 times to handle cases where the DNS server is not responding.
errors = set()
result[resolver].setdefault(rtype, {'successes': 0, 'failures': 0, 'answers': set()})
demisto.debug(f'{result[resolver][rtype]}')
for i in range(iterations):
answers = []
answers = False
try:
a = dns.resolver.resolve_at(resolver, domain, rtype, lifetime=timeout)
if a:
answers = [str(answer) for answer in a]
answers.sort()
answers = True
for answer in a:
result[resolver][rtype]['answers'].add(str(answer))
except dns.resolver.NXDOMAIN:
error = f'Domain {domain} does not exist.'
@ -48,34 +52,20 @@ def resolve_domain(domain, timeout=1, iterations=100, delay=0):
demisto.info(f'Results for {resolver} and {rtype}: {answers}')
if resolver in result and rtype in result[resolver]:
demisto.debug(f'Previous results for {resolver} and {rtype} already exist.')
if answers:
if not result[resolver][rtype]['answers'] or answers == result[resolver][rtype]['answers']:
demisto.debug(f'incrementing successes')
result[resolver][rtype]['successes'] += 1
else:
demisto.info(f'got different answer for {rtype} from {resolver}: {answerlist}')
result[resolver][rtype].setdefault('variants', []).append(answerlist)
demisto.debug(f'incrementing successes')
result[resolver][rtype]['successes'] += 1
else:
demisto.debug(f'incrementing failures')
result[resolver][rtype]['failures'] += 1
elif resolver in result:
demisto.debug(f'Adding initial record for {rtype} from {resolver}.')
if answers:
result[resolver][rtype] = {'answers': [str(answer) for answer in answers], 'successes': 1}
else:
result[resolver][rtype] = {'answers': [], 'failures': 1, 'successes': 0}
if answers:
demisto.debug(f'incrementing successes')
result[resolver][rtype]['successes'] += 1
#if result[resolver][rtype]['answers'] and answers != result[resolver][rtype]['answers']:
# demisto.info(f'got different answer for {rtype} from {resolver}: {answers}')
# result[resolver][rtype].setdefault('variants', []).append(answers)
else:
demisto.debug(f'Adding initial result for {resolver}.')
if answers:
result[resolver] = {rtype: {'answers': [str(answer) for answer in answers],'successes': 1}}
else:
result[resolver] = {rtype: {'answers': [], 'failures': 1, 'successes': 0}}
demisto.debug(f'incrementing failures')
result[resolver][rtype]['failures'] += 1
sleep(delay)
if delay > 0:
sleep(delay)
result[resolver][rtype]['answers'] = list(result[resolver][rtype]['answers'])
if errors:
demisto.debug(f'errors for {resolver} and {rtype}: {errors}')
@ -123,8 +113,9 @@ def main():
params = demisto.params()
timeout = int(params.get('timeout', 1))
default_domain = params.get('default_domain', 'google.com')
delay = int(params.get('delay', 0))
iterations = int(params.get('iterations', 100))
# use command arguments if provided, then any custom default set, fallback to default delay
delay = int(args.get('delay', params.get('delay', 0)))
iterations = int(args.get('count', params.get('iterations', 100)))
if command == 'dns-test-resolve-domain':
domain = args.get('domain')