Add simple webapp to upload files
This commit is contained in:
parent
20021ffa49
commit
843449196d
2 changed files with 72 additions and 0 deletions
57
webapp/app.py
Normal file
57
webapp/app.py
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
from flask import Flask, render_template, request
|
||||
import socket
|
||||
from struct import pack, unpack
|
||||
import hashlib
|
||||
import sys
|
||||
|
||||
PORT = 8989
|
||||
|
||||
files = []
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
return render_template('index.html')
|
||||
|
||||
@app.route('/upload', methods=['POST'])
|
||||
def upload():
|
||||
if 'file' not in request.files:
|
||||
return 'No file part'
|
||||
file = request.files['file']
|
||||
if file.filename == '':
|
||||
return 'No selected file'
|
||||
|
||||
buf = file.read()
|
||||
hash = hashlib.sha256(buf).digest()
|
||||
|
||||
# Scan file
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
s.settimeout(10)
|
||||
s.connect(("localhost", PORT))
|
||||
|
||||
s.send(pack("I", len(buf)))
|
||||
s.send(buf)
|
||||
|
||||
try:
|
||||
recv_hash = s.recv(32)
|
||||
status = unpack("B", s.recv(1))
|
||||
|
||||
if (hash != recv_hash):
|
||||
message = 'Error: Mismatching sha256.'
|
||||
|
||||
elif (status == 1):
|
||||
message = "Error: Potential virus found, cannot upload."
|
||||
|
||||
else:
|
||||
message = 'File successfully uploaded'
|
||||
files.append({'filename': file.filename, 'content':buf})
|
||||
|
||||
except:
|
||||
message = 'Error: Failed to scan file'
|
||||
|
||||
s.close()
|
||||
return message
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(debug=True)
|
||||
Loading…
Add table
Add a link
Reference in a new issue