from flask import Flask, request, Response import os, requests, time from hashlib import sha256 from supaclient import logger from dotenv import load_dotenv from supabase import Client, create_client load_dotenv() # supabase URL = os.getenv("SUPABASE_IP") + "/" KEY = os.getenv("SUPABASE_KEY") supabase = create_client(URL, KEY) # app app = Flask(__name__) app.config["SECRET_KEY"] = os.urandom(64) # main @app.route("/") def index(): return "Hello, world!" # reverse proxy @app.route('/r/',methods=['GET', 'POST']) def proxy(path): headers = request.headers # process if request.method == 'GET': resp = requests.get(f'{URL}{path}', headers = headers) # forward elif request.method=='POST': # get items json_ctx = request.get_json() # flags logger_args = [] # edit request if path == "rest/v1/niming_posts": # niming post # hash hash = sha256( (json_ctx["content"] + str(time.time())).encode() ).hexdigest() # ig posting igid = None # set logger logger_args.append("newpost") logger_args.append(hash) # edit payload json_ctx["hash"] = hash json_ctx["igid"] = igid # forward resp = requests.post(f'{URL}{path}',json=json_ctx, headers = headers) # logger logger_res = logger(supabase, logger_args) # make response excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection'] headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers] response = Response(resp.content, resp.status_code, headers) return response # run if __name__ == "__main__": app.run(host = "0.0.0.0", port = 8000, debug = False)