Lower limits for listed AS numbers and countries #21

Open
opened 2026-09-25 11:01:48 +02:00 by clawbot · 2 comments
Collaborator

Clients of listed AS numbers and countries get a percentage of every limit, so they are refused, and once bans exist banned, after fewer requests, as sneak set out in #3 and the "Biased thresholds" settings in SPEC.md (#9) describe. GeoJS answers already carry the AS number.

Not scheduled: it waits for sneak to put it in a milestone.

Model: opus-5-5

Clients of listed AS numbers and countries get a percentage of every limit, so they are refused, and once bans exist banned, after fewer requests, as sneak set out in https://git.eeqj.de/sneak/smallwebwaf/issues/3 and the "Biased thresholds" settings in `SPEC.md` (https://git.eeqj.de/sneak/smallwebwaf/pulls/9) describe. GeoJS answers already carry the AS number. Not scheduled: it waits for sneak to put it in a milestone. Model: opus-5-5
Author
Collaborator

Plan. The build order in SPEC.md puts the biased thresholds in the third stage. Built after #95 (every client's AS number and country) and #20 (byte limits), as "Biased thresholds" gives them. One PR to next.

  • SWWAF_ASN_LIMIT_PERCENT (AS14061:50,...) and SWWAF_COUNTRY_LIMIT_PERCENT (CN:25,...): a client of a listed AS number or country gets that percentage of every request and byte limit; 0 is a zero allowance, so its first request breaks a limit. The lowest percentage that applies wins.
  • SWWAF_ASN_BYTES_PERCENT, SWWAF_COUNTRY_BYTES_PERCENT: overrides for byte limits only.
  • SWWAF_UNKNOWN_LIMIT_PERCENT (default 100): for clients the lookup cannot place, including one whose answer has not come in time.
  • A request waits for its client's first answer, up to SWWAF_LOOKUP_TIMEOUT, while any of these is set; SWWAF_LOOKUP_SOURCE=off with one set stops the start naming both. Malformed entries, a percentage over 100, or a code listed twice stop the start naming the setting.
  • The request log's limit_percent and which setting set it; ban notes and alerts give the percentage applied.
  • README.md documents the settings and that no budget is shared by a whole AS number or country.

Not in this unit: SWWAF_ASN_LIMIT_PERCENT_URL, which is fetched like the blocklists and comes with them.

Definition of done: tests show each setting lowering the request and byte limits, 0, the lowest percentage winning, the byte overrides, unknown clients, the wait only while a setting is set, each start error, and the log field, notes and alerts; each test failing with its rule broken; make check green; one PR to next, passed by a reviewer who did not write it.

Model: opus-5-5

Plan. The build order in `SPEC.md` puts the biased thresholds in the third stage. Built after https://git.eeqj.de/sneak/smallwebwaf/issues/95 (every client's AS number and country) and https://git.eeqj.de/sneak/smallwebwaf/issues/20 (byte limits), as "Biased thresholds" gives them. One PR to `next`. - `SWWAF_ASN_LIMIT_PERCENT` (`AS14061:50,...`) and `SWWAF_COUNTRY_LIMIT_PERCENT` (`CN:25,...`): a client of a listed AS number or country gets that percentage of every request and byte limit; `0` is a zero allowance, so its first request breaks a limit. The lowest percentage that applies wins. - `SWWAF_ASN_BYTES_PERCENT`, `SWWAF_COUNTRY_BYTES_PERCENT`: overrides for byte limits only. - `SWWAF_UNKNOWN_LIMIT_PERCENT` (default `100`): for clients the lookup cannot place, including one whose answer has not come in time. - A request waits for its client's first answer, up to `SWWAF_LOOKUP_TIMEOUT`, while any of these is set; `SWWAF_LOOKUP_SOURCE=off` with one set stops the start naming both. Malformed entries, a percentage over 100, or a code listed twice stop the start naming the setting. - The request log's `limit_percent` and which setting set it; ban notes and alerts give the percentage applied. - `README.md` documents the settings and that no budget is shared by a whole AS number or country. Not in this unit: `SWWAF_ASN_LIMIT_PERCENT_URL`, which is fetched like the blocklists and comes with them. Definition of done: tests show each setting lowering the request and byte limits, `0`, the lowest percentage winning, the byte overrides, unknown clients, the wait only while a setting is set, each start error, and the log field, notes and alerts; each test failing with its rule broken; `make check` green; one PR to `next`, passed by a reviewer who did not write it. Model: opus-5-5
clawbot self-assigned this 2026-10-07 07:30:47 +02:00
Author
Collaborator

Built in #103, for review.

Model: opus-5-5

Built in https://git.eeqj.de/sneak/smallwebwaf/pulls/103, for review. Model: opus-5-5
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/smallwebwaf#21