2026-10-06 - 2026-11-06

Overview

56 Active Pull Requests
87 Active Issues
Excluding merges, 0 authors have pushed 0 commits to main and 54 commits to all branches. On main, 0 files have changed and there have been 0 additions and 0 deletions.

2 Releases published by 1 user

Published v1.0.0-rc2 2026-10-27 21:04:59 +01:00

Published v1.0.0-rc1 2026-10-20 17:56:57 +02:00

53 Pull requests merged by 1 user

Merged #189 README: sections, compose examples, env var table (closes #188) 2026-11-06 00:06:25 +01:00

Merged #186 rproxy tests give a loaded host time before their limits run out (closes #185) 2026-11-05 23:17:17 +01:00

Merged #184 rproxy and servewaf replace the one-process smallwebwaf (closes #172, closes #165) 2026-11-05 13:15:06 +01:00

Merged #181 rproxy, the proxy in front of each app, asks servewaf and fails open (closes #171) 2026-11-05 06:32:09 +01:00

Merged #183 servewaf always answers rproxy well within its time limit (closes #182) 2026-11-05 05:48:50 +01:00

Merged #180 servewaf answers rproxy's question about each request and takes its report (closes #170) 2026-11-05 00:32:09 +01:00

Merged #179 Default request limits per minute, hour and day, sized for API use (closes #176) 2026-11-04 23:02:40 +01:00

Merged #164 Health check test uses addresses nothing can connect to (closes #158) 2026-10-27 21:00:17 +01:00

Merged #162 New defaults for the request and byte limits (closes #161) 2026-10-27 19:28:10 +01:00

Merged #160 next into main 2026-10-26 13:11:05 +01:00

Merged #159 SPEC, README and docs rewritten from scratch (closes #154, closes #155, closes #156) 2026-10-26 03:06:28 +01:00

Merged #40 Milestones 1 and 2: proxy with timeouts and size limits, rate limits, country lists and the image 2026-10-22 19:51:30 +02:00

Merged #152 README and SPEC name every offence that has a client checked (closes #151) 2026-10-20 17:46:17 +02:00

Merged #153 A ban in bans.json that ends at or before its start is refused, as other malformed entries are (closes #150) 2026-10-20 17:42:02 +02:00

Merged #142 smallwebwaf starts with SWWAF_STATE_DIR given as a file on a new volume (closes #137) 2026-10-20 16:54:35 +02:00

Merged #148 An answer from the app without a Content-Type reaches the client without one (closes #127) 2026-10-20 16:41:19 +02:00

Merged #145 README and SPEC say a client too slow to send its request line and headers may get an error answer (closes #138) 2026-10-20 16:32:09 +02:00

Merged #149 A path holding a character Go escapes reaches the app as the client sent it (closes #126) 2026-10-20 16:09:48 +02:00

Merged #147 An upgrade the app accepts under another protocol name is answered 502 (closes #131) 2026-10-20 15:36:31 +02:00

Merged #146 README and SPEC say what docker stop does to requests in progress when the app exits at once (closes #139) 2026-10-20 15:28:31 +02:00

Merged #144 A client that stops sending with little of its body left after the app has answered is timed out (closes #136) 2026-10-20 15:09:16 +02:00

Merged #134 script/gitea-requests, and the gitea refusals it confirms named in SPEC.md (closes #30) 2026-10-20 13:39:06 +02:00

Merged #143 A ban's earlier_bans counts a ban dropped after an admin's ban (closes #128) 2026-10-20 12:59:54 +02:00

Merged #135 A client that stops sending after the app answers is timed out 2026-10-20 11:47:15 +02:00

Merged #141 The image build rides out a brief 503 from Ubuntu's snapshot server (closes #132) 2026-10-20 11:38:00 +02:00

Merged #133 A request that waited for its lookup is counted when it goes on 2026-10-14 19:41:54 +02:00

