The admin listener for health checks, listing, adding and lifting bans, and asking why an address was refused, as the "Admin listener" section of SPEC.md (#9) describes. sneak's pick among the easier-administration proposals in #10 bears on it.
Not scheduled: it waits for sneak to put it in a milestone.
Model: opus-5-5
The admin listener for health checks, listing, adding and lifting bans, and asking why an address was refused, as the "Admin listener" section of `SPEC.md` (https://git.eeqj.de/sneak/smallwebwaf/pulls/9) describes. sneak's pick among the easier-administration proposals in https://git.eeqj.de/sneak/smallwebwaf/issues/10 bears on it.
Not scheduled: it waits for sneak to put it in a milestone.
Model: opus-5-5
sneak's ruling on issue 10: one listener only, and all admin commands come in through it like everything else. This issue therefore becomes "admin endpoints on the single listener", with no separate admin listener or port. The spec in PR 9 changes to match.
Model: opus-5-5
sneak's ruling on [issue 10](https://git.eeqj.de/sneak/smallwebwaf/issues/10#issuecomment-103275): one listener only, and all admin commands come in through it like everything else. This issue therefore becomes "admin endpoints on the single listener", with no separate admin listener or port. The spec in [PR 9](https://git.eeqj.de/sneak/smallwebwaf/pulls/9) changes to match.
Model: opus-5-5
Plan. The build order in SPEC.md puts the other admin endpoints in the second stage after milestone 2, beside rule files, alerting and remote log sending. Built after #86 (the admin cause, reason, lifted bans) and #87 (settings given as files), as "Admin endpoints" describes. One PR to next.
SWWAF_ADMIN_TOKEN (and its _FILE form): shorter than 32 characters stops the start; unset, the endpoints below answer 404 like any other path under /_smallwebwaf/. Sent as Authorization: Bearer <token>, compared in constant time; missing or wrong answers 401, in observe mode too.
GET /_smallwebwaf/bans: the bans as bans.json holds them, JSON.
POST /_smallwebwaf/bans: a client or netblock, a duration (or permanent) and a reason; makes an admin ban, written to bans.json like any other.
DELETE /_smallwebwaf/bans/<client>: lifts the ban covering that client (kept, marked lifted).
GET /_smallwebwaf/clients/<ip>: the client's current counters, history, lookup result, offences and bans with their notes, from what is built; reputation comes with its sources.
These requests go through every check other requests do and are answered where another would be forwarded; they count toward the client's limits; a client in SWWAF_ALLOW_NETS skips the checks but needs the token. The request log's action is admin.
README.md shows each endpoint with curl.
Not in this unit: a 401 counting toward the error burst comes with error bursts.
Definition of done: tests show each endpoint with a right, wrong and missing token, 404 while the token is unset, a short token stopping the start, a ban added and lifted through the endpoints and seen in bans.json, a banned client refused at an endpoint even with the token, and the counts; 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 other admin endpoints in the second stage after milestone 2, beside rule files, alerting and remote log sending. Built after https://git.eeqj.de/sneak/smallwebwaf/issues/86 (the `admin` cause, `reason`, lifted bans) and https://git.eeqj.de/sneak/smallwebwaf/issues/87 (settings given as files), as "Admin endpoints" describes. One PR to `next`.
- `SWWAF_ADMIN_TOKEN` (and its `_FILE` form): shorter than 32 characters stops the start; unset, the endpoints below answer `404` like any other path under `/_smallwebwaf/`. Sent as `Authorization: Bearer <token>`, compared in constant time; missing or wrong answers `401`, in `observe` mode too.
- `GET /_smallwebwaf/bans`: the bans as `bans.json` holds them, JSON.
- `POST /_smallwebwaf/bans`: a client or netblock, a duration (or permanent) and a reason; makes an `admin` ban, written to `bans.json` like any other.
- `DELETE /_smallwebwaf/bans/<client>`: lifts the ban covering that client (kept, marked lifted).
- `GET /_smallwebwaf/clients/<ip>`: the client's current counters, history, lookup result, offences and bans with their notes, from what is built; reputation comes with its sources.
- These requests go through every check other requests do and are answered where another would be forwarded; they count toward the client's limits; a client in `SWWAF_ALLOW_NETS` skips the checks but needs the token. The request log's `action` is `admin`.
- `README.md` shows each endpoint with `curl`.
Not in this unit: a `401` counting toward the error burst comes with error bursts.
Definition of done: tests show each endpoint with a right, wrong and missing token, `404` while the token is unset, a short token stopping the start, a ban added and lifted through the endpoints and seen in `bans.json`, a banned client refused at an endpoint even with the token, and the counts; 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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The admin listener for health checks, listing, adding and lifting bans, and asking why an address was refused, as the "Admin listener" section of
SPEC.md(#9) describes. sneak's pick among the easier-administration proposals in #10 bears on it.Not scheduled: it waits for sneak to put it in a milestone.
Model: opus-5-5
sneak's ruling on issue 10: one listener only, and all admin commands come in through it like everything else. This issue therefore becomes "admin endpoints on the single listener", with no separate admin listener or port. The spec in PR 9 changes to match.
Model: opus-5-5
Plan. The build order in
SPEC.mdputs the other admin endpoints in the second stage after milestone 2, beside rule files, alerting and remote log sending. Built after #86 (theadmincause,reason, lifted bans) and #87 (settings given as files), as "Admin endpoints" describes. One PR tonext.SWWAF_ADMIN_TOKEN(and its_FILEform): shorter than 32 characters stops the start; unset, the endpoints below answer404like any other path under/_smallwebwaf/. Sent asAuthorization: Bearer <token>, compared in constant time; missing or wrong answers401, inobservemode too.GET /_smallwebwaf/bans: the bans asbans.jsonholds them, JSON.POST /_smallwebwaf/bans: a client or netblock, a duration (or permanent) and a reason; makes anadminban, written tobans.jsonlike any other.DELETE /_smallwebwaf/bans/<client>: lifts the ban covering that client (kept, marked lifted).GET /_smallwebwaf/clients/<ip>: the client's current counters, history, lookup result, offences and bans with their notes, from what is built; reputation comes with its sources.SWWAF_ALLOW_NETSskips the checks but needs the token. The request log'sactionisadmin.README.mdshows each endpoint withcurl.Not in this unit: a
401counting toward the error burst comes with error bursts.Definition of done: tests show each endpoint with a right, wrong and missing token,
404while the token is unset, a short token stopping the start, a ban added and lifted through the endpoints and seen inbans.json, a banned client refused at an endpoint even with the token, and the counts; each test failing with its rule broken;make checkgreen; one PR tonext, passed by a reviewer who did not write it.Model: opus-5-5
Built in #92, for review.
Model: opus-5-5