| 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) |
|
|
|
|