From 87bac5c07f2ea4d65d665ac93656c9fc6a62babd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=81ukasz=20Nowak?= <luke@nexedi.com>
Date: Tue, 26 Jul 2022 11:04:22 +0200
Subject: [PATCH] caddy-frontend: Fix backend Via header for https backend

Rarely used https backend was missing the backend Via additions, thus it was
not transmitted there.
---
 software/caddy-frontend/buildout.hash.cfg                | 2 +-
 software/caddy-frontend/templates/backend-haproxy.cfg.in | 2 ++
 software/caddy-frontend/test/test.py                     | 3 +++
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/software/caddy-frontend/buildout.hash.cfg b/software/caddy-frontend/buildout.hash.cfg
index bba4049fa..d88d01ce9 100644
--- a/software/caddy-frontend/buildout.hash.cfg
+++ b/software/caddy-frontend/buildout.hash.cfg
@@ -50,7 +50,7 @@ md5sum = 57c86795293b11300a036f5f8cf2c868
 
 [template-backend-haproxy-configuration]
 _update_hash_filename_ = templates/backend-haproxy.cfg.in
-md5sum = 6d4ad68ac44ccc72fe9148bd8e05a6f0
+md5sum = 81c73a4995409acb548621e5fb11d481
 
 [template-empty]
 _update_hash_filename_ = templates/empty.in
diff --git a/software/caddy-frontend/templates/backend-haproxy.cfg.in b/software/caddy-frontend/templates/backend-haproxy.cfg.in
index 1652584f2..2e79d0514 100644
--- a/software/caddy-frontend/templates/backend-haproxy.cfg.in
+++ b/software/caddy-frontend/templates/backend-haproxy.cfg.in
@@ -69,6 +69,8 @@ frontend http-backend
 
 frontend https-backend
   bind {{ configuration['local-ipv4'] }}:{{ configuration['https-port'] }}
+  http-request add-header Via "%HV rapid-cdn-backend-{{ configuration['node-id'] }}-{{ configuration['version-hash'] }}"
+  http-response add-header Via "%HV rapid-cdn-backend-{{ configuration['node-id'] }}-{{ configuration['version-hash']}}"
 {%- for slave_instance in backend_slave_list -%}
 {{ frontend_entry(slave_instance, 'https', False) }}
 {%- endfor %}
diff --git a/software/caddy-frontend/test/test.py b/software/caddy-frontend/test/test.py
index d4e73f213..98de5234d 100644
--- a/software/caddy-frontend/test/test.py
+++ b/software/caddy-frontend/test/test.py
@@ -4532,6 +4532,9 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
       result.headers['Strict-Transport-Security'])
 
     self.assertEqualResultJson(result, 'Path', '/https/test-path/deeper')
+    self.assertBackendHeaders(
+      result.json()['Incoming Headers'],
+      parameter_dict['domain'])
 
     result_http = fakeHTTPResult(
       parameter_dict['domain'],
-- 
2.30.9