Take in an admin's edits of the state files while running (closes #68)
check / check (push) Successful in 3m28s

smallwebwaf watches SWWAF_STATE_DIR with fsnotify and takes in an edit of
bans.json, clients.json or lookups.json as soon as it is saved, in place
of what it held. It tells its own writes from an admin's by the SHA-256
of what it last read or wrote, and each write takes in an edit made since
first. An edit that does not parse is renamed to <name>.bad at the
file's next write, which writes the file again from memory and logs the
file and where the error is. README.md says how to add and lift a ban.

Judgement call: a broken edit is set aside at the file's next write, not
when seen, since an editor's file can be read half written.
Judgement call: a state file that cannot be read is not written over.

Model: opus-5-5
This commit is contained in:
2026-10-06 07:44:48 +00:00
parent 68f687cb0c
commit 55d403aa89
12 changed files with 814 additions and 154 deletions
+6 -1
View File
@@ -2,4 +2,9 @@ module sneak.berlin/go/smallwebwaf
go 1.26.0
require github.com/hashicorp/golang-lru/v2 v2.0.7
require (
github.com/fsnotify/fsnotify v1.10.1
github.com/hashicorp/golang-lru/v2 v2.0.7
)
require golang.org/x/sys v0.13.0 // indirect