From 40414d472bc89b61267ec9dd4718432a52cdefd6 Mon Sep 17 00:00:00 2001 From: Debian Date: Thu, 28 May 2026 21:25:55 +0200 Subject: [PATCH] =?UTF-8?q?fix(routing+backends):=20Pfad-Pr=C3=A4fix-Valid?= =?UTF-8?q?ierung=20+=20Warnung=20bei=20leerem=20Backend-Pool=20(v1.1.141)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - RoutingRules: path_prefix Pattern-Validator (muss mit / beginnen) + destroyOnHidden - Backends: Alert-Banner wenn aktives Backend 0 Server hat (→ HAProxy 503) Co-Authored-By: Claude Sonnet 4.6 --- VERSION | 2 +- cmd/edgeguard-api/main.go | 2 +- cmd/edgeguard-ctl/main.go | 2 +- cmd/edgeguard-scheduler/main.go | 2 +- management-ui/src/i18n/locales/de/common.json | 4 ++++ management-ui/src/i18n/locales/en/common.json | 4 ++++ management-ui/src/pages/Backends/index.tsx | 9 +++++++++ management-ui/src/pages/RoutingRules/index.tsx | 11 ++++++++++- 8 files changed, 31 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index d24bae7..591b0f8 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.1.140 +1.1.141 diff --git a/cmd/edgeguard-api/main.go b/cmd/edgeguard-api/main.go index cdec34c..045cdea 100644 --- a/cmd/edgeguard-api/main.go +++ b/cmd/edgeguard-api/main.go @@ -60,7 +60,7 @@ import ( usersvc "git.netcell-it.de/projekte/edgeguard-native/internal/services/users" ) -var version = "1.1.140" +var version = "1.1.141" func main() { addr := os.Getenv("EDGEGUARD_API_ADDR") diff --git a/cmd/edgeguard-ctl/main.go b/cmd/edgeguard-ctl/main.go index fae04ca..80e21ca 100644 --- a/cmd/edgeguard-ctl/main.go +++ b/cmd/edgeguard-ctl/main.go @@ -11,7 +11,7 @@ import ( "git.netcell-it.de/projekte/edgeguard-native/internal/services/setup" ) -var version = "1.1.140" +var version = "1.1.141" const usage = `edgeguard-ctl — EdgeGuard CLI diff --git a/cmd/edgeguard-scheduler/main.go b/cmd/edgeguard-scheduler/main.go index 933667b..cf51fed 100644 --- a/cmd/edgeguard-scheduler/main.go +++ b/cmd/edgeguard-scheduler/main.go @@ -41,7 +41,7 @@ import ( "git.netcell-it.de/projekte/edgeguard-native/internal/services/tlscerts" ) -var version = "1.1.140" +var version = "1.1.141" const ( // renewTickInterval — how often we re-evaluate expiring certs. diff --git a/management-ui/src/i18n/locales/de/common.json b/management-ui/src/i18n/locales/de/common.json index 0514a9a..cbfd347 100644 --- a/management-ui/src/i18n/locales/de/common.json +++ b/management-ui/src/i18n/locales/de/common.json @@ -380,6 +380,8 @@ "forceHttp1Hint": "Deaktiviert HTTP/2 (h2) auf der Backend-Verbindung — HAProxy handelt nur noch HTTP/1.1 aus. Nötig für Backends die kein h2 unterstützen (z. B. ältere nginx-Konfigurationen ohne h2-Modul, Legacy-Apps).", "servers": "Server", "noServers": "kein Server", + "noServersWarning": "Ein oder mehrere aktive Backends haben keine Server konfiguriert.", + "noServersWarningDesc": "HAProxy liefert für Traffic auf diese Backends 503. Backend öffnen (oranger Tag) und mindestens einen Server hinzufügen.", "nServers": "{{n}} Server", "serversIn": "Server in „{{name}}\"", "serverHintCreate": "Speichern legt nur den Pool an. Server kommen im nächsten Schritt — Pool öffnen → „Server hinzufügen\".", @@ -415,6 +417,8 @@ "editRule": "Regel bearbeiten", "domain": "Domain", "pathPrefix": "Pfad-Präfix", + "pathPrefixHint": "Muss mit / beginnen. HAProxy matcht als Präfix.", + "pathPrefixInvalid": "Pfad muss mit / beginnen und darf nur gültige URL-Zeichen enthalten", "backend": "Backend", "priority": "Priorität", "active": "Aktiv", diff --git a/management-ui/src/i18n/locales/en/common.json b/management-ui/src/i18n/locales/en/common.json index ae51209..b28cf68 100644 --- a/management-ui/src/i18n/locales/en/common.json +++ b/management-ui/src/i18n/locales/en/common.json @@ -380,6 +380,8 @@ "forceHttp1Hint": "Disables HTTP/2 (h2) on the backend connection — HAProxy negotiates HTTP/1.1 only. Required for backends that don't support h2 (e.g. older nginx configs without the h2 module, legacy apps).", "servers": "Servers", "noServers": "no server", + "noServersWarning": "One or more active backends have no servers configured.", + "noServersWarningDesc": "HAProxy will return 503 for any traffic routed to these backends. Open the backend (orange tag) and add at least one server.", "nServers": "{{n}} servers", "serversIn": "Servers in “{{name}}”", "serverHintCreate": "Saving creates the pool only. Add servers in the next step — open the pool and click “Add server”.", @@ -415,6 +417,8 @@ "editRule": "Edit rule", "domain": "Domain", "pathPrefix": "Path prefix", + "pathPrefixHint": "Must start with /. HAProxy uses prefix matching.", + "pathPrefixInvalid": "Path must start with / and contain only valid URL characters", "backend": "Backend", "priority": "Priority", "active": "Active", diff --git a/management-ui/src/pages/Backends/index.tsx b/management-ui/src/pages/Backends/index.tsx index 76fd249..f2f9837 100644 --- a/management-ui/src/pages/Backends/index.tsx +++ b/management-ui/src/pages/Backends/index.tsx @@ -329,6 +329,15 @@ export default function BackendsPage() { )} /> + {serverCounts && (data ?? []).some(b => b.active && (serverCounts[b.id] ?? 0) === 0) && ( + + )} { setEditing(null); setCreating(false) }} onOk={() => { void form.submit() }} confirmLoading={create.isPending || update.isPending} + destroyOnHidden >
- +