Commit graph

34 commits

Author SHA1 Message Date
3ad67c6b52
xline: broadcast the XLINE notice on remove and expire too, so it covers every x-line's whole lifecycle 2026-08-21 15:03:36 +00:00
01516d5fdc
opertypes: oper classes + types — reusable capability classes and named roles (WHOIS title, auto usermodes/snomasks/vhost + level on oper-up, per-type command enforcement via on_pre_command); ships 5 built-in (helpop/globop/admin/servadmin/netadmin); oper blocks gain type=<id>; a typeless oper keeps full access 2026-08-20 10:05:11 +00:00
4248cc0479 oper: gate the client-facing SVSLOGIN/SVSLOGOUT behind oper_svslogin (default off) — they were a pre-S2S stopgap that let any oper forge an arbitrary account login (set_login) and thus +r/account-gated access; the live path is S2S link_svslogin (source_is_service-gated), so services are unaffected — only the obsolete oper backdoor is closed 2026-08-19 01:01:33 +00:00
c4456cf002 oper: TLS client-cert fingerprint login — oper block gains an optional fp=<sha256>; password=* means cert-only. Named OperBlock struct replaces the (name,pass,level) tuple. (Password login was never broken — verified live.) 2026-08-18 22:55:07 +00:00
73f8ff58ed s2s: enforce servprotect on a remote KILL and rank-vs-victim on a remote KICK (matching the local paths) 2026-08-17 19:38:58 +00:00
480b5faea0 sanick/svsnick: allow a case-only rename (in-use check matched the target itself) 2026-08-17 14:52:38 +00:00
559a102e48 add oper SQUIT command to disconnect a linked server by name 2026-08-16 19:10:29 +00:00
dadbff91d8 xline: accept the durationless KLINE/GLINE form (mask :reason) instead of eating the reason 2026-08-16 18:21:32 +00:00
7908fe50b0 s2s: propagate x-lines (ADDLINE/DELLINE) — apply from peers, announce local ones, burst on link 2026-08-16 18:01:52 +00:00
98fb848b8c s2s: route and apply KILL across the link (inbound handler + remote-target routing) 2026-08-16 17:57:50 +00:00
b7600ee5aa add +k servprotect umode (server-set-only, advertised in 004/umodes): blocks KILL, KICK and SA* on a network service; tracked for remote services too 2026-08-16 03:00:25 +00:00
546f6279e7 snomasks: make +s a parametric snomask mode with the standard category letters (acdfgjklnoqrtuvwx), route each server notice by category, RPL_SNOMASKIS 008; opers default to all and narrow with +s -c etc. 2026-08-15 17:06:14 +00:00
1c8799d785 link: rework s2s wire format to the standard v4 server protocol (10-field uid, letters-comma fjoin, ijoin, timestamped fmode, ftopic, uuid kick) so external services link 2026-08-15 11:51:18 +00:00
7cb58586b4 core: generic spawn_crypto helper; offload all slow KDF hashing (OPER pbkdf2 too, and MKPASSWD) off the core thread 2026-08-12 13:05:29 +00:00
e246699fef oper: verify bcrypt passwords on a worker thread (Event::OperAuth), bounded — a bcrypt OPER no longer freezes the core, closing the OPER-spam DoS; fast hashes stay inline 2026-08-12 12:46:52 +00:00
3b43abc88a operlevels: oper = <name> <pass> <level>; a lower-level oper can't KILL a higher-level one 2026-08-11 18:50:12 +00:00
56d3774647 rline: native regex engine (thompson nfa, no backtracking) + RLINE regex bans (registration/enforce/stats R/matchonnickchange) 2026-08-10 21:48:52 +00:00
f371ed0a18 connclass: cidr/parent/port/limit/globalmax + hashed/trusted-cert passwords, per-class recvq/sendq + fakelag, and rfc1413 ident 2026-08-10 18:46:42 +00:00
1dd7f77ca8 operprefix + ojoin: server oper prefix (!/mode y, above owner) auto-granted to opers + OJOIN command 2026-08-10 13:01:07 +00:00
61584a545b config: make flood/dnsbl/multiline/chathistory/extjwt limits + nick/chan/watch/monitor/silence/whowas/timeouts configurable (no hardcoded options) 2026-08-09 22:52:39 +00:00
c71c28457f modules: port password_hash (md5/sha1/sha2/pbkdf2 + MKPASSWD, hashed OPER) and hashident 2026-08-09 11:40:17 +00:00
131471e245 modules: move all per-module state/config out of server.rs/config.rs into own files 2026-08-09 11:18:04 +00:00
f4c01e1bf8 OPERMOTD, self-service VHOST, and command aliases (config-driven) 2026-08-09 01:19:24 +00:00
e2a4a3e248 NICKLOCK / NICKUNLOCK (services hold a user's nick) 2026-08-09 01:09:46 +00:00
4a53c80d4d CBAN (forbid channel-name globs) + SSLINFO command 2026-08-09 01:04:33 +00:00
8dc51a281b channel modes +Q nokicks / +A allowinvite / +P permchannels; fix SWHOIS (full multi-word text, no doubled nick in WHOIS) 2026-08-09 00:47:10 +00:00
68fdd91eaa SWHOIS (320), SETIDLE, UNINVITE 2026-08-09 00:29:54 +00:00
2aec23c5f9 oper toolbox: SAQUIT, CHGNAME, CLEARCHAN, CHECK, ALLTIME 2026-08-09 00:24:27 +00:00
f5cc12e809 connect: oper can dial a configured server link on demand 2026-08-08 20:19:14 +00:00
cc3240c04f x-lines: eline (ban exempt), shun (drop commands), qline (reserved nicks) 2026-08-08 20:16:05 +00:00
2d08ca58ea services interface: svsnick, svsjoin, svspart, svsmode (user +r/channel); dry force_part shared with sapart 2026-08-08 18:20:24 +00:00
fceafa8064 move rehash to its own coremod; reload-safe rehash (keeps running config on read failure) + snotice + servermask 2026-08-08 00:16:34 +00:00
dbdeb97392 configurable resolved hostname in the hostmask (use_resolved_host) 2026-08-08 00:09:28 +00:00
9b12791774 import echoircd — from-scratch irc daemon in native rust 2026-08-05 16:10:31 +00:00