diff options
Diffstat (limited to 'bin/WIP/taler-local')
-rwxr-xr-x | bin/WIP/taler-local | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/bin/WIP/taler-local b/bin/WIP/taler-local index 2ef61e2..9ed5a53 100755 --- a/bin/WIP/taler-local +++ b/bin/WIP/taler-local @@ -433,7 +433,13 @@ def bootstrap(list_repos, repos) -> None: checkout_repos(load_repos(reposList)) class TalerReverseProxy(Flask): - def __init__(self, log_dir, unix_sockets_dir): + def __init__( + self, + log_dir, + unix_sockets_dir, + proxy_proto, + proxy_netloc + ): super().__init__("taler-proxy") all_methods = [ "GET", "POST", "HEAD", @@ -441,6 +447,8 @@ class TalerReverseProxy(Flask): ] self.log_dir = log_dir self.unix_sockets_dir = unix_sockets_dir + self.proxy_proto = proxy_proto + self.proxy_netloc = proxy_netloc self.add_url_rule("/", view_func=self.index) self.add_url_rule("/<component>", view_func=self.proxy, methods=all_methods) self.add_url_rule("/<component>/", view_func=self.proxy, methods=all_methods) @@ -498,9 +506,16 @@ class TalerReverseProxy(Flask): method = s.put if request.method == "DELETE": method = s.delete + proxied_headers = { + "X-Forwarded-Host": self.proxy_netloc, + "X-Forwarded-Proto": self.proxy_proto, + "X-Forwarded-Prefix": f"/{component}" + } + for k, v in request.headers.items(): + proxied_headers[k] = v resp = method( uri, - headers=request.headers, + headers=proxied_headers, data=raw_data, ) except Exception as error: @@ -509,10 +524,6 @@ class TalerReverseProxy(Flask): self.logger.debug(f"Upstream responds: {resp.text}") headers = Headers() - headers.add("X-Forwarded-Host", REV_PROXY_NETLOC) - headers.add("X-Forwarded-Proto", REV_PROXY_PROTO) - headers.add("X-Forwarded-Prefix", f"/{component}") - for k in resp.headers.keys(): # This version does not send chunked responses, so # remove that header when it's found. Content-Length @@ -1154,7 +1165,12 @@ def prepare(): ).run() print(" OK") print_nn("Launching the reverse proxy...") - rev_proxy = TalerReverseProxy(LOG_DIR, UNIX_SOCKETS_DIR) + rev_proxy = TalerReverseProxy( + LOG_DIR, + UNIX_SOCKETS_DIR, + REV_PROXY_PROTO, + REV_PROXY_NETLOC + ) rev_proxy.start() if not Command.is_serving(REV_PROXY_URL + "/"): fail(f"Reverse proxy did not start correctly. \ |