182 Commits
Author SHA1 Message Date
samwaf 195a668c99 feat: add unified log export tasks 2026-10-30 11:10:00 +08:00
samwaf e35b3c6800 feat: per-entry enable switches for IP/URL black and white lists
#IJL0GB
2026-10-21 16:07:57 +08:00
samwaf ae1d61eb32 feat: support temporary client IP bans through custom rules
#IKHZMG
2026-10-21 11:20:44 +08:00
samwaf 69cb92b99d fix: reset health status when health check settings change
#IKM3X4
2026-10-19 13:58:11 +08:00
samwaf 99233a9b48 feat:manual health test in website editor
#IKJVS0
2026-10-14 15:09:24 +08:00
samwafgo 64aaab16fa Feat log shared (#1007)
* fix: make archived log shard connections concurrency-safe and recoverable

* fix: build the WebSocket online table before its consumers start

* perf: cap stored payloads, index log lookups by IP and rule, batch IP tag writes

* fix: keep archived log shards readable when the live table gains a column

* feat: merge IP tag history when their database location changes

* refactor: move request payloads out of the access log into their own table

* feat: scope log database export to a time range and selected tiers

* feat: add an IP watchlist that full-captures watched IPs

* feat: split log storage into security events, access rows, and payload tiers

* feat: roll up requests per actor and path into daily analysis tables

* fix:actor key by ip

* feat: add a source and path analysis page over the daily rollups

* feat: exclude chosen source IPs from web log recording

* docs: add upgrade notes for the analysis page and log IP exclusion

* feat: derive the log partition from the time range and look up identifiers across all of them

* feat: add time partition verbs and the period naming they share

* feat: cut log archives per month and expire them by dropping partitions

* feat: manage log partitions, and answer why an IP has no logs

* fix: read archived SQLite log shards read-only and choose tiers by data

* fix: count the live log shard from access_log instead of a stale snapshot

* fix:export db bug

* fix: default backend keep-alive pool (512/128/90s) to stop connect-close churn under load

* chore: gen_swagger.bat outputs json only, syncs doc site, runs route test

* feat: pin web frontend version and embed it into the binary
2026-10-10 14:39:06 +08:00
samwaf a222c70036 fix: resolve the management client IP when trusted proxy ranges cover the client itself
#994
2026-09-06 15:30:37 +08:00
samwaf c3b263b7f3 feat:website password session lifetime and online session management
#987
2026-09-06 07:32:04 +08:00
samwaf b3a998a815 feat:add port protocol
#955
2026-08-30 14:39:12 +08:00
samwaf 984e45804b feat: add local CA certificate management for the console 2026-08-26 09:28:26 +08:00
samwaf d44f956ff5 feat: negotiate a per-session key for console traffic 2026-08-25 19:50:33 +08:00
samwaf 50127ad8ea fix: remove the central-management feature 2026-08-24 13:39:05 +08:00
samwaf 77ffa81ef0 fix: validate batch task data source before reading 2026-08-24 09:05:42 +08:00
samwaf 24227923e8 feat: strengthen WAF detection coverage and gate the new inspection paths
Detection engine:
- Normalize request data (body, cookies, form and JSON values, request headers)
  before inspection instead of only the URL query string, so encoded variants
  are evaluated consistently.
- Extend XSS / SQLi / command-injection inspection to request bodies and to
  custom request headers; bodies and headers are scanned per value rather than
  as one blob to keep false positives low.
- Add a configurable body inspection mode (body_detect_mode: observe/block/off,
  default observe) so the new deep checks record rather than block until an
  operator confirms them, plus body_detect_field_exclude to skip fields that
  legitimately carry rich text.
- Keep false positives down on the new paths: skip structured values, require a
  corroborating signal before flagging body/header XSS, and leave dual-use
  keywords out of the fallback lists.
- Path traversal is now normalized and judged on whether it escapes the site
  root instead of matching literally; this also clears a long-standing false
  positive on legitimate in-site relative paths. Adds a sensitive-file list.
- Scanner detection now covers all request headers and known probe paths.

Plugins:
- Suspend plugin loading pending signing and admission work. The code path is
  retained but gated off, and shipped disabled by default.

Validated against a local test corpus and a 33k real-traffic benchmark:
detection improved across every category while the real-traffic false-positive
count stayed flat.
2026-08-23 11:29:22 +08:00
samwaf 89ae2bad67 feat: show the release version in upgrade notes 2026-08-22 18:31:41 +08:00
samwaf b3379d4150 fix:ssl export 2026-08-21 21:53:50 +08:00
samwafgo 40a2450ae6 Feat ip tag (#963)
* feat:group risk log rule tags into a searchable sidebar
2026-08-20 17:12:19 +08:00
samwafgo 1a8bf18ac9 fix:login bug (#961)
#938 #930 #897
2026-08-19 13:58:45 +08:00
samwafgo 095fa3f8de fix:meter_bug (#959)
#930
2026-08-19 08:40:51 +08:00
samwafgo a035e768c8 fix:proxy header (#958)
#956
2026-08-18 17:25:08 +08:00
samwaf b4cd2e3dad feat:ssl cert export path
#929
2026-08-16 10:58:42 +08:00
samwafgo d4583a63c7 Fix hostguard win bug (#944)
* fix:hostguard windows bug

* fix:hostguard windows ban debounce starvation
2026-08-14 10:47:39 +08:00
samwafgo 98b8803acd feat:add acme log (#943)
* feat:add acme log

* fix:acme bug

* fix:sslhttp_check config wording
2026-08-13 16:57:35 +08:00
samwaf 10b2fc2319 fix:ws concurrent write 2026-08-13 09:21:41 +08:00
samwaf 8bd938c3cb feat:threat intel IP exclusion list for false positives 2026-08-11 14:52:20 +08:00
samwaf 461e0eb991 fix:firewall bug 2026-08-10 17:08:53 +08:00
samwaf 44bf2da78f fix:HTTP3 feature not working, UDP port not being listened
#916
2026-08-10 09:55:43 +08:00
samwaf 86409183b5 feat:add host guard
#529 #368 #555
2026-08-07 10:38:10 +08:00
samwaf 4cb0500076 fix:threatip sync bug 2026-08-05 19:04:01 +08:00
samwaf 88c0cd0516 feat:ip group import
#914
2026-08-05 17:04:58 +08:00
samwaf f29df8f229 feat:sslcheck_config 2026-08-05 15:36:31 +08:00
samwaf 3ef6b4830b feat:unified access authentication
#408
2026-08-05 10:21:43 +08:00
samwaf 2a972b9120 feat:add ip group
#905 #195
2026-08-03 16:33:22 +08:00
samwaf 3a7dc1a6c8 feat:merging 2026-08-03 09:23:20 +08:00
samwaf c4456d237f fix: detect reverse-proxy loops, stop waf_req_uuid header growth, quiet URL_ENCODE logs 2026-07-20 11:23:32 +08:00
samwaf c1599ac526 fix:log tips 2026-07-15 14:37:00 +08:00
samwaf d5fc1901e8 feat:postgres
#855
2026-07-14 11:33:06 +08:00
samwaf c7cdbe397a feat:add AI rule generation, GPT settings, request timeout config and rule chain mode entry
#844
2026-07-13 16:43:23 +08:00
samwaf c74f23330e fix(security): recover downstream panics without leaking details; block second-order SQLi in retention cleanup 2026-07-06 15:13:19 +08:00
samwaf 98035772ca fix(security): SSRF +OTP rate limit+IP binding+account authorization 2026-07-06 08:48:14 +08:00
samwaf 8aae66efbe fix(security): validate trusted proxy before honoring client-IP headers on management port
- default GCONFIG_MANAGE_PROXY_HEADER to empty; add GCONFIG_MANAGE_TRUSTED_PROXIES
2026-07-03 22:35:59 +08:00
samwaf 4f8ed193ce fix:mysql field
#854
2026-07-02 13:59:35 +08:00
samwaf 512492e163 feat:manage ssl auto load
#815 #842 #843
2026-06-29 17:08:53 +08:00
samwaf 10174920d6 feat:add account rbac
#844
2026-06-29 14:05:09 +08:00
samwaf fa52a76fe1 fix: enforce db_file_size via 5-min sharding check and archive cleanup
#838
2026-06-26 11:33:10 +08:00
samwaf 4065bc3834 perf: tune SQLite pragmas and reclaim log space after deletion
#838
2026-06-26 11:32:43 +08:00
samwaf 39dffafab6 fix: fix the issue of MySql table partitioning not take effect
#IJULAW
2026-06-16 11:16:32 +08:00
samwaf 17ac5ebbd3 feat:add light ai model
#827
2026-06-15 17:00:35 +08:00
samwaf a8c35fe7a0 fix:healthy
#588
2026-05-08 15:04:32 +08:00
samwaf 1022806165 feat:db sqlite_dialect
#149 #466 #338
2026-05-08 09:31:47 +08:00