Releases: vmkteam/wafsrv
Releases · vmkteam/wafsrv
Release list
v0.0.5
What's changed
- Replace the embedded dashboard config builder with the external Config Builder — the dashboard footer link now opens it with the running config pre-loaded via a base64url URL hash
- Add
GET /config.tomlon the management port: exports the running config as TOML with secrets blanked (Captcha.Secret/SecretKey, signing secrets, webhook URLs) - Restore per-country
captcha/logactions:IP.Countries.Captchabumps WAFScore by +5 and defers to the decision engine,IP.Countries.Loglogs only; priority: block > captcha > log - Re-raise
http.ErrAbortHandlerin access-log panic recovery — client disconnects during proxying abort quietly instead of being logged as panics (metrics and access log still recorded)
Upgrade notes
- The embedded
/builder/page on the management port is removed — use the external Config Builder (the dashboard footer link opens it with your config)
Full changelog: v0.0.4...v0.0.5
v0.0.4
What's changed
- Add
Proxy.PreserveHost(*bool, defaulttrue): forward the original clientHostto the backend and advertise it viaX-Forwarded-Host; setfalseto rewriteHostto the backend address (previous default behavior) - Migrate captcha status code from
499to403and add theX-WAF-Actionresponse header (captcha|block|throttle) to disambiguate challenge vs denial - Require
Captcha.Secret(≥32 bytes) whenCaptcha.Provideris set — fixes forgeablewaf_passcookies from the hardcoded default secret; warn at startup when captcha runs onmemorystorage (multi-instance-unsafe) - Emit
Retry-Afteron block, soft block, blacklist and 429; addDecision.BlockRetryAfterandRateLimit.RetryAfter(60s default) - Metrics polish: add
wafsrv_attack_mode_activegauge, renameattack_score_boost_applied_total→attack_score_boost_total, clarify help text and proxyno_backendstarget label - Simplify
deployments/DockerfileENTRYPOINT — config path and log format are now supplied at deploy time
⚠️ Upgrade notes
- Host handling default flips: backends now receive the original client
Hostby default. SetProxy.PreserveHost = falseto keep the old rewrite-to-backend behavior. Captcha.Secretis now required when a captcha provider is configured (openssl rand -hex 32, identical on every instance behind a load balancer).- Dockerfile ENTRYPOINT is bare: the orchestrator must pass
-config/WAFSRV_CONFIGand-json.
Full changelog: v0.0.3...v0.0.4
v0.0.3
What's changed
- Under Attack Mode:
Decision.AttackScoreBoostboosts request score andTrafficRule.AttackOnlygates rules viawaf.AttackState; hot-path cost tightened with atomic snapshot reads - Surface
AttackOnlyandAdaptiveSection.ScoreBoostin dashboard and config builder UI with TOML round-tripping - Add e2e test for AttackOnly rule gating, metrics unit tests, and replace concrete hostnames with
example.comacross code, templates and samples
Full changelog: v0.0.2...v0.0.3
v0.0.2
What's changed
- Add MCP mode for JSON-RPC
tools/call(per-tool rate limits, whitelist, metrics) and per-URL rate limit rules (HTTP path/method/host matching) - Differentiate proxy error status codes: 503+Retry-After for circuit-breaker open and empty backend pool, 502 for real upstream errors, 500 for panic recovery; new
wafsrv_proxy_errors_total{target, reason}metric - Surface
URLRulesandProxy.NoBackendRetryAfterin the dashboard config view and config builder UI; alerter cleanup and nil-interface fix
Full changelog: v0.0.1...v0.0.2