/lib/sender/polling.py
https://github.com/j3ssie/Osmedeus · Python · 81 lines · 59 code · 16 blank · 6 comment · 16 complexity · b84c13a667b6b1941824e77561b7f915 MD5 · raw file
- import os
- import sys
- import time
- sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
- from lib.sender import send
- from lib.core import utils
- def waiting(options, delay=20, times=0):
- elapsed_time = 0
- if times:
- count = 0
- module_name = options.get('CURRENT_MODULE', False)
- utils.print_info('Waiting for {0} module'.format(module_name))
- checking = poll_status(options)
- while checking:
- time.sleep(delay)
- if not times:
- # just don't print this too much
- if ((elapsed_time / delay) % 10) == 0:
- utils.print_info('Waiting for {0} module'.format(module_name))
- time.sleep(delay)
- if times:
- utils.print_info('Waiting for {0} module {1}/{2}'.format(module_name, str(count), str(times)))
- if count == int(times):
- poll_status(options, forced=True)
- utils.print_bad("Something bad with {0} module but force to continue".format(module_name))
- break
- count += 1
- checking = poll_status(options)
- # print(checking)
- # clear old stuff because it's may be failed
- # continious will check output file so don't worry
- def clear_activities(options):
- ws = utils.get_workspace(options=options)
- module = options.get('CURRENT_MODULE', False)
- url = options.get('REMOTE_API') + "/api/activities/clear/"
- body = {
- "workspace": ws,
- "module": module,
- }
- headers = send.osmedeus_headers
- headers['Authorization'] = options.get('JWT')
- r = send.send_post(url, body, headers=headers, is_json=True)
- if r and r.json().get('status') == 200:
- utils.print_good("Clean old activities for {0}:{1}".format(ws, module))
- return True
- return False
- # parsing command
- def poll_status(options, forced=False):
- # /api/activities/get/?workspace=duckduckgo.com&modules=SubdomainScanning
- ws = utils.get_workspace(options=options)
- module = options.get('CURRENT_MODULE', False)
- if module:
- url = options.get('REMOTE_API') + "/api/activities/get/?workspace={0}&module={1}".format(ws, module)
- else:
- url = options.get('REMOTE_API') + "/api/activities/get/?workspace={0}".format(ws)
- headers = send.osmedeus_headers
- headers['Authorization'] = options.get('JWT')
- if forced:
- r = send.send_post(url, data=None, headers=headers)
- else:
- r = send.send_get(url, data=None, headers=headers)
- if r and r.json().get('status') == 'Done':
- return False
- if not r or r.json().get('status') != 'Done':
- return True