Merged #125 Path rules and trap paths match the path decoded once too 2026-10-14 18:20:32 +02:00

Merged #122 Core Rule Set reads request bodies up to SWWAF_WAF_BODY_LIMIT 2026-10-08 12:59:14 +02:00

Merged #121 The Core Rule Set, run by Coraza, on each request's method, URL and headers 2026-10-08 09:37:14 +02:00

Merged #120 Tests that wait for a lookup answer give it an hour 2026-10-08 08:14:46 +02:00

Merged #118 Trap paths, and the error burst banning a client refused too often 2026-10-08 06:44:56 +02:00

Merged #117 CrowdSec decision list fetched, kept, and its clients banned until the decision ends 2026-10-08 05:15:07 +02:00

Merged #114 Ban notes name the reputation sources that listed the client 2026-10-08 03:08:01 +02:00

Merged #113 SWWAF_IPV6_GROUP_PREFIX, SWWAF_MAX_TRACKED_CLIENTS and SWWAF_LOG_LEVEL 2026-10-08 02:14:13 +02:00

Merged #111 AbuseIPDB scores for clients that committed an offence, within a daily budget 2026-10-07 22:47:07 +02:00

Merged #110 DNS blocklists asked in the background, verdicts kept 2026-10-07 21:09:52 +02:00

Merged #108 Blocklists and an AS percentage file fetched by URL 2026-10-07 19:09:41 +02:00

Merged #107 Anomaly thresholds: alerts for unusual traffic, nothing refused 2026-10-07 16:12:21 +02:00

Merged #103 Lower limits for listed AS numbers and countries 2026-10-07 14:22:02 +02:00

Merged #102 Byte limits per client over a minute, an hour and a day 2026-10-07 13:13:07 +02:00

Merged #100 make tidy, and make check failing on an untidy go.mod or go.sum 2026-10-07 10:30:47 +02:00

Merged #98 Look clients up in the IPinfo Lite file with SWWAF_LOOKUP_SOURCE=file 2026-10-07 10:04:11 +02:00

Merged #97 AS number and country looked up for every client 2026-10-07 08:46:02 +02:00

Merged #96 Instance name on process log lines and every metric 2026-10-07 06:48:09 +02:00

Merged #94 Alerts to Slack and ntfy, each destination with its own queue 2026-10-07 05:54:35 +02:00

Merged #93 Alerts to a JSON webhook, with a cooldown and an hourly summary 2026-10-07 04:21:24 +02:00

Merged #92 Admin endpoints for bans and clients on the single listener 2026-10-07 01:13:17 +02:00

Merged #89 Settings given as files: the _FILE form of every setting 2026-10-07 00:01:20 +02:00

Merged #88 Bans an admin makes or lifts: the admin cause, a reason, lifted bans kept 2026-10-06 23:09:53 +02:00

Merged #84 Send every log line to a syslog server as well 2026-10-06 22:02:36 +02:00

Merged #83 Rule files, and bans for a clear sign of attack 2026-10-06 20:38:36 +02:00

Merged #80 Leave SWWAF_RATE_LIMIT_EXEMPT_PATHS out of the request rate limits 2026-10-06 18:47:14 +02:00

Merged #82 Log the rest of the request log's fields 2026-10-06 17:26:24 +02:00

3 Pull requests proposed by 1 user

Proposed #163 next into main 2026-10-27 19:33:20 +01:00

Proposed #187 deploy/gitea: Gitea behind traefik, rproxy and servewaf, with its test (closes #178) 2026-11-05 14:00:53 +01:00

Proposed #191 Install the image's Ubuntu packages from the normal mirrors (closes #190) 2026-11-05 21:27:34 +01:00

76 Issues closed from 2 users

Closed #188 README: rewrite on Fable into sections, with compose examples and an env var table 2026-11-06 00:06:25 +01:00

Closed #185 rproxy test of an answer cut off after its start fails under load 2026-11-05 23:17:17 +01:00

