bug fixes
This commit is contained in:
parent
02e2c3592a
commit
d8caa60712
@ -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')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user