echoIRCd/src
2026-08-25 03:15:28 +00:00
..
coremods whois: show client-cert fingerprint (276) to everyone, not just opers/self 2026-08-24 22:25:08 +00:00
modules snoop: drop needless clones in the connect notice (hold the &User borrow) 2026-08-25 00:12:23 +00:00
accounts.rs accounts: oper snotice on post-connect login ('Client X is now logged in as Y') 2026-08-25 02:21:58 +00:00
bcrypt.rs bcrypt: native $2b$ hashing (blowfish + eksblowfish; pi constants via exact fixed-point machin) wired into password_hash + MKPASSWD 2026-08-11 11:32:35 +00:00
channels.rs comments: strip stray reference-implementation names from a handful of module/inline comments 2026-08-20 10:11:07 +00:00
command.rs operprefix + ojoin: server oper prefix (!/mode y, above owner) auto-granted to opers + OJOIN command 2026-08-10 13:01:07 +00:00
config.rs brand: per-SNI server/network identity (welcome, ISUPPORT NETWORK, numeric source prefix) 2026-08-24 23:29:15 +00:00
extensible.rs perf: mimalloc global allocator + aHash maps + memchr line framer + LTO/codegen-units=1 — ~29% faster channel fanout; and drop the bogus openssl+mio dependency whitelist from the guard (any perf crate is welcome now) 2026-08-18 19:45:33 +00:00
http.rs http: verify TLS certs by default + cap the response body — set_verify(NONE) unconditionally let a MITM read/forge the account-registration & captcha traffic (usernames, emails, plaintext passwords) POSTed to operator-configured https URLs; now the connector's cert+hostname check stays on (opt out with http_tls_verify=no), and read_to_end is bounded to 4 MiB so a hostile endpoint can't OOM the worker 2026-08-19 00:37:50 +00:00
ircd.rs brand: per-SNI server/network identity (welcome, ISUPPORT NETWORK, numeric source prefix) 2026-08-24 23:29:15 +00:00
lib.rs test: deterministic two-node S2S convergence simulator — real handshake + join/part/rejoin/FJOIN-TS-arbitration driven through actual code paths, proptest-randomised churn asserts both sides always converge; extract Server::part so the sim and the PART command share one path 2026-08-18 22:24:19 +00:00
link.rs snoop: connect notice includes port, sni and account (present fields only) 2026-08-25 00:06:22 +00:00
main.rs config: checkconfig CLI + Config::dump; tls block carries sni/handshake_timeout 2026-08-23 12:42:30 +00:00
map.rs perf: mimalloc global allocator + aHash maps + memchr line framer + LTO/codegen-units=1 — ~29% faster channel fanout; and drop the bogus openssl+mio dependency whitelist from the guard (any perf crate is welcome now) 2026-08-18 19:45:33 +00:00
message.rs message: parse the IRCv3 tag block in a single pass instead of four separate split(';') scans plus an intermediate Vec for ctags 2026-08-19 02:54:24 +00:00
mode.rs channels/whois: validate +k/+l, cap and case-fold ban lists, honour -n for externals, hide +s/+p/+i from whois/who/names, 301 in whois, conf-key the join/nickflood lockout 2026-08-16 17:56:24 +00:00
module.rs registration: add a Hold verdict so captcha/challenge modules pend the client for the challenge instead of tearing the link down 2026-08-17 19:06:17 +00:00
numeric.rs version: show echoircd-<major> (5) in 002/004/351 and enrich RPL_VERSION with build/toolchain provenance 2026-08-23 01:24:45 +00:00
proxy.rs test: property-based fuzzing (proptest) for every untrusted-input parser — message line, PROXY header, WebSocket frame, regex engine, ban-mask, duration; asserts no-panic + round-trip/idempotence/bounds invariants 2026-08-18 22:17:17 +00:00
regex.rs test: property-based fuzzing (proptest) for every untrusted-input parser — message line, PROXY header, WebSocket frame, regex engine, ban-mask, duration; asserts no-panic + round-trip/idempotence/bounds invariants 2026-08-18 22:17:17 +00:00
resolver.rs hardening: bracket a bare IPv6 nameserver literal (was unparseable -> rDNS/DNSBL silently degraded on v6-only hosts); saturating chunk-size advance in the RPC dechunker (a 16-hex-digit size could overflow-panic the worker); connclass hash= is now last-wins to match password= under parent= inheritance 2026-08-19 04:45:07 +00:00
s2s_sim.rs snoop: connect notice includes port, sni and account (present fields only) 2026-08-25 00:06:22 +00:00
server.rs accounts: oper snotice on post-connect login ('Client X is now logged in as Y') 2026-08-25 02:21:58 +00:00
socketengine.rs websocket: collapse v4-mapped proxy peer so ws_proxyranges matches and X-Real-IP is honored 2026-08-25 03:15:28 +00:00
tls.rs brand: per-SNI server/network identity (welcome, ISUPPORT NETWORK, numeric source prefix) 2026-08-24 23:29:15 +00:00
tls_rustls.rs tls: rustls backend offers TLS 1.3 (was TLS 1.2 only), preferred over 1.2 2026-08-24 20:30:54 +00:00
users.rs snoop: connect notice includes port, sni and account (present fields only) 2026-08-25 00:06:22 +00:00
watch.rs add SIGNORE: personal mutual server-side ignore across channels and PMs 2026-08-20 14:48:17 +00:00
websocket.rs websocket: collapse v4-mapped proxy peer so ws_proxyranges matches and X-Real-IP is honored 2026-08-25 03:15:28 +00:00
xline.rs xline: tell a banned user when the ban expires, not just why 2026-08-21 15:18:23 +00:00