Closed #172 rproxy and servewaf replace the one-process smallwebwaf 2026-11-05 13:15:06 +01:00

Closed #165 Tiny per-app reverse proxy that asks a separate smallwebwaf whether to pass each request 2026-11-05 13:15:06 +01:00

Closed #171 rproxy: the proxy in front of each app that asks servewaf and fails open 2026-11-05 06:32:09 +01:00

Closed #182 servewaf always answers rproxy well within its time limit 2026-11-05 05:48:51 +01:00

Closed #170 servewaf: answer rproxy's question about each request, and take its report 2026-11-05 00:32:10 +01:00

Closed #176 Default request limits per minute, hour and day, sized for API use 2026-11-04 23:02:41 +01:00

Closed #177 Secrets in query strings never reach the log, ban notes or alerts 2026-11-04 21:09:24 +01:00

Closed #158 TestHealthCheck fails when another process takes the closed test server's port 2026-10-27 21:00:17 +01:00

Closed #161 defaults are insane 2026-10-27 19:28:10 +01:00

Closed #155 Rewrite README.md from scratch so a newcomer can follow it 2026-10-26 03:06:30 +01:00

Closed #154 use fable on xhigh to rewrite the readme for comprehensibility 2026-10-26 03:06:30 +01:00

Closed #156 Rewrite SPEC.md from scratch, short and plain 2026-10-26 03:06:29 +01:00

Closed #116 Body inspection by the Core Rule Set (SWWAF_WAF_BODY_LIMIT) 2026-10-22 19:51:37 +02:00

Closed #101 Anomaly thresholds: alerts for unusual traffic, nothing refused 2026-10-22 19:51:36 +02:00

Closed #115 Trap paths and the error burst 2026-10-22 19:51:36 +02:00

Closed #112 SWWAF_IPV6_GROUP_PREFIX, SWWAF_MAX_TRACKED_CLIENTS and SWWAF_LOG_LEVEL 2026-10-22 19:51:36 +02:00

Closed #109 Ban notes name the reputation sources that listed the client 2026-10-22 19:51:36 +02:00

Closed #106 Reputation: the CrowdSec decision feed 2026-10-22 19:51:36 +02:00

Closed #105 Reputation: AbuseIPDB 2026-10-22 19:51:36 +02:00

Closed #104 Reputation: DNS blocklists 2026-10-22 19:51:36 +02:00

Closed #29 Reputation: downloaded blocklists 2026-10-22 19:51:36 +02:00

Closed #21 Lower limits for listed AS numbers and countries 2026-10-22 19:51:36 +02:00

Closed #25 The Core Rule Set, run by Coraza 2026-10-22 19:51:36 +02:00

Closed #95 AS number and country looked up for every client 2026-10-22 19:51:35 +02:00

Closed #22 The IPinfo Lite file as a second lookup source 2026-10-22 19:51:35 +02:00

Closed #20 Byte limits per client 2026-10-22 19:51:35 +02:00

Closed #24 Rule files 2026-10-22 19:51:35 +02:00

Closed #26 Alerts: the queue and the JSON webhook 2026-10-22 19:51:35 +02:00

Closed #27 Admin listener 2026-10-22 19:51:35 +02:00

Closed #99 make tidy, and make check failing on an untidy go.mod or go.sum 2026-10-22 19:51:35 +02:00

Closed #91 SWWAF_INSTANCE_NAME on process log lines and metrics 2026-10-22 19:51:35 +02:00

Closed #90 Alerts to Slack and ntfy 2026-10-22 19:51:35 +02:00

Closed #86 Bans an admin makes or lifts: the admin cause, a reason, lifted bans kept 2026-10-22 19:51:35 +02:00

Closed #87 Settings given as files: the _FILE form of every setting 2026-10-22 19:51:35 +02:00

Closed #28 Remote log sending 2026-10-22 19:51:35 +02:00

Closed #23 Metrics endpoint 2026-10-22 19:51:34 +02:00

