summaryrefslogtreecommitdiff
path: root/bin/WIP/taler-local
diff options
context:
space:
mode:
Diffstat (limited to 'bin/WIP/taler-local')
-rwxr-xr-xbin/WIP/taler-local30
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. \