fix(routing-rules): backend selector showed (undefined:undefined) instead of scheme

The Backend interface declared address/port fields that don't exist on the
Backend model (those belong to BackendServer). The table column and the
backend select dropdown both rendered "name (undefined:undefined)". Fixed
by replacing phantom fields with scheme, matching the same fix applied to
Domains pages in v1.1.121.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Debian
2026-05-28 09:38:35 +02:00
parent 22528a54a9
commit 192384c448
5 changed files with 7 additions and 7 deletions

View File

@@ -1 +1 @@
1.1.121 1.1.122

View File

@@ -60,7 +60,7 @@ import (
usersvc "git.netcell-it.de/projekte/edgeguard-native/internal/services/users" usersvc "git.netcell-it.de/projekte/edgeguard-native/internal/services/users"
) )
var version = "1.1.121" var version = "1.1.122"
func main() { func main() {
addr := os.Getenv("EDGEGUARD_API_ADDR") addr := os.Getenv("EDGEGUARD_API_ADDR")

View File

@@ -11,7 +11,7 @@ import (
"git.netcell-it.de/projekte/edgeguard-native/internal/services/setup" "git.netcell-it.de/projekte/edgeguard-native/internal/services/setup"
) )
var version = "1.1.121" var version = "1.1.122"
const usage = `edgeguard-ctl — EdgeGuard CLI const usage = `edgeguard-ctl — EdgeGuard CLI

View File

@@ -41,7 +41,7 @@ import (
"git.netcell-it.de/projekte/edgeguard-native/internal/services/tlscerts" "git.netcell-it.de/projekte/edgeguard-native/internal/services/tlscerts"
) )
var version = "1.1.121" var version = "1.1.122"
const ( const (
// renewTickInterval — how often we re-evaluate expiring certs. // renewTickInterval — how often we re-evaluate expiring certs.

View File

@@ -32,7 +32,7 @@ interface RuleFormValues {
} }
interface Domain { id: number; name: string } interface Domain { id: number; name: string }
interface Backend { id: number; name: string; address: string; port: number } interface Backend { id: number; name: string; scheme: string }
async function listRules(): Promise<RoutingRule[]> { async function listRules(): Promise<RoutingRule[]> {
const r = await apiClient.get('/routing-rules') const r = await apiClient.get('/routing-rules')
@@ -83,7 +83,7 @@ export default function RoutingRulesPage() {
const domainName = (id: number) => domains?.find((d) => d.id === id)?.name ?? `#${id}` const domainName = (id: number) => domains?.find((d) => d.id === id)?.name ?? `#${id}`
const backendLabel = (id: number) => { const backendLabel = (id: number) => {
const b = backends?.find((x) => x.id === id) const b = backends?.find((x) => x.id === id)
return b ? `${b.name} (${b.address}:${b.port})` : `#${id}` return b ? `${b.name} (${b.scheme})` : `#${id}`
} }
const backendHealth = (id: number) => { const backendHealth = (id: number) => {
if (!haproxyStats?.length) return null if (!haproxyStats?.length) return null
@@ -290,7 +290,7 @@ export default function RoutingRulesPage() {
</Form.Item> </Form.Item>
<Form.Item label={t('routing.backend')} name="backend_id" rules={[{ required: true }]}> <Form.Item label={t('routing.backend')} name="backend_id" rules={[{ required: true }]}>
<Select <Select
options={(backends ?? []).map((b) => ({ value: b.id, label: `${b.name} (${b.address}:${b.port})` }))} options={(backends ?? []).map((b) => ({ value: b.id, label: `${b.name} (${b.scheme})` }))}
placeholder={t('routing.selectBackend')} placeholder={t('routing.selectBackend')}
/> />
</Form.Item> </Form.Item>