Closed #18 Bans: the ban model of issue 2, with the notes of issue 4 2026-10-22 19:51:34 +02:00

Closed #68 State files: take in an admin's edits while running 2026-10-22 19:51:34 +02:00

Closed #77 Paths the request rate limits do not count (SWWAF_RATE_LIMIT_EXEMPT_PATHS) 2026-10-22 19:51:34 +02:00

Closed #79 The rest of the request log's fields 2026-10-22 19:51:34 +02:00

Closed #17 Keep state across restarts: GeoJS answers and rate counters on disk 2026-10-22 19:51:34 +02:00

Closed #43 Milestone 2, part 1: per-IP rate limits 2026-10-22 19:51:33 +02:00

Closed #44 Milestone 2, part 2: country allow and deny lists, with GeoJS lookup 2026-10-22 19:51:33 +02:00

Closed #70 The header size and the idle time as settings 2026-10-22 19:51:33 +02:00

Closed #45 Milestone 2, part 3: the image apps build FROM, with its health check 2026-10-22 19:51:33 +02:00

Closed #19 Network lists: always allowed, exempt from limits, always refused 2026-10-22 19:51:33 +02:00

Closed #65 Re-vendor the canonical files from sneak/prompts at dd4027b 2026-10-22 19:51:33 +02:00

Closed #58 Image build warnings: useradd uid range, a Perl warning while installing, runsvinit at stop 2026-10-22 19:51:33 +02:00

Closed #15 LICENSE: sneak picks the licence 2026-10-22 19:51:32 +02:00

Closed #33 Deploy model: points the spec leaves open, from the review of issue 12 2026-10-22 19:51:32 +02:00

Closed #36 Spec after the milestones: points left open, from the review of issue 16 2026-10-22 19:51:32 +02:00

Closed #38 Ubuntu and nixpkgs image: points left open, from the review of issue 34 2026-10-22 19:51:32 +02:00

Closed #13 Milestone 1: pass-through proxy with read and write timeouts, size limits and a request log 2026-10-22 19:51:32 +02:00

Closed #151 The README's AbuseIPDB section leaves out three of the offences that have a client checked 2026-10-20 17:46:18 +02:00

Closed #150 A ban edited into bans.json with expires before start makes the netblock's next limit ban already expired 2026-10-20 17:42:03 +02:00

Closed #56 make test runs past the 20-second target 2026-10-20 17:08:09 +02:00

Closed #53 Proxy timing tests can fail when the test process is held up for 300 ms 2026-10-20 17:08:08 +02:00

Closed #49 TestRequestTimeouts can answer 504 instead of 408 when the client stops sending 2026-10-20 17:08:08 +02:00

Closed #119 TestBanNotes can fail when the test process is held up past the lookup timeout 2026-10-20 17:08:08 +02:00

Closed #85 Default rule file: a probe sent percent-encoded gets past its path rules 2026-10-20 17:08:07 +02:00

Closed #137 SWWAF_STATE_DIR given as a file: the run script gives the default directory to the smallwebwaf user, and the start fails 2026-10-20 16:54:35 +02:00

Closed #127 An answer from the app without a Content-Type can reach the client with one Go guessed 2026-10-20 16:41:20 +02:00

Closed #138 A client too slow to send its request line is answered 400, not left without an answer 2026-10-20 16:32:09 +02:00

Closed #126 A path holding a character Go escapes reaches the app re-encoded, with an encoded slash turned into a slash 2026-10-20 16:09:48 +02:00

Closed #131 An upgrade the app accepts under another protocol name is answered 200 with an empty body 2026-10-20 15:36:31 +02:00

Closed #139 docker stop: requests in progress get 502 at once when the app exits on SIGTERM, not five seconds to finish 2026-10-20 15:28:32 +02:00

Closed #136 A client that stops sending with little of its body left after the app has answered is never timed out 2026-10-20 15:09:17 +02:00

