Commit graph

8 commits

Author SHA1 Message Date
8d9b1c9302 Add service management, harden the purge server, and modernize the build.
Server:
- Add a --cache-path allowlist so a server can be limited to the caches it
  is meant to purge, defaulting to any path as before.
- Set socket permissions explicitly (--socket-mode, default 0660) instead of
  inheriting the service manager's umask, which left the socket unreachable.
- Refuse to remove a socket another instance is still serving.
- Read keys both raw and decoded, so keys nginx stored with escapes and keys
  a caller escaped by hand both purge.
- Add an exact= parameter for literal keys containing glob punctuation.
- Report purge failures as 500 rather than 502, and send error bodies through
  http.Error so a failure is not reported as a successful purge.
- Graceful shutdown with systemd readiness notification.

Purge:
- Group purge arguments into PurgeRequest and report the number of entries
  removed.
- Compile exclude globs once, and fail the purge when one is invalid rather
  than purging the keys it was meant to keep.
- Cap header scanning and tolerate entries nginx evicts mid-walk.
- Switch to filepath.WalkDir to avoid an Lstat per cache file.

New:
- service command to install, start, stop, and remove the system service.
- service install takes --cache-path, writing the allowlist into the unit it
  installs, so an installed service is restricted from its first start.
- Makefile, VERSION, and build identifiers stamped via ldflags.
- Tests for the server handler and the service command.

Build:
- Update to Go 1.25, kong v1, GoReleaser v2, and current GitHub Actions.
- Add vet and test steps to CI.
- Rename purgeCmd.go/serverCmd.go to Go's file naming convention.

Bump version to 0.2.0.
2026-08-12 14:58:12 -05:00
44cd195109 Fix glob in exclude check. 2024-08-09 13:17:57 -05:00
810cebadd9 Found that /var/run is deprecated, should use /run. Also added new example usage. 2024-08-01 11:36:53 -05:00
761bd3a6f9 Didn't need pid file. 2024-08-01 11:16:46 -05:00
4ab5a7fd1d Move to log instead of fmt.Print 2024-08-01 09:01:40 -05:00
cc9e7d4f22 Fix lack of exclude check, add usage examples, update examples to use server_name instead of host. 2024-08-01 08:08:51 -05:00
a1661a4122 Add help output 2024-08-01 02:16:23 -05:00
b5d63d9ea6 First commit 2024-08-01 02:09:30 -05:00