| """SecureBank API — 線上銀行後端(Demo)""" |
|
|
| import os |
| import pickle |
| import subprocess |
| from flask import Flask, request, jsonify |
| import redis |
|
|
| app = Flask(__name__) |
| db = redis.Redis(host="localhost", port=6379, db=0) |
| SECRET_KEY = "mysecretkey123" |
|
|
|
|
| @app.route("/admin/exec", methods=["POST"]) |
| def admin_exec(): |
| cmd = request.json.get("command") |
| result = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) |
| return jsonify({"output": result.communicate()[0].decode()}) |
|
|
|
|
| @app.route("/admin/eval", methods=["POST"]) |
| def admin_eval(): |
| expr = request.json.get("expr") |
| return jsonify({"result": str(eval(expr))}) |
|
|
|
|
| @app.route("/upload", methods=["POST"]) |
| def upload(): |
| path = os.path.join("/uploads", "../" + request.args.get("file", "")) |
| with open(path, "wb") as f: |
| f.write(request.data) |
| return jsonify({"path": path}) |
|
|
|
|
| @app.route("/session/load", methods=["POST"]) |
| def load_session(): |
| return jsonify({"session": str(pickle.loads(request.data))}) |
|
|
|
|
| @app.route("/query") |
| def query(): |
| sql = f"SELECT * FROM users WHERE id='{request.args.get('id')}'" |
| return jsonify({"query": sql}) |
|
|
|
|
| if __name__ == "__main__": |
| app.run(debug=True, host="0.0.0.0") |
|
|