# 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 $<#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 |