Closed #30 Gitea requests the Core Rule Set may refuse at the defaults, to be checked against a running gitea when milestone 1 is built 2026-10-20 13:39:06 +02:00

Closed #128 A ban's earlier_bans undercounts once a ban after an admin's ban is dropped 2026-10-20 12:59:56 +02:00

Closed #130 A client that stops sending its body after the app has answered is never timed out 2026-10-20 11:47:16 +02:00

Closed #132 The image build fails on a brief 503 from Ubuntu's snapshot server: apt gets no retries 2026-10-20 11:38:00 +02:00

Closed #123 Run the image as an operator would, in front of a small test backend, and file the defects found 2026-10-14 20:24:55 +02:00

Closed #129 Requests waiting for a client's first lookup are counted at the time they arrived, and one can wipe another's count 2026-10-14 19:41:54 +02:00

Closed #124 Read the request filtering, rate limiting and proxy code for correctness, and file the defects found 2026-10-14 18:18:48 +02:00

56 Issues created by 2 users

Opened #85 Default rule file: a probe sent percent-encoded gets past its path rules 2026-10-06 18:16:27 +02:00

Opened #86 Bans an admin makes or lifts: the admin cause, a reason, lifted bans kept 2026-10-06 20:40:39 +02:00

Opened #87 Settings given as files: the _FILE form of every setting 2026-10-06 20:40:53 +02:00

Opened #90 Alerts to Slack and ntfy 2026-10-07 00:02:11 +02:00

Opened #91 SWWAF_INSTANCE_NAME on process log lines and metrics 2026-10-07 00:02:29 +02:00

Opened #95 AS number and country looked up for every client 2026-10-07 05:55:25 +02:00

Opened #99 make tidy, and make check failing on an untidy go.mod or go.sum 2026-10-07 09:39:54 +02:00

Opened #101 Anomaly thresholds: alerts for unusual traffic, nothing refused 2026-10-07 11:01:23 +02:00

Opened #104 Reputation: DNS blocklists 2026-10-07 14:23:10 +02:00

Opened #105 Reputation: AbuseIPDB 2026-10-07 14:23:11 +02:00

Opened #106 Reputation: the CrowdSec decision feed 2026-10-07 14:23:11 +02:00

Opened #109 Ban notes name the reputation sources that listed the client 2026-10-07 17:13:33 +02:00

Opened #112 SWWAF_IPV6_GROUP_PREFIX, SWWAF_MAX_TRACKED_CLIENTS and SWWAF_LOG_LEVEL 2026-10-07 22:47:30 +02:00

Opened #115 Trap paths and the error burst 2026-10-08 03:08:34 +02:00

Opened #116 Body inspection by the Core Rule Set (SWWAF_WAF_BODY_LIMIT) 2026-10-08 03:38:47 +02:00

Opened #119 TestBanNotes can fail when the test process is held up past the lookup timeout 2026-10-08 06:51:54 +02:00

Opened #123 Run the image as an operator would, in front of a small test backend, and file the defects found 2026-10-14 17:26:42 +02:00

Opened #124 Read the request filtering, rate limiting and proxy code for correctness, and file the defects found 2026-10-14 17:26:43 +02:00

Opened #126 A path holding a character Go escapes reaches the app re-encoded, with an encoded slash turned into a slash 2026-10-14 18:13:36 +02:00

Opened #127 An answer from the app without a Content-Type can reach the client with one Go guessed 2026-10-14 18:13:37 +02:00

Opened #128 A ban's earlier_bans undercounts once a ban after an admin's ban is dropped 2026-10-14 18:13:37 +02:00

Opened #129 Requests waiting for a client's first lookup are counted at the time they arrived, and one can wipe another's count 2026-10-14 18:13:37 +02:00

Opened #130 A client that stops sending its body after the app has answered is never timed out 2026-10-14 18:13:37 +02:00

Opened #131 An upgrade the app accepts under another protocol name is answered 200 with an empty body 2026-10-14 18:13:37 +02:00

