From 9642a6adfef628506b3c0653e699e95509c8b1bd Mon Sep 17 00:00:00 2001 From: Debian Date: Tue, 12 May 2026 21:50:52 +0200 Subject: [PATCH] refactor(fwlog): Live-Log als Firewall-Tab, default-aus, Start-Button MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UI-Restruktur nach User-Feedback: - Sidebar-Eintrag „Firewall-Live" entfernt — gehört thematisch unter Firewall, kein Top-Level-Item. Standalone-Page /firewall-live raus. - Neuer Firewall-Tab „Live-Log" zwischen NAT und Zonen. - Default = AUS: zeigt Empty-State mit Start-Button. WebSocket verbindet erst nach Klick. Stop-Button schließt explizit. - Filter-Inputs (src/dst/rule_id) jetzt 300ms debounced — vorher triggerte jeder Tastendruck einen WS-Reconnect. Server-Pipeline „wirklich live" gepinnt: - ulogd.conf NFLOG-Plugin bekommt qthreshold=1 + qtimeout=1. Default des Kernels batched Pakete bis 1024 oder 1s; mit 1/1 fließt jedes Paket sofort. Critical für die Wahrnehmung „live" statt „bursty". Co-Authored-By: Claude Opus 4.7 (1M context) --- VERSION | 2 +- cmd/edgeguard-api/main.go | 2 +- cmd/edgeguard-ctl/main.go | 2 +- cmd/edgeguard-scheduler/main.go | 2 +- management-ui/src/App.tsx | 2 - .../src/components/Layout/AppLayout.tsx | 1 - .../src/components/Layout/Sidebar.tsx | 4 +- management-ui/src/i18n/locales/de/common.json | 7 +- management-ui/src/i18n/locales/en/common.json | 7 +- .../index.tsx => Firewall/LiveLog.tsx} | 288 ++++++++++-------- management-ui/src/pages/Firewall/index.tsx | 2 + .../debian/edgeguard-api/DEBIAN/postinst | 5 + 12 files changed, 182 insertions(+), 142 deletions(-) rename management-ui/src/pages/{FirewallLive/index.tsx => Firewall/LiveLog.tsx} (51%) diff --git a/VERSION b/VERSION index 7eeb2c7..32c4ece 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.62 +1.0.63 diff --git a/cmd/edgeguard-api/main.go b/cmd/edgeguard-api/main.go index 168d369..6540698 100644 --- a/cmd/edgeguard-api/main.go +++ b/cmd/edgeguard-api/main.go @@ -50,7 +50,7 @@ import ( wgsvc "git.netcell-it.de/projekte/edgeguard-native/internal/services/wireguard" ) -var version = "1.0.62" +var version = "1.0.63" func main() { addr := os.Getenv("EDGEGUARD_API_ADDR") diff --git a/cmd/edgeguard-ctl/main.go b/cmd/edgeguard-ctl/main.go index c044320..f9671d4 100644 --- a/cmd/edgeguard-ctl/main.go +++ b/cmd/edgeguard-ctl/main.go @@ -9,7 +9,7 @@ import ( "os" ) -var version = "1.0.62" +var version = "1.0.63" const usage = `edgeguard-ctl — EdgeGuard CLI diff --git a/cmd/edgeguard-scheduler/main.go b/cmd/edgeguard-scheduler/main.go index 9e40c55..50869f9 100644 --- a/cmd/edgeguard-scheduler/main.go +++ b/cmd/edgeguard-scheduler/main.go @@ -24,7 +24,7 @@ import ( "git.netcell-it.de/projekte/edgeguard-native/internal/services/tlscerts" ) -var version = "1.0.62" +var version = "1.0.63" const ( // renewTickInterval — how often we re-evaluate expiring certs. diff --git a/management-ui/src/App.tsx b/management-ui/src/App.tsx index c7e12da..d6fc86a 100644 --- a/management-ui/src/App.tsx +++ b/management-ui/src/App.tsx @@ -25,7 +25,6 @@ const ForwardProxyPage = lazy(() => import('./pages/ForwardProxy')) const DNSPage = lazy(() => import('./pages/DNS')) const NTPPage = lazy(() => import('./pages/NTP')) const ClusterPage = lazy(() => import('./pages/Cluster')) -const FirewallLivePage = lazy(() => import('./pages/FirewallLive')) const LogsPage = lazy(() => import('./pages/Logs')) const LicensePage = lazy(() => import('./pages/License')) const SettingsPage = lazy(() => import('./pages/Settings')) @@ -111,7 +110,6 @@ export default function App() { } /> } /> } /> - } /> } /> } /> } /> diff --git a/management-ui/src/components/Layout/AppLayout.tsx b/management-ui/src/components/Layout/AppLayout.tsx index 2fcfb75..1f237d5 100644 --- a/management-ui/src/components/Layout/AppLayout.tsx +++ b/management-ui/src/components/Layout/AppLayout.tsx @@ -16,7 +16,6 @@ const PAGE_TITLES: Record = { '/routing-rules': 'nav.routing', '/networks': 'nav.networks', '/ip-addresses': 'nav.ipAddresses', - '/firewall-live': 'nav.firewallLive', '/cluster': 'nav.cluster', '/logs': 'nav.logs', '/license': 'nav.license', diff --git a/management-ui/src/components/Layout/Sidebar.tsx b/management-ui/src/components/Layout/Sidebar.tsx index bed2512..d8e3f30 100644 --- a/management-ui/src/components/Layout/Sidebar.tsx +++ b/management-ui/src/components/Layout/Sidebar.tsx @@ -7,7 +7,6 @@ import { ClusterOutlined, CrownOutlined, DashboardOutlined, - EyeOutlined, FileSearchOutlined, DatabaseOutlined, FireOutlined, @@ -63,7 +62,6 @@ const NAV: NavSection[] = [ labelKey: 'nav.section.security', items: [ { path: '/firewall', labelKey: 'nav.firewall', icon: }, - { path: '/firewall-live', labelKey: 'nav.firewallLive', icon: }, { path: '/vpn/wireguard', labelKey: 'nav.wireguard', icon: }, { path: '/forward-proxy', labelKey: 'nav.forwardProxy', icon: }, ], @@ -79,7 +77,7 @@ const NAV: NavSection[] = [ }, ] -const VERSION = '1.0.62' +const VERSION = '1.0.63' // Sidebar-Pattern 1:1 aus netcell-webpanel (enconf) übernommen: // -