예제 #1
0
파일: routes.py 프로젝트: xikaos/natlas
def host_historical_result(ip, scan_id):
	delForm = DeleteForm()
	delHostForm = DeleteForm()
	rescanForm = RescanForm()
	info, context = hostinfo(ip)
	count, context = current_app.elastic.gethost_scan_id(scan_id)
	return render_template("host/summary.html", host=context, info=info, **context, delForm=delForm, delHostForm=delHostForm, rescanForm=rescanForm)
예제 #2
0
파일: routes.py 프로젝트: xikaos/natlas
def host(ip):
	info, context = hostinfo(ip)
	delForm = DeleteForm()
	delHostForm = DeleteForm()
	rescanForm = RescanForm()
	return render_template("host/summary.html", **context, host=context, info=info, delForm=delForm, delHostForm=delHostForm, \
		rescanForm=rescanForm)
예제 #3
0
def host_headshots(ip):
    delHostForm = DeleteForm()
    rescanForm = RescanForm()
    info, context = hostinfo(ip)
    return render_template("host/headshots.html",
                           **context,
                           info=info,
                           delHostForm=delHostForm,
                           rescanForm=rescanForm)
예제 #4
0
def host(ip):
    info, context = hostinfo(ip)
    delForm = DeleteForm()
    delHostForm = DeleteForm()
    rescanForm = RescanForm()

    version = determine_data_version(context)

    return render_template("host/versions/"+version+"/summary.html", **context, host=context, info=info, delForm=delForm, delHostForm=delHostForm, \
     rescanForm=rescanForm)
예제 #5
0
파일: routes.py 프로젝트: xikaos/natlas
def randomHost():
	randomHost = current_app.elastic.random_host()
	if not randomHost:
		abort(404)
	ip = randomHost['hits']['hits'][0]['_source']['ip']
	info, context = hostinfo(ip)
	delForm = DeleteForm()
	delHostForm = DeleteForm()
	rescanForm = RescanForm()
	return render_template("host/summary.html", **context, host=context, info=info, delForm=delForm, delHostForm=delHostForm, \
		rescanForm=rescanForm)
예제 #6
0
def rescan_host(ip):
    rescanForm = RescanForm()

    if rescanForm.validate_on_submit():
        if not isAcceptableTarget(ip):
            # Someone is requesting we scan an ip that isn't allowed
            flash("We're not allowed to scan %s" % ip, "danger")
            return redirect(request.referrer)

        incompleteScans = current_app.ScopeManager.getIncompleteScans()

        for scan in incompleteScans:
            if ip == scan.target:
                if scan.dispatched == True:
                    status = "dispatched"
                    if (datetime.utcnow() -
                            scan.date_dispatched).seconds > 1200:
                        # 20 minutes have past since dispatch, something probably wen't seriously wrong
                        # move it back to not dispatched and update the cached rescan data
                        scan.dispatched = False
                        db.session.add(scan)
                        db.session.commit()
                        current_app.ScopeManager.updatePendingRescans()
                        current_app.ScopeManager.updateDispatchedRescans()
                        flash("Refreshed existing rescan request for %s" % ip,
                              "success")
                        return redirect(request.referrer)
                else:
                    status = "pending"
                flash(
                    "There's already a %s rescan request for %s" %
                    (status, ip), "warning")
                return redirect(request.referrer)

        rescan = RescanTask(user_id=current_user.id, target=ip)
        db.session.add(rescan)
        db.session.commit()
        flash("Requested rescan of %s" % ip, "success")
        current_app.ScopeManager.updatePendingRescans()
        current_app.ScopeManager.updateDispatchedRescans()
        return redirect(request.referrer)
예제 #7
0
def host_screenshots(ip):
    page = int(request.args.get('p', 1))
    searchOffset = current_user.results_per_page * (page - 1)

    delHostForm = DeleteForm()
    rescanForm = RescanForm()
    info, context = hostinfo(ip)
    total_entries, screenshots = current_app.elastic.get_host_screenshots(
        ip, current_user.results_per_page, searchOffset)

    next_url = url_for('main.host_screenshots', ip=ip, p=page + 1) \
     if total_entries > page * current_user.results_per_page else None
    prev_url = url_for('main.host_screenshots', ip=ip, p=page - 1) \
     if page > 1 else None

    version = determine_data_version(context)

    return render_template("host/versions/"+version+"/screenshots.html", **context, historical_screenshots=screenshots, numresults=total_entries, \
     info=info, delHostForm=delHostForm, rescanForm=rescanForm, next_url=next_url, prev_url=prev_url)
예제 #8
0
def host_history(ip):
    info, context = hostinfo(ip)
    page = int(request.args.get('p', 1))
    searchOffset = current_user.results_per_page * (page - 1)

    delHostForm = DeleteForm()
    rescanForm = RescanForm()

    count, context = current_app.elastic.gethost_history(
        ip, current_user.results_per_page, searchOffset)
    if count == 0:
        abort(404)
    next_url = url_for('main.host_history', ip=ip, p=page + 1) \
     if count > page * current_user.results_per_page else None
    prev_url = url_for('main.host_history', ip=ip, p=page - 1) \
     if page > 1 else None

    return render_template("host/versions/0.6.5/history.html", ip=ip, info=info, page=page, numresults=count, hosts=context, next_url=next_url, prev_url=prev_url, \
     delHostForm=delHostForm, rescanForm=rescanForm)