diff options
Diffstat (limited to 'contrib/remote-reducer/remote_reducer.py')
-rw-r--r-- | contrib/remote-reducer/remote_reducer.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/contrib/remote-reducer/remote_reducer.py b/contrib/remote-reducer/remote_reducer.py new file mode 100644 index 0000000..aef6d6d --- /dev/null +++ b/contrib/remote-reducer/remote_reducer.py @@ -0,0 +1,53 @@ +import flask +from flask import Flask, request +import subprocess +import json +import sys +import os + +if sys.version_info.major < 3: + print("Python>=3 required") + os.exit(1) + +app = Flask(__name__) + + +@app.route("/") +def hello_world(): + return "<p>Hello, World!</p>" + + +@app.route("/start-recovery") +def start_recovery(): + res = subprocess.run(["anastasis-reducer", "-r"], capture_output=True) + resp = flask.Response(res.stdout) + resp.headers['Access-Control-Allow-Origin'] = '*' + return resp + + +@app.route("/start-backup") +def start_backup(): + res = subprocess.run(["anastasis-reducer", "-b"], capture_output=True) + resp = flask.Response(res.stdout) + resp.headers['Access-Control-Allow-Origin'] = '*' + return resp + + +@app.route("/action", methods=["POST", "OPTIONS"]) +def reduce_action(): + if request.method == "OPTIONS": + resp = flask.Response() + resp.headers['Access-Control-Allow-Origin'] = '*' + resp.headers['Access-Control-Allow-Headers'] = '*' + resp.headers['Access-Control-Allow-Method'] = '*' + return resp + + b = request.get_json() + res = subprocess.run( + ["anastasis-reducer", "-a", json.dumps(b["arguments"]), b["action"]], + capture_output=True, + input=json.dumps(b["state"]).encode("utf-8"), + ) + resp = flask.Response(res.stdout) + resp.headers['Access-Control-Allow-Origin'] = '*' + return resp |