feat(dns): Resolver stats tab + NAT rule move buttons

- GET /dns/stats via unbound-control stats_noreset: total queries,
  cache hits/miss, hit-rate progress bar, recursive replies, prefetch,
  rate-limited, unwanted, RRset/msg cache memory
- DNS page: new "Resolver stats" tab with 30s auto-refresh
- NAT rules: ↑↓ move buttons (same pattern as firewall rules 1.1.102)

v1.1.103

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Debian
2026-05-25 13:20:07 +02:00
parent 844f9ddc83
commit f6615fd27d
9 changed files with 255 additions and 10 deletions

View File

@@ -883,7 +883,23 @@
"dns": {
"title": "DNS (Unbound)",
"intro": "Unbound-Resolver auf :53. Lokale Zonen (authoritativ aus DNS-Records) und Forward-Zonen (per stub-zone weiter zu fremden Resolvern). Default-Forwarder für alles andere.",
"tabs": { "zones": "Zonen", "settings": "Resolver-Settings" },
"tabs": { "zones": "Zonen", "settings": "Resolver-Settings", "stats": "Resolver-Stats" },
"statsCard": {
"title": "Resolver-Statistiken (unbound-control stats_noreset)",
"totalQueries": "Abfragen gesamt",
"cacheHits": "Cache-Treffer",
"cacheMiss": "Cache-Miss",
"cacheHitPct": "Cache-Trefferrate",
"recursiveReplies": "Rekursive Antworten",
"prefetch": "Prefetch",
"rateLimited": "Rate-Limited",
"rrsetCacheBytes": "RRset-Cache",
"msgCacheBytes": "Msg-Cache",
"tcpUsage": "TCP-Verbindungen",
"unwanted": "Unerwünschte Anfragen",
"empty": "Keine Statistiken — läuft unbound?",
"sinceRestart": "Seit letztem Neustart"
},
"zone": {
"name": "Zone-Name",
"nameExtra": "FQDN ohne führenden/abschließenden Punkt — z.B. internal.netcell-it.de",

View File

@@ -883,7 +883,23 @@
"dns": {
"title": "DNS (Unbound)",
"intro": "Unbound resolver on :53. Local zones (authoritative from DNS records) and forward zones (stub-zone to remote resolvers). Default forwarders catch everything else.",
"tabs": { "zones": "Zones", "settings": "Resolver settings" },
"tabs": { "zones": "Zones", "settings": "Resolver settings", "stats": "Resolver stats" },
"statsCard": {
"title": "Resolver statistics (unbound-control stats_noreset)",
"totalQueries": "Total queries",
"cacheHits": "Cache hits",
"cacheMiss": "Cache miss",
"cacheHitPct": "Cache hit rate",
"recursiveReplies": "Recursive replies",
"prefetch": "Prefetch",
"rateLimited": "Rate-limited",
"rrsetCacheBytes": "RRset cache",
"msgCacheBytes": "Msg cache",
"tcpUsage": "TCP connections",
"unwanted": "Unwanted queries",
"empty": "No stats available — is unbound running?",
"sinceRestart": "Since last restart"
},
"zone": {
"name": "Zone name",
"nameExtra": "FQDN without leading/trailing dot — e.g. internal.netcell-it.de",