mirror of
https://github.com/j3ssie/osmedeus.git
synced 2026-08-21 07:02:27 +02:00
103 lines
3.0 KiB
Python
103 lines
3.0 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
|
|
|
|
|
|
# get raw report path
|
|
def get_report_path(options, resolve=True, get_final=False, module=None):
|
|
# ws = utils.get_workspace(options=options)
|
|
if not module and module is not False:
|
|
module = options.get('CURRENT_MODULE', False)
|
|
|
|
if module:
|
|
url = options.get(
|
|
'REMOTE_API') + "/api/reports/raw/?module={0}".format(module)
|
|
else:
|
|
url = options.get('REMOTE_API') + "/api/reports/raw/"
|
|
headers = send.osmedeus_headers
|
|
headers['Authorization'] = options.get('JWT')
|
|
|
|
r = send.send_get(url, data=None, headers=headers)
|
|
|
|
if not r:
|
|
return False
|
|
if not resolve:
|
|
reports = r.json().get('reports')
|
|
|
|
if resolve:
|
|
reports = utils.resolve_commands(options, r.json().get('reports'))
|
|
|
|
final_reports = []
|
|
if get_final:
|
|
for item in reports:
|
|
if 'final' in item.get('note').lower():
|
|
final_reports.append(item.get('report_path'))
|
|
else:
|
|
final_reports = reports
|
|
if len(final_reports) == 1:
|
|
return final_reports[0]
|
|
return final_reports
|
|
|
|
|
|
# get raw report path
|
|
def get_custom_report(options, grep_string='slack', module=None):
|
|
# ws = utils.get_workspace(options=options)
|
|
if not module and module is not False:
|
|
module = options.get('CURRENT_MODULE', False)
|
|
|
|
if module:
|
|
url = options.get(
|
|
'REMOTE_API') + "/api/reports/raw/?module={0}".format(module)
|
|
else:
|
|
url = options.get('REMOTE_API') + "/api/reports/raw/"
|
|
headers = send.osmedeus_headers
|
|
headers['Authorization'] = options.get('JWT')
|
|
|
|
r = send.send_get(url, data=None, headers=headers)
|
|
|
|
if not r:
|
|
return False
|
|
reports = utils.resolve_commands(options, r.json().get('reports'))
|
|
|
|
final_reports = []
|
|
if grep_string:
|
|
for item in reports:
|
|
if grep_string in item.get('note').lower():
|
|
final_reports.append(item.get('report_path'))
|
|
else:
|
|
final_reports = reports
|
|
if len(final_reports) == 1:
|
|
return final_reports[0]
|
|
return final_reports
|
|
|
|
|
|
def list_workspaces(options):
|
|
url = options.get('REMOTE_API') + "/api/workspaces/"
|
|
headers = send.osmedeus_headers
|
|
headers['Authorization'] = options.get('JWT')
|
|
|
|
r = send.send_get(url, data=None, headers=headers)
|
|
if r and r.json().get('workspaces'):
|
|
return r.json().get('workspaces')
|
|
return False
|
|
|
|
|
|
def full_reports(options, grouped=True):
|
|
ws = utils.get_workspace(options=options)
|
|
|
|
url = options.get('REMOTE_API') + \
|
|
"/api/reports/real/?workspace={0}&grouped=true".format(ws)
|
|
|
|
headers = send.osmedeus_headers
|
|
headers['Authorization'] = options.get('JWT')
|
|
|
|
r = send.send_get(url, None, headers=headers, is_json=True)
|
|
# return too soon or 500 status we have something wrong
|
|
if r and r.json().get('reports'):
|
|
return r.json().get('reports')
|
|
return False
|