website/content/docs/modules.md

102 lines
4.6 KiB
Markdown

# Modules
echoIRCd is built module-per-file: each feature lives in its own source module, and most are toggled
through the [configuration](/docs/config-reference). This is the full set that ships in the tree.
## Anti-abuse & access control
| Module | Provides |
| --- | --- |
| `connclass` | Connection classes — match by IP/host/TLS/port, then apply reject / clone-caps / password / modes / queue / flood / ping policy |
| `connflood` | Refuse connections from an IP opening too many too fast |
| `connectban` | Z-line an IP range that opens too many connections |
| `conn_waitpong` | Hold registration until the client PONGs an exact server cookie |
| `flood` | Per-user message-rate limit (fakelag); opers exempt |
| `dnsbl` | DNS blocklist checks on connect |
| `reputation` | Per-address reputation scoring over time; `y:` extban |
| `securitygroups` | Named AND-ed user sets; `g:` extban |
| `antirandom` | Score drone-like random nick/ident/realname |
| `antimixedutf8` | Block mixed-Unicode-script look-alike spam |
| `filter` | Oper-configured spam/word glob filters |
| `blockamsg` | Block mass `/amsg` and `/ame` |
| `solvemsg` | Un-vouched user answers an arithmetic question before PMs deliver |
| `recaptcha` / `cloudflare_challenge` | Registration human-verification gates |
| `autodrop` | Silently drop HTTP-scanner connections |
| `restrictmsg` / `restrictcommands` / `restrictchans` / `denychans` / `channames` | Message/command/channel restrictions |
| `dccallow` | Gate DCC by filename unless the recipient allowed the sender |
| `hashident` | Replace ident with a stable per-IP HMAC token |
## Bans & extbans
| Module | Provides |
| --- | --- |
| `accountban` | `a:` extban (match by account) |
| `realnameban` | `r:` extban (match by realname) |
| `serverban` | `s:` extban (match by server) |
| `channelban` | `j:` extban (match by another channel) |
| `extbanbanlist` | `b:` extban (match another channel's ban list) |
| `banredirect` | `+b <mask>$<#channel>` bounces a banned user elsewhere |
| `geoip` | GeoIP + `G:` country extban, `GEOIP`, WHOIS geo |
| `asn` | ASN lookup feeding classes, groups, extbans, WHOIS |
## Channels & modes
| Module | Provides |
| --- | --- |
| `customprefix` | Reconfigure or add channel prefix tiers |
| `namedmodes` | `PROP` — set/query modes by long name |
| `permchannels` | Persist `+P` permanent channels across restarts |
| `autoop` | `+w` auto-grant a prefix on join |
| `rmode` | Bulk-remove list-mode entries |
| `hidemode` / `hidelist` | Hide mode changes / list entries below a rank |
## IRCv3 & client features
| Module | Provides |
| --- | --- |
| `chathistory` | `draft/chathistory` + `draft/message-redaction` |
| `event_playback` | `draft/event-playback` |
| `multiline` | Server side of `draft/multiline` |
| `metadata` | `draft/metadata-2` |
| `markread` | `draft/read-marker` |
| `webpush` | `draft/webpush` (RFC 8291/8292) |
| `account_registration` | `draft/account-registration` bridged to an HTTP backend |
| `extended_isupport` | `draft/extended-isupport` |
| `relaymsg` | `draft/relaymsg` |
| `filehost` | Advertise a file-host + signed upload links |
| `extjwt` | `EXTJWT` server-signed identity tokens |
| `irccloudtags` | Validate IRCCloud client-only tags |
## Operators & staff
| Module | Provides |
| --- | --- |
| `opertypes` | Oper classes + types (capability bundles) |
| `operlevels` | Numeric oper level (KILL protection tiers) |
| `operprefix` | The `!` oper channel prefix |
| `ojoin` | Join a channel as network staff |
| `password_hash` | Hashed oper passwords + `MKPASSWD` |
| `globops` | `GLOBOPS` broadcast |
| `maphide` / `hidewhois` / `hideservices` (opers) | Hide topology / WHOIS lines / services |
| `tline` | Gauge a would-be ban's blast radius |
| `customtitle` | `TITLE` — claim a WHOIS title/vhost |
## Cloaking, DNS & identity
| Module | Provides |
| --- | --- |
| `cloak` | Keyed host masking (`+x`) |
| `ident` | Optional RFC 1413 ident lookups |
| `jwt` | HS256 JWS/JWT signer shared by captcha / challenge / extjwt |
## Observability & integration
| Module | Provides |
| --- | --- |
| `metrics` | Prometheus/OpenMetrics endpoint |
| `rpc` | JSON-RPC 2.0 control interface (see [Metrics & RPC](/docs/metrics-rpc)) |
| `syslog` / `log_json` / `jsonlog` | Mirror the log stream to syslog / a JSONL file / per-oper JSON tags |
| `chanlog` | Mirror oper snotices into a channel |
| `whoisport` | Show an oper the port a user connected to |
| `showfile` / `randquote` / `network_icon` / `profilelink` | Serve a file as a command, greet quotes, network icon, WHOIS profile link |
| `securelist` | Hold `/LIST` for fresh connections |