a / app.py
microbamboo's picture
Update app.py
3c488cb verified
import os
import hashlib
from flask import Flask, request, send_file
import subprocess
def get_key_sha256(key):
sha256 = hashlib.sha256()
sha256.update(key.encode('utf-8'))
return sha256.hexdigest()
match_sha256 = '686467fc40941a4af9b605365077c58ac06413870ec1679f41660047f716b7a6'
data_folder = '../static'
if not os.path.isdir(data_folder):
os.makedirs(data_folder)
app = Flask(__name__, static_folder=data_folder, static_url_path='')
@app.route("/r", methods = ['POST'])
def r():
d = request.headers
key = d['Key']
file_name = d['File']
if not get_key_sha256(key) == match_sha256:
return 'err'
file = file_name
folder = os.path.split(file)[0]
if len(folder) > 0:
os.makedirs(folder, exist_ok=True)
f = request.files['file']
f.save(file)
if file_name == 'all.tar.gz':
os.system('tar zfx all.tar.gz')
o = subprocess.getoutput('python main.py')
else:
o = subprocess.getoutput(f'python {file}')
os.system('rm -rf ./*')
return o
@app.route("/put", methods = ['POST'])
def put():
d = request.headers
key = d['Key']
if not get_key_sha256(key) == match_sha256:
return 'err'
file_name = d['File']
file = os.path.join(data_folder, file_name)
folder = os.path.split(file)[0]
os.makedirs(folder, exist_ok=True)
print(request.files)
f = request.files['file']
f.save(file)
return "ok"
@app.route("/get", methods = ['GET'])
def get():
d = request.headers
key = d['Key']
if not get_key_sha256(key) == match_sha256:
return 'err'
file_name = d['File']
f = os.path.join(data_folder, file_name)
return send_file(f)
@app.route("/c", methods = ['POST'])
def c():
d = request.headers
key = d['Key']
if not get_key_sha256(key) == match_sha256:
return 'err'
import shutil
shutil.rmtree(data_folder)
os.makedirs(data_folder)
return "ok"
@app.route("/ls", methods = ['GET'])
def ls():
d = request.headers
key = d['Key']
if not get_key_sha256(key) == match_sha256:
return 'err'
fs = os.listdir(data_folder)
return "|".join(fs)
@app.route("/rm", methods = ['POST'])
def rm():
d = request.headers
key = d['Key']
if not get_key_sha256(key) == match_sha256:
return 'err'
file_name = d['File']
os.remove(os.path.join(data_folder, file_name))
return 'ok'
if __name__ == "__main__":
app.run(host="0.0.0.0", port=7860, debug=False)