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"))
def update(task_id): task = analysis.AsyncResult(task_id) data = {"status": task.status} emit("update", memt_dumps(data), namespace=celery_namespace)
def connect(): emit("connect", memt_dumps({}), namespace=celery_namespace)