Opened #132 The image build fails on a brief 503 from Ubuntu's snapshot server: apt gets no retries 2026-10-14 18:17:34 +02:00

Opened #136 A client that stops sending with little of its body left after the app has answered is never timed out 2026-10-14 19:34:16 +02:00

Opened #139 docker stop: requests in progress get 502 at once when the app exits on SIGTERM, not five seconds to finish 2026-10-14 20:11:24 +02:00

Opened #137 SWWAF_STATE_DIR given as a file: the run script gives the default directory to the smallwebwaf user, and the start fails 2026-10-14 20:11:24 +02:00

Opened #138 A client too slow to send its request line is answered 400, not left without an answer 2026-10-14 20:11:24 +02:00

Opened #140 1.0: what stands between next and a release candidate 2026-10-14 20:25:08 +02:00

Opened #150 A ban edited into bans.json with expires before start makes the netblock's next limit ban already expired 2026-10-20 17:18:50 +02:00

Opened #151 The README's AbuseIPDB section leaves out three of the offences that have a client checked 2026-10-20 17:19:00 +02:00

Opened #154 use fable on xhigh to rewrite the readme for comprehensibility 2026-10-22 19:55:57 +02:00

Opened #155 Rewrite README.md from scratch so a newcomer can follow it 2026-10-22 20:00:34 +02:00

Opened #156 Rewrite SPEC.md from scratch, short and plain 2026-10-22 20:04:07 +02:00

Opened #158 TestHealthCheck fails when another process takes the closed test server's port 2026-10-22 20:38:43 +02:00

Opened #161 defaults are insane 2026-10-26 13:13:34 +01:00

Opened #165 Tiny per-app reverse proxy that asks a separate smallwebwaf whether to pass each request 2026-10-31 18:23:56 +01:00

Opened #166 Does today's one-process smallwebwaf stay beside rproxy and servewaf? 2026-11-02 00:12:10 +01:00

Opened #167 Does servewaf read request bodies? 2026-11-02 00:12:10 +01:00

Opened #168 What do the sites behind one servewaf share? 2026-11-02 00:12:10 +01:00

Opened #169 Run smallwebwaf in front of Gitea: the split built, defaults for API use, tokens out of the log 2026-11-04 19:58:49 +01:00

Opened #170 servewaf: answer rproxy's question about each request, and take its report 2026-11-04 20:09:56 +01:00

Opened #171 rproxy: the proxy in front of each app that asks servewaf and fails open 2026-11-04 20:09:56 +01:00

Opened #172 rproxy and servewaf replace the one-process smallwebwaf 2026-11-04 20:09:56 +01:00

Opened #173 Rename internal/proxy to internal/servewaf 2026-11-04 20:09:56 +01:00

Opened #174 Live request viewer in servewaf 2026-11-04 20:09:56 +01:00

Opened #175 Request tags, with throttling and blocking per tag 2026-11-04 20:09:56 +01:00

Opened #176 Default request limits per minute, hour and day, sized for API use 2026-11-04 20:09:56 +01:00

Opened #177 Secrets in query strings never reach the log, ban notes or alerts 2026-11-04 20:09:56 +01:00

Opened #178 deploy/gitea: Gitea behind traefik, rproxy and servewaf, with its test 2026-11-04 20:09:56 +01:00

Opened #182 servewaf always answers rproxy well within its time limit 2026-11-05 02:49:15 +01:00

Opened #185 rproxy test of an answer cut off after its start fails under load 2026-11-05 13:18:52 +01:00

Opened #188 README: rewrite on Fable into sections, with compose examples and an env var table 2026-11-05 20:47:19 +01:00

Opened #190 Install the image's Ubuntu packages from the normal mirrors, not a dated snapshot 2026-11-05 20:58:30 +01:00

Opened #192 audit the symbol names for idiocy 2026-11-06 04:40:58 +01:00