Exemplo n.º 1
0
def submit():
    form = UploadForm()
    if form.validate_on_submit():
        filename = secure_filename(form.malware.data.filename)
        form.malware.data.save(os.path.join(app.config['TMP_UPLOAD_FOLDER'], filename))
        with open(os.path.join(app.config['TMP_UPLOAD_FOLDER'], filename), 'rb') as malware:
            data = malware.read()
            sha256 = hashlib.sha256(data).hexdigest()
            if os.path.isfile(os.path.join(app.config['BIN_UPLOAD_FOLDER'],sha256)):
                return redirect(url_for("detail.index", hash=sha256))
        ## Celery
        obj = {
            "path": os.path.join(app.config['TMP_UPLOAD_FOLDER'], filename),
            "sha256": sha256
        }
        reader = geoip2.database.Reader(app.config['MAXMAIN_DB_CITIES'])
        try:
            response = reader.city(request.remote_addr)
        except (AddressNotFoundError):
            obj["ipMeta"] = [{
                                "city": "unknown",
                                "ip": request.remote_addr,
                                "country": "unknown",
                                "iso_code": "unknown",
                                "date": datetime.utcnow(),
                                "geo": [0.0, 0.0]
                            }]
        else:
            obj["ipMeta"] = [{
                                "city": response.city.name,
                                "ip": request.remote_addr,
                                "country": response.country.name,
                                "iso_code": response.country.iso_code,
                                "date": datetime.utcnow(),
                                "geo": [response.location.longitude, response.location.latitude]
                            }]
        # Celery task
        task_id = analysis.delay(memt_dumps(obj))
        return redirect(url_for('upload.landing', hash=sha256, task_id=task_id.id))
    return redirect(url_for("index.index"))
Exemplo n.º 2
0
def update(task_id):
    task = analysis.AsyncResult(task_id)
    data = {"status": task.status}
    emit("update", memt_dumps(data), namespace=celery_namespace)
Exemplo n.º 3
0
def connect():
    emit("connect", memt_dumps({}), namespace=celery_namespace)
Exemplo n.º 4
0
def update(task_id):
    task = analysis.AsyncResult(task_id)
    data = {"status": task.status}
    emit("update", memt_dumps(data), namespace=celery_namespace)
Exemplo n.º 5
0
def connect():
    emit("connect", memt_dumps({}), namespace=celery_namespace)