Commit Graph

  • fdabf4974b Health check test uses addresses nothing can connect to (closes #158) v1.0.0-rc2 next clawbot 2026-10-27 21:00:16 +01:00
  • a9dc59546b New defaults for the request and byte limits (closes #161) clawbot 2026-10-27 19:28:09 +01:00
  • 1bdf66cd21 Merge pull request 'next into main' (#160) from next into main main sneak 2026-10-26 13:11:04 +01:00
  • 2ac2b671f6 Merge branch 'main' into next sneak 2026-10-26 13:10:59 +01:00
  • f408f42b28 SPEC, README and docs rewritten from scratch (closes #154, closes #155, closes #156) clawbot 2026-10-26 03:06:28 +01:00
  • 1dbe17e594 README rewritten from scratch so a newcomer can follow it (closes #154, closes #155) readme-rewrite-155 sneak 2026-10-22 20:03:29 +00:00
  • acceecc7f8 Merge pull request 'Milestones 1 and 2: proxy with timeouts and size limits, rate limits, country lists and the image' (#40) from next into main sneak 2026-10-22 19:51:30 +02:00
  • eafcc3fd73 README and SPEC name every offence that has a client checked (closes #151) v1.0.0-rc1 clawbot 2026-10-20 17:46:16 +02:00
  • da0c182a47 A ban in bans.json that ends at or before its start is refused, as other malformed entries are (closes #150) clawbot 2026-10-20 17:42:01 +02:00
  • 4cc492004a smallwebwaf starts with SWWAF_STATE_DIR given as a file on a new volume (closes #137) clawbot 2026-10-20 16:54:34 +02:00
  • 69178da59a An answer from the app without a Content-Type reaches the client without one (closes #127) clawbot 2026-10-20 16:41:18 +02:00
  • d1d21a0469 README and SPEC say a client too slow to send its request line and headers may get an error answer (closes #138) clawbot 2026-10-20 16:32:08 +02:00
  • 7acc6ae153 A path holding a character Go escapes reaches the app as the client sent it (closes #126) clawbot 2026-10-20 16:09:46 +02:00
  • 75f28ee0b5 An upgrade the app accepts under another protocol name is answered 502 (closes #131) clawbot 2026-10-20 15:36:30 +02:00
  • b0d54a2c51 README and SPEC say what docker stop does to requests in progress when the app exits at once (closes #139) clawbot 2026-10-20 15:28:31 +02:00
  • d9f7344ae6 A client that stops sending with little of its body left after the app has answered is timed out (closes #136) clawbot 2026-10-20 15:09:16 +02:00
  • 60c49a6740 script/gitea-requests, and the gitea refusals it confirms named in SPEC.md (closes #30) clawbot 2026-10-20 13:39:05 +02:00
  • 47aac0235d A ban's earlier_bans counts a ban dropped after an admin's ban (closes #128) clawbot 2026-10-20 12:59:52 +02:00
  • 6327f7f9c5 A client that stops sending after the app answers is timed out (closes #130) clawbot 2026-10-20 11:47:14 +02:00
  • 157cdc23f3 The image build rides out a brief 503 from Ubuntu's snapshot server (closes #132) clawbot 2026-10-20 11:37:58 +02:00
  • 7a9471df28 A request that waited for its lookup is counted when it goes on (closes #129) clawbot 2026-10-14 19:41:54 +02:00
  • 27f0007b54 Path rules and trap paths match the path decoded once too (closes #85) clawbot 2026-10-14 18:20:31 +02:00
  • 6fcbda6ece Core Rule Set reads request bodies up to SWWAF_WAF_BODY_LIMIT (closes #116) clawbot 2026-10-08 12:59:13 +02:00
  • 80f4c2cc61 The Core Rule Set, run by Coraza, on each request's method, URL and headers (closes #25) clawbot 2026-10-08 09:37:13 +02:00
  • e81a7f0ca2 Tests that need a lookup answer give it an hour (closes #119) clawbot 2026-10-08 08:14:45 +02:00
  • 54779f08de Trap paths, and the error burst banning a client refused too often (closes #115) clawbot 2026-10-08 06:44:55 +02:00
  • 5f3fb48809 CrowdSec decision list fetched, kept, and its clients banned until the decision ends (closes #106) clawbot 2026-10-08 05:15:06 +02:00
  • 04e66d2069 Ban notes name the reputation sources that listed the client (closes #109) clawbot 2026-10-08 03:08:01 +02:00
  • a6634454cd Read SWWAF_IPV6_GROUP_PREFIX, SWWAF_MAX_TRACKED_CLIENTS and SWWAF_LOG_LEVEL (closes #112) clawbot 2026-10-08 02:14:12 +02:00
  • ca787985f8 AbuseIPDB scores for clients that committed an offence, within a daily budget (closes #105) clawbot 2026-10-07 22:47:06 +02:00
  • 0b0f207423 DNS blocklists asked in the background, verdicts kept (closes #104) clawbot 2026-10-07 21:09:51 +02:00
  • 2b8c98ba1f Blocklists and an AS percentage file fetched by URL (closes #29) clawbot 2026-10-07 19:09:41 +02:00
  • 82e20e0cb5 Anomaly thresholds: alerts for unusual traffic, nothing refused (closes #101) clawbot 2026-10-07 16:12:19 +02:00
  • 2421cdc273 Lower limits for listed AS numbers and countries (closes #21) clawbot 2026-10-07 14:22:01 +02:00
  • f35e3ddfe8 Byte limits per client over a minute, an hour and a day (closes #20) clawbot 2026-10-07 13:13:06 +02:00
  • 0dc26041dc make tidy, and make check failing on an untidy go.mod or go.sum (closes #99) clawbot 2026-10-07 10:30:46 +02:00
  • c80753c56e Look clients up in the IPinfo Lite file with SWWAF_LOOKUP_SOURCE=file (closes #22) clawbot 2026-10-07 10:04:10 +02:00
  • 26f4abef7f AS number and country looked up for every client (closes #95) clawbot 2026-10-07 08:46:01 +02:00
  • f35cbd01cf Instance name on process log lines and every metric (closes #91) clawbot 2026-10-07 06:48:09 +02:00
  • 70a8ea1b92 Alerts to Slack and ntfy, each destination with its own queue (closes #90) clawbot 2026-10-07 05:54:34 +02:00
  • 432097ee3f Alerts to a JSON webhook, with a cooldown and an hourly summary (closes #26) clawbot 2026-10-07 04:21:24 +02:00
  • 5d6f6ffaf9 Admin endpoints for bans and clients on the single listener (closes #27) clawbot 2026-10-07 01:13:16 +02:00
  • bff65f4e2f Settings given as files: the _FILE form of every setting (closes #87) clawbot 2026-10-07 00:01:19 +02:00
  • ee9ba08a8a Bans an admin makes or lifts: the admin cause, a reason, lifted bans kept (closes #86) clawbot 2026-10-06 23:09:52 +02:00
  • 0797e5def2 Send every log line to a syslog server as well (closes #28) clawbot 2026-10-06 22:02:36 +02:00
  • e77dfb6891 Rule files, and bans for a clear sign of attack (closes #24) clawbot 2026-10-06 20:38:35 +02:00
  • 74bdc6a449 Leave SWWAF_RATE_LIMIT_EXEMPT_PATHS out of the request rate limits (closes #77) clawbot 2026-10-06 18:47:13 +02:00
  • 808e69f442 Log the rest of the request log's fields (closes #79) clawbot 2026-10-06 17:26:21 +02:00
  • 6ec52e5b87 Take in an admin's edits of the state files while running (closes #68) clawbot 2026-10-06 14:18:13 +02:00
  • cff385af41 Observe mode: log what would be refused, refuse nothing (closes #78) clawbot 2026-10-06 13:04:43 +02:00
  • 234c5eac60 Serve Prometheus metrics behind SWWAF_METRICS_TOKEN (closes #23) clawbot 2026-10-06 11:40:27 +02:00
  • 68f687cb0c Run the GeoJS lookup tests on a clock the test controls (closes #73) clawbot 2026-10-06 09:12:50 +02:00
  • df2c5042d2 Keep the bans, the clients and GeoJS's answers in state files (closes #17) clawbot 2026-10-06 08:31:52 +02:00
  • 73ca94f850 Ban the netblock of a client that breaks a rate limit, in memory (closes #18) clawbot 2026-10-06 05:29:03 +02:00
  • 0f85c9ae07 The header size and the idle time as settings (closes #70) clawbot 2026-10-06 05:05:31 +02:00
  • 50df9ee36e Re-vendor the canonical files from sneak/prompts at dd4027b (closes #65) clawbot 2026-10-06 04:13:35 +02:00
  • 7f6f89cd83 Network lists: always allowed, exempt from rate limits, always refused (closes #19) clawbot 2026-10-06 02:36:27 +02:00
  • df4cf769e0 Derive the proxy tests' short timeout setting from the timeout (closes #61) clawbot 2026-10-04 11:50:08 +02:00
  • 8410cf05e6 Quiet the useradd and Perl warnings in the image build (closes #58) clawbot 2026-10-04 11:38:14 +02:00
  • e7fb88af9e Spend less of make test writing the image and waiting (closes #56) clawbot 2026-10-04 11:13:32 +02:00
  • d4f90dba37 The image apps build FROM, with its health check (closes #45) clawbot 2026-10-04 10:05:30 +02:00
  • 0750879e58 Country allow and deny lists, looked up through GeoJS (closes #44) clawbot 2026-10-04 08:29:41 +02:00
  • 6977ff73df Proxy timing tests outlast a hold-up of the test process (closes #53) clawbot 2026-10-04 07:53:18 +02:00
  • d730fcb57d Point the unreachable-app test at port 1 (closes #51) clawbot 2026-10-04 06:39:07 +02:00
  • 6bd5f620f6 TestRequestTimeouts expects 504 when none of the body reached the app (closes #49) clawbot 2026-10-04 06:09:22 +02:00
  • f51459fbfe Per-client request rate limits over a minute, an hour and a day (closes #43) clawbot 2026-10-04 04:24:34 +02:00
  • bedd324f3c Add the MIT licence (closes #15) clawbot 2026-10-04 03:07:52 +02:00
  • a399601c77 Settle the spec's open points after milestones 1 and 2 (closes #36) clawbot 2026-10-04 02:57:24 +02:00
  • 2e35528c62 Settle the open points of the Ubuntu and nixpkgs image (closes #38) clawbot 2026-10-04 02:42:56 +02:00
  • 983192ace3 Deploy model: listen port, token files, state directory owner (closes #33) clawbot 2026-10-04 01:42:43 +02:00
  • d76715b0df Pass-through proxy with timeouts, size limits and a request log (closes #13) clawbot 2026-10-03 17:24:34 +02:00
  • fd77e76177 Merge pull request 'Spec: SPEC.md and README.md to sneak's rulings, deploy model, milestones and Ubuntu base' (#31) from next into main sneak 2026-09-29 02:57:57 +02:00
  • b821897db8 Build the smallwebwaf image on the latest Ubuntu LTS with nixpkgs (closes #34) clawbot 2026-09-29 02:43:55 +02:00
  • 7be4314f55 SPEC follows milestones 1 and 2: build order, two size limits, GeoJS answers in memory (closes #16) clawbot 2026-09-29 02:10:34 +02:00
  • ba54ecb009 Deploy model: apps build FROM the smallwebwaf image, settings prefixed SWWAF_ (closes #12) clawbot 2026-09-29 01:48:47 +02:00
  • 789895782e Rewrite SPEC and README to sneak's rulings and internet-ready defaults (closes #6) clawbot 2026-09-29 00:53:01 +02:00
  • a0d2c21346 Add README, SPEC and tool evaluation, closes #1 sneak 2026-09-21 07:42:45 +00:00