102 lines
4.6 KiB
Markdown
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 |
|