Document OperServ NOTIFY and the notify_exclude relay filter

reverse 2026-07-18 17:08:35 +00:00
parent c56e1b5b3a
commit 94668e7875
No known key found for this signature in database
2 changed files with 31 additions and 1 deletions

@ -70,6 +70,12 @@ 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 whose users [OperServ NOTIFY](Services#operserv-network-operator-tools) never matches, so they cannot flood the feed. The classic case is PyLink relay clients — their nicks carry a `/network` suffix — so `"*/*"` silences every relayed user in one line. It accepts nick globs, `user@host`, or extbans (the same syntax as a NOTIFY mask), and is reloadable with `OperServ REHASH` (no restart).
[log]
channel = "#services"
notify_exclude = ["*/*"] # ignore PyLink relay clients (nick/network)
## [expire] ## [expire]
Inactivity expiry. Accounts not identified to, and channels not joined, past the threshold are dropped on a periodic pass. Opers, live sessions, occupied channels, and NOEXPIRE records are spared. A zero or omitted field leaves that kind never expiring. Inactivity expiry. Accounts not identified to, and channels not joined, past the threshold are dropped on a periodic pass. Opers, live sessions, occupied channels, and NOEXPIRE records are spared. A zero or omitted field leaves that kind never expiring.

@ -24,7 +24,31 @@ SEND, LIST, READ, DEL. Memos are stored on the account and delivered whether or
## OperServ, network operator tools ## OperServ, network operator tools
AKILL and other X-lines, DEFCON, JUPE, SESSION limits and exceptions, IGNORE, GLOBAL, KILL, KICK, MODE, SVS tools, STATS, and LOGSEARCH over the incident log. Typed operator privileges gate each command. AKILL and other X-lines, FORBID, SPAMFILTER, NOTIFY, DEFCON, JUPE, SESSION limits and exceptions, IGNORE, GLOBAL, KILL, KICK, MODE, SVS tools, STATS, and LOGSEARCH over the incident log. Typed operator privileges gate each command.
### NOTIFY, an operator watch list
`NOTIFY ADD +<expiry> <flags|*> <mask> <reason>` watches a mask; matching users have their flagged events announced to the staff feed (as DebugServ, tagged `[NOTIFY]`). Also `DEL <mask|number>`, `LIST`/`VIEW [pattern]`, and `CLEAR`. Admin only.
- **Mask** — a `nick!user@host` pattern, a bare nick glob (`baddie*`), or a `#channel` (watches everyone who joins a matching channel).
- **Flags**`c` connect, `d` disconnect, `j` join, `p` part, `n` nick change, `t` topic, `s` services command, `S` services SET; `*` for all.
- **Expiry**`+30d`, `+12h`, `+45m`, or `+0` for permanent.
/msg OperServ NOTIFY ADD +0 cdn baddie*!*@* known ban-evader
/msg OperServ NOTIFY ADD +7d j #recruiting watch who joins during the drive
**Keeping relay clients out of the feed.** A broad watch — a channel watch especially — will match every PyLink-relayed user (their nicks carry a `/network` suffix) and flood the log. Set the exclude list once and reload it live, no restart:
# in config.toml
[log]
channel = "#services"
notify_exclude = ["*/*"] # any nick with a "/" is a relay client
# then, as an operator:
/msg OperServ REHASH
-OperServ- Configuration reloaded from /etc/echo/config.toml.
Excluded users are skipped by *every* watch, so genuine locals still surface while the relay noise is gone. The list also accepts `user@host` and extbans, e.g. `["*/fun", "*!*@relay.example"]`. See [Configuration → [log]](Configuration#log).
## StatServ, statistics ## StatServ, statistics