echoIRCd

Modules

echoIRCd is built module-per-file: each feature lives in its own source module, and most are toggled through the configuration. This is the full set that ships in the tree.

Anti-abuse & access control#

ModuleProvides
connclassConnection classes — match by IP/host/TLS/port, then apply reject / clone-caps / password / modes / queue / flood / ping policy
connfloodRefuse connections from an IP opening too many too fast
connectbanZ-line an IP range that opens too many connections
conn_waitpongHold registration until the client PONGs an exact server cookie
floodPer-user message-rate limit (fakelag); opers exempt
dnsblDNS blocklist checks on connect
reputationPer-address reputation scoring over time; y: extban
securitygroupsNamed AND-ed user sets; g: extban
antirandomScore drone-like random nick/ident/realname
antimixedutf8Block mixed-Unicode-script look-alike spam
filterOper-configured spam/word glob filters
blockamsgBlock mass /amsg and /ame
solvemsgUn-vouched user answers an arithmetic question before PMs deliver
recaptcha / cloudflare_challengeRegistration human-verification gates
autodropSilently drop HTTP-scanner connections
restrictmsg / restrictcommands / restrictchans / denychans / channamesMessage/command/channel restrictions
dccallowGate DCC by filename unless the recipient allowed the sender
hashidentReplace ident with a stable per-IP HMAC token

Bans & extbans#

ModuleProvides
accountbana: extban (match by account)
realnamebanr: extban (match by realname)
serverbans: extban (match by server)
channelbanj: extban (match by another channel)
extbanbanlistb: extban (match another channel's ban list)
banredirect+b <mask>$<#channel> bounces a banned user elsewhere
geoipGeoIP + G: country extban, GEOIP, WHOIS geo
asnASN lookup feeding classes, groups, extbans, WHOIS

Channels & modes#

ModuleProvides
customprefixReconfigure or add channel prefix tiers
namedmodesPROP — set/query modes by long name
permchannelsPersist +P permanent channels across restarts
autoop+w auto-grant a prefix on join
rmodeBulk-remove list-mode entries
hidemode / hidelistHide mode changes / list entries below a rank

IRCv3 & client features#

ModuleProvides
chathistorydraft/chathistory + draft/message-redaction
event_playbackdraft/event-playback
multilineServer side of draft/multiline
metadatadraft/metadata-2
markreaddraft/read-marker
webpushdraft/webpush (RFC 8291/8292)
account_registrationdraft/account-registration bridged to an HTTP backend
extended_isupportdraft/extended-isupport
relaymsgdraft/relaymsg
filehostAdvertise a file-host + signed upload links
extjwtEXTJWT server-signed identity tokens
irccloudtagsValidate IRCCloud client-only tags

Operators & staff#

ModuleProvides
opertypesOper classes + types (capability bundles)
operlevelsNumeric oper level (KILL protection tiers)
operprefixThe ! oper channel prefix
ojoinJoin a channel as network staff
password_hashHashed oper passwords + MKPASSWD
globopsGLOBOPS broadcast
maphide / hidewhois / hideservices (opers)Hide topology / WHOIS lines / services
tlineGauge a would-be ban's blast radius
customtitleTITLE — claim a WHOIS title/vhost

Cloaking, DNS & identity#

ModuleProvides
cloakKeyed host masking (+x)
identOptional RFC 1413 ident lookups
jwtHS256 JWS/JWT signer shared by captcha / challenge / extjwt

Observability & integration#

ModuleProvides
metricsPrometheus/OpenMetrics endpoint
rpcJSON-RPC 2.0 control interface (see Metrics & RPC)
syslog / log_json / jsonlogMirror the log stream to syslog / a JSONL file / per-oper JSON tags
chanlogMirror oper snotices into a channel
whoisportShow an oper the port a user connected to
showfile / randquote / network_icon / profilelinkServe a file as a command, greet quotes, network icon, WHOIS profile link
securelistHold /LIST for fresh connections