diff --git a/VERSION b/VERSION index 97553d5..08b766a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.1.115 +1.1.116 diff --git a/cmd/edgeguard-api/main.go b/cmd/edgeguard-api/main.go index 03ed3da..2df4fb1 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.115" +var version = "1.1.116" func main() { addr := os.Getenv("EDGEGUARD_API_ADDR") diff --git a/cmd/edgeguard-ctl/main.go b/cmd/edgeguard-ctl/main.go index 37c6025..c652cf4 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.115" +var version = "1.1.116" const usage = `edgeguard-ctl — EdgeGuard CLI diff --git a/cmd/edgeguard-scheduler/main.go b/cmd/edgeguard-scheduler/main.go index 4834fc1..b67f796 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.115" +var version = "1.1.116" const ( // renewTickInterval — how often we re-evaluate expiring certs. diff --git a/management-ui/src/pages/Dashboard/index.tsx b/management-ui/src/pages/Dashboard/index.tsx index 42341bb..85d866e 100644 --- a/management-ui/src/pages/Dashboard/index.tsx +++ b/management-ui/src/pages/Dashboard/index.tsx @@ -145,6 +145,22 @@ function relativeTime(unix: number, t: (k: string, v?: Record) if (sec < 86400) return t('common.relTime.Xh', { n: Math.floor(sec / 3600) }) return t('common.relTime.Xd', { n: Math.floor(sec / 86400) }) } +function haCheckHint(code: string): string { + const hints: Record = { + L4CON: 'TCP connection refused — server port closed or firewall blocking', + L4TOUT: 'TCP connection timeout — server unreachable (routing/firewall/server down)', + L6CON: 'SSL/TLS handshake failed — certificate or ALPN mismatch', + L6TOUT: 'SSL/TLS timeout', + L6RSP: 'SSL/TLS protocol error', + L7STS: 'HTTP check: unexpected status code (health-check path returns non-2xx)', + L7RSP: 'HTTP check: unexpected response from server', + L7TOUT: 'HTTP check: timeout waiting for response', + SOCKERR: 'Socket error — OS-level problem (EAGAIN, ECONNRESET …)', + INI: 'Check not yet performed since last reload', + } + return hints[code] ?? code +} + function formatUptime(sec: number): string { if (sec < 60) return `${sec}s` const days = Math.floor(sec / 86400) @@ -515,6 +531,11 @@ export default function DashboardPage() { color={b.status === 'UP' ? 'green' : b.status === 'no check' ? 'default' : 'red'} style={{ margin: 0, fontSize: 10 }} >{b.status} + {b.health && b.health !== 'L7OK' && b.health !== 'L4OK' && ( + + {b.health} + + )} {b.sessions} sess{b.req_rate > 0 ? ` · ${b.req_rate}/s` : ''} · ↓{formatBytes(b.bytes_in)} ↑{formatBytes(b.bytes_out)}