def get_reports_sites(): result = [] group_name = request.args.get('group_name') user_email = request.args.get('user') if user_email is not None: # User specified, so return recent scans for each site/plan that the user can see user = users.find_one({'email': user_email}) if user is None: return jsonify(success=False, reason='no-such-user') if group_name: site_list = _find_sites_for_user_by_group_name(user_email, group_name) else: site_list = _find_sites_for_user(user_email) for site_url in sorted(site_list): site = sites.find_one({'url': site_url}) if site is not None: for plan_name in site['plans']: schedule = scanschedules.find_one({'site':site_url, 'plan':plan_name}) crontab = None scheduleEnabled = False if schedule is not None: crontab = schedule['crontab'] scheduleEnabled = schedule['enabled'] l = list(scans.find({'configuration.target':site['url'], 'plan.name': plan_name}).sort("created", -1).limit(1)) if len(l) == 1: scan = summarize_scan(sanitize_scan(l[0])) s = {v: scan.get(v) for v in ('id', 'created', 'state', 'issues')} result.append({'target': site_url, 'plan': plan_name, 'scan': scan, 'crontab': crontab, 'scheduleEnabled': scheduleEnabled}) else: result.append({'target': site_url, 'plan': plan_name, 'scan': None, 'crontab': crontab, 'scheduleEnabled': scheduleEnabled}) return jsonify(success=True, report=result)
def get_reports_issues(): result = [] group_name = request.args.get('group_name') user_email = request.args.get('user') if user_email is not None: # User specified, so return recent scans for each site/plan that the user can see user = users.find_one({'email': user_email}) if user is None: return jsonify(success=False, reason='no-such-user') if group_name: site_list = _find_sites_for_user_by_group_name(user_email, group_name) else: site_list = _find_sites_for_user(user_email) for site_url in sorted(site_list): r = {'target': site_url, 'issues': []} site = sites.find_one({'url': site_url}) if site is not None: for plan_name in site['plans']: for s in scans.find({'configuration.target':site['url'], 'plan.name': plan_name}).sort("created", -1).limit(1): for session in s['sessions']: for issue in session['issues']: r['issues'].append({'severity': issue['Severity'], 'summary': issue['Summary'], 'scan': { 'id': s['id'] }, 'id': issue['Id']}) result.append(r) return jsonify(success=True, report=result)
def get_reports_sites(): result = [] group_name = request.args.get('group_name') user_email = request.args.get('user') if user_email is not None: # User specified, so return recent scans for each site/plan that the user can see user = users.find_one({'email': user_email}) if user is None: return jsonify(success=False, reason='no-such-user') if group_name: site_list = _find_sites_for_user_by_group_name( user_email, group_name) else: site_list = _find_sites_for_user(user_email) for site_url in sorted(site_list): site = sites.find_one({'url': site_url}) if site is not None: for plan_name in site['plans']: schedule = scanschedules.find_one({ 'site': site_url, 'plan': plan_name }) crontab = None scheduleEnabled = False if schedule is not None: crontab = schedule['crontab'] scheduleEnabled = schedule['enabled'] l = list( scans.find({ 'configuration.target': site['url'], 'plan.name': plan_name }).sort("created", -1).limit(1)) if len(l) == 1: scan = summarize_scan(sanitize_scan(l[0])) s = { v: scan.get(v) for v in ('id', 'created', 'state', 'issues') } result.append({ 'target': site_url, 'plan': plan_name, 'scan': scan, 'crontab': crontab, 'scheduleEnabled': scheduleEnabled }) else: result.append({ 'target': site_url, 'plan': plan_name, 'scan': None, 'crontab': crontab, 'scheduleEnabled': scheduleEnabled }) return jsonify(success=True, report=result)
def get_reports_issues(): result = [] group_name = request.args.get('group_name') user_email = request.args.get('user') if user_email is not None: # User specified, so return recent scans for each site/plan that the user can see user = users.find_one({'email': user_email}) if user is None: return jsonify(success=False, reason='no-such-user') if group_name: site_list = _find_sites_for_user_by_group_name( user_email, group_name) else: site_list = _find_sites_for_user(user_email) for site_url in sorted(site_list): r = {'target': site_url, 'issues': []} site = sites.find_one({'url': site_url}) if site is not None: for plan_name in site['plans']: for s in scans.find({ 'configuration.target': site['url'], 'plan.name': plan_name }).sort("created", -1).limit(1): for session in s['sessions']: for issue in session['issues']: r['issues'].append({ 'severity': issue['Severity'], 'summary': issue['Summary'], 'scan': { 'id': s['id'] }, 'id': issue['Id'] }) result.append(r) return jsonify(success=True, report=result)