Esempio n. 1
0
def get_reports_history():
    history = []
    user_email = request.args.get('user')
    if user_email is not None:
        user = users.find_one({'email': user_email})
        if user is None:
            return jsonify(success=False, reason='no-such-user')
        for s in scans.find({'configuration.target': {'$in': _find_sites_for_user(user_email)}}).sort("created", -1).limit(100):
            history.append(summarize_scan(sanitize_scan(s)))
    else:
        for s in scans.find({}).sort("created", -1).limit(100):
            history.append(summarize_scan(sanitize_scan(s)))
    return jsonify(success=True, report=history)
Esempio n. 2
0
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)
Esempio n. 3
0
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_history():
    history = []
    user_email = request.args.get('user')
    if user_email is not None:
        user = users.find_one({'email': user_email})
        if user is None:
            return jsonify(success=False, reason='no-such-user')
        for s in scans.find({
                'configuration.target': {
                    '$in': _find_sites_for_user(user_email)
                }
        }).sort("created", -1).limit(100):
            history.append(summarize_scan(sanitize_scan(s)))
    else:
        for s in scans.find({}).sort("created", -1).limit(100):
            history.append(summarize_scan(sanitize_scan(s)))
    return jsonify(success=True, report=history)
Esempio n. 5
0
def get_scans():
    limit = request.args.get('limit', 3)
    if limit: limit = int(limit)
    site = sites.find_one({'id': request.args.get('site_id')})
    if not site:
        return jsonify(success=False, reason='no-such-site')
    scanz = scans.find({"plan.name": request.args.get("plan_name"),
                        "configuration.target": site['url']}).sort("created", -1).limit(limit)
    return jsonify(success=True, scans=[summarize_scan(sanitize_scan(s)) for s in scanz])
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_scans():
    limit = request.args.get('limit', 3)
    if limit: limit = int(limit)
    site = sites.find_one({'id': request.args.get('site_id')})
    if not site:
        return jsonify(success=False, reason='no-such-site')
    scanz = scans.find({
        "plan.name": request.args.get("plan_name"),
        "configuration.target": site['url']
    }).sort("created", -1).limit(limit)
    return jsonify(success=True,
                   scans=[summarize_scan(sanitize_scan(s)) for s in scanz])
Esempio n. 8
0
def get_scans():
    limit = request.args.get("limit", 3)
    if limit:
        limit = int(limit)
    site = sites.find_one({"id": request.args.get("site_id")})
    if not site:
        return jsonify(success=False, reason="no-such-site")
    scanz = (
        scans.find({"plan.name": request.args.get("plan_name"), "configuration.target": site["url"]})
        .sort("created", -1)
        .limit(limit)
    )
    return jsonify(success=True, scans=[summarize_scan(sanitize_scan(s)) for s in scanz])
Esempio n. 9
0
def get_reports_sites():
    result = []
    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')
        for site_url in sorted(_find_sites_for_user(user_email)):
            site = sites.find_one({'url': site_url})
            if site is not None:
                for plan_name in site['plans']:
                    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})
                    else:
                        result.append({'target': site_url, 'plan': plan_name, 'scan': None})
    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)