Files
osmedeus/lib/sender/polling.py
2019-09-08 22:14:11 +07:00

82 lines
2.6 KiB
Python

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