-
feat(gateway): connection tracking + client blocking (RAM-only stats, replicated deny list)
Release / version (push) Canceled after 0sRelease / frontend (push) Canceled after 0sRelease / linux (amd64) (push) Canceled after 0sRelease / linux (arm64) (push) Canceled after 0sRelease / windows (push) Canceled after 0sRelease / macos (push) Canceled after 0sRelease / release (push) Canceled after 0sBuild and Push Docker Image / build-and-push (push) Canceled after 0sreleased this
2026-08-30 22:29:16 +03:00 | 86 commits to main since this releaseConnections card on the Gateway tab: the managed Traefik now writes a JSON
access log (/traefik/logs/access.log) that the gateway node tails into
bounded in-RAM stats — request ring (600), per-IP counters (cap 4096, evicted),
minute/hour rate buckets, suspicion score (scanner paths / error ratio /
no-route probes / host spraying). Nothing lands in the DB; the log truncates
itself at 16MB. GET /gateway/connections serves it, other nodes proxy to the
gateway node's dashboard URL (loop-guarded), external mode can opt in via
NODE_STATS_GATEWAY_ACCESSLOG.Blocked clients: Raft-replicated gateway_blocks (CmdGatewayBlockUpsert/Delete,
TTL, expired swept by the gateway node) render as a top-priority ClientIP()
router → 403 on both entrypoints (+ TCP blackhole for passthrough SNI), so a
block applies in ~1s with node-stats off the request path. Guard rails: ranges
wider than /8 rejected, blocking your own IP needs force. UI: live feed, top
clients with one-click block (optional /24), block list with TTL/unblock.Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Downloads