notify_exclude: document server:<glob> to mute a whole relay server

reverse 2026-07-18 17:35:42 +00:00
parent 43c1999eb0
commit 32d9e4a9f3
No known key found for this signature in database
2 changed files with 11 additions and 5 deletions

@ -70,11 +70,17 @@ An audit channel for the incident feed. Notable actions are announced there; pri
[log] [log]
channel = "#services" channel = "#services"
`notify_exclude` is an optional list of masks [OperServ NOTIFY](Services#operserv-network-operator-tools) never announces, so they cannot flood the feed. It uses the same grammar as a watch mask: a `#channel` mask mutes that channel, and any other mask (nick glob, `user@host`, extban) mutes a user. The classic user case is PyLink relay clients — their nicks carry a `/network` suffix — so `"*/*"` silences every relayed user; a channel entry like `"#staff"` keeps a broad `#*` watch out of that channel. Reloadable with `OperServ REHASH` (no restart). `notify_exclude` is an optional list of masks [OperServ NOTIFY](Services#operserv-network-operator-tools) never announces, so they cannot flood the feed. It takes three kinds of entry:
- `#channel` — mute that channel (keep a broad `#*` watch out of `#staff`).
- `server:<glob>` (alias `via:`) — mute everyone on a matching server. This is the handle on a relay whose users have **clean nicks**; the server name is what prints after `via` in a feed line.
- anything else — mute a user: a nick glob, `user@host`, or extban. `"*/*"` catches PyLink relays that suffix nicks with `/network`.
Reloadable with `OperServ REHASH` (no restart).
[log] [log]
channel = "#services" channel = "#services"
notify_exclude = ["*/*", "#staff"] # relay clients, and never #staff notify_exclude = ["*/*", "server:chatnova.relay", "#staff"]
## [expire] ## [expire]

@ -57,11 +57,11 @@ A deliberately broad mask like `#*` (every channel) or `*` (every user) is allow
/msg OperServ REHASH /msg OperServ REHASH
-OperServ- Configuration reloaded from /etc/echo/config.toml. -OperServ- Configuration reloaded from /etc/echo/config.toml.
Excluded masks are skipped by *every* watch, so genuine locals still surface while the relay noise is gone. The list uses the same grammar as a watch mask, so it excludes **users** (nick globs, `user@host`, extbans) **or channels**: a `#channel` mask mutes that channel. So "every join except #staff" is `#*` watched with `#staff` excluded: Excluded masks are skipped by *every* watch, so genuine locals still surface while the relay noise is gone. An entry mutes a **user** (nick glob, `user@host`, extban), a **channel** (`#staff`), or a whole **server** (`server:<glob>`, alias `via:`). The server form is the one that catches a relay whose users have clean nicks — `via chatnova.relay` in the feed becomes `server:chatnova.relay` in the list:
notify_exclude = ["*/*", "#staff"] # relay clients, and never #staff notify_exclude = ["*/*", "server:chatnova.relay", "#staff"]
See [Configuration → [log]](Configuration#log). So "every join except #staff, and never the relays" is `#*` watched with those three exclusions. See [Configuration → [log]](Configuration#log).
## StatServ, statistics ## StatServ, statistics