Commit graph

  • 660362a34b
    Throttle every password-verify path (GROUP/GHOST/CERT/DROP/SASL) and key the lockout by resolved account Jean 2026-07-19 13:06:50 +00:00
  • 1ecb76affb
    Report failed IDENTIFY against a password-less account to the auth feed Jean 2026-07-19 05:00:12 +00:00
  • 876bc55e2b
    Deliver node-local channel directory events to the gRPC subscribe stream Jean 2026-07-19 04:54:48 +00:00
  • af5896743d
    Restore the real ident when a HostServ ident@host vhost is turned off or deleted Jean 2026-07-19 04:49:31 +00:00
  • 384f222a22
    Enforce cloned akicks with a standing +b for ircd-enforced masks Jean 2026-07-19 04:49:31 +00:00
  • 23960adc83
    Route every handle() early return through the shared tail so swept unbans and incident stamps aren't dropped Jean 2026-07-19 04:44:11 +00:00
  • b38cde945f
    Persist CS TOPIC so KEEPTOPIC and TOPICLOCK keep the set topic Jean 2026-07-19 04:21:25 +00:00
  • 75aa8bc096
    Preserve channel last_used and LEVELS overrides across compaction Jean 2026-07-19 04:19:22 +00:00
  • ad8a3fe065
    Add loopback health and Prometheus metrics endpoint Jean 2026-07-19 04:13:18 +00:00
  • 381f706634
    Test oper type shortcut resolves to its tier privileges Jean 2026-07-19 03:29:00 +00:00
  • baab04203d
    Report oper tier by capability so a sub-floor grant isnt labelled a full operator Jean 2026-07-19 02:28:32 +00:00
  • fc214ab0d3
    Add three-tier services operator model (operator, administrator, root) Jean 2026-07-19 02:19:51 +00:00
  • a10662bbc6
    engine: persist the incident ring (LOGSEARCH) across restarts via a periodic + on-shutdown snapshot event, mirroring stat-counter persistence Jean 2026-07-19 00:46:14 +00:00
  • 754c5d9e95
    engine: staff-feed alerts are also recorded to the incident log, so a blocked look-alike registration is searchable via OperServ LOGSEARCH Jean 2026-07-19 00:29:55 +00:00
  • 0d16240606
    nickserv/chanserv: announce a blocked look-alike registration to the staff feed (ServiceCtx alert drained by dispatch) Jean 2026-07-19 00:24:27 +00:00
  • 89ac01d0b0
    nickserv/chanserv: catch styled/fullwidth look-alike names too, and add a [register] confusable_check toggle (REHASH-reloadable) Jean 2026-07-19 00:15:08 +00:00
  • c2b70f5004
    nickserv/chanserv: reject look-alike / mixed-script registration names (homoglyph impersonation guard) Jean 2026-07-19 00:02:44 +00:00
  • 03f9c2d3bd
    dictserv: retry a transient lookup once, and end the read on a no-match/error status instead of blocking for a 250 that never comes Jean 2026-07-18 23:20:34 +00:00
  • 623750e638
    dictserv: opt-in DICT (RFC 2229) lookup service — bots and /msg answer dict/define/thes/acronym/law/etc via dict.org off-reactor Jean 2026-07-18 20:21:30 +00:00
  • 76be932131
    test: add an ignored engine throughput benchmark (botserv hot path + append/fsync write path) Jean 2026-07-18 19:43:45 +00:00
  • 5859aaf888
    engine: reuse the event-log append handle instead of reopening per event (~20% faster writes on disk) Jean 2026-07-18 19:43:45 +00:00
  • e05c62c085
    operserv: NOTIFY gains k/m/u/o flags and quit/part reasons; protocol carries kicker, mode-setter, oper-up, user modes Jean 2026-07-18 19:18:17 +00:00
  • 617d3c7966
    operserv: NOTIFY feed uses labelled fields (IP/DNS/Account/Server) and Service:verb Jean 2026-07-18 17:50:32 +00:00
  • 4247df8844
    operserv: notify_exclude gains server:<glob> to mute a whole relay server from the feed Jean 2026-07-18 17:35:04 +00:00
  • 4d327c3f47
    operserv: NOTIFY lines carry real IP, rdns, login and origin server for the oper feed Jean 2026-07-18 17:28:07 +00:00
  • 2fb1970030
    docs: notify_exclude comments cover channel masks Jean 2026-07-18 17:20:24 +00:00
  • 29bedf0358
    operserv: notify_exclude also mutes #channel masks, so a broad watch can skip specific channels Jean 2026-07-18 17:19:48 +00:00
  • bbdb34aa77
    operserv: NOTIFY allows broad masks (it only observes) so a #* watch can match all joins Jean 2026-07-18 17:14:13 +00:00
  • 1d30c9cfe3
    operserv: note the log channel and notify exclude list are REHASH-reloadable in HELP Jean 2026-07-18 17:02:01 +00:00
  • 8f19a94928
    operserv: NOTIFY honours a config exclude list so relay/pylinked clients cannot flood the feed Jean 2026-07-18 16:47:25 +00:00
  • c415117ec5
    operserv: add NOTIFY oper watch list emitting matched-user events to the staff feed Jean 2026-07-18 16:16:06 +00:00
  • 86b1aae686
    engine: rate-limit anonymous service commands so a bot cannot spam a service in a loop Jean 2026-07-18 05:02:40 +00:00
  • 321e03ac48
    link: set TCP_NODELAY on the uplink so an off-box services link never holds a reply tail Jean 2026-07-18 04:39:57 +00:00
  • ce9c802d0a
    nickserv: SNOTICE names the service once per reply then uses plain *** continuations, so a long HELP is not the service name on every line Jean 2026-07-18 03:46:10 +00:00
  • 6429b82fc4
    nickserv: SET SNOTICE — opt-in server-notice-style service replies (*** NickServ: ...) sourced from the server instead of the pseudoclient Jean 2026-07-18 03:40:22 +00:00
  • 3230cdd9db
    protocol: handle SQUERY like PRIVMSG so the NS/CS/OS/... service aliases work (proto 1206 delivers SQUERY raw instead of folding it to PRIVMSG) Jean 2026-07-18 03:24:58 +00:00
  • db3e818089
    db: a gossiped re-home of an account is only a takeover when the credential also changed, so an authority re-provision or migration re-home no longer spuriously logs the user out Jean 2026-07-18 03:04:50 +00:00
  • c64c3820a7
    protocol: verify echos pseudoclients request servprotect (+k, by name from CAPAB USERMODES) so they cannot be killed by operators; warn if service_modes lacks it Jean 2026-07-18 02:38:32 +00:00
  • 2f70b0c133
    protocol: verify echo ircd module dependencies from CAPAB MODULES at link, warning per-feature if one is missing rather than failing silently Jean 2026-07-18 02:22:43 +00:00
  • 0ca06247f8
    protocol: read CASEMAPPING from CAPAB and verify it matches echos ascii identity folding, warning on mismatch instead of silently desyncing Jean 2026-07-18 01:58:49 +00:00
  • e206f4edbb
    operserv: REDACT deletes a message by its msgid (draft/message-redaction), relayed server-sourced so no ircd oper privilege is needed Jean 2026-07-18 01:23:37 +00:00
  • e6f05a3ede
    protocol: learn channel-mode arity + prefix modes (incl custom Y/ojoin) from CAPAB CHANMODES; services MODE uses the authoritative set Jean 2026-07-18 01:15:23 +00:00
  • d313ca3523
    chanserv: LEVELS grants a capability (op/topic/invite/access) to an access tier and above, additive so it never locks anyone out Jean 2026-07-18 01:05:58 +00:00
  • 0c3e09ea00
    operserv: SPAMFILTER — persisted content filters pushed to the ircd m_filter via metadata, re-asserted at burst Jean 2026-07-18 00:04:24 +00:00
  • 9908548978
    chanserv: reuse echo_api chanmode_takes_param in the MODE extban gate instead of a less-complete local copy Jean 2026-07-17 22:52:31 +00:00
  • 8c77016aed
    helpserv: HELP EXTBANS lists the network live extban set with a friendly example for each Jean 2026-07-17 22:23:54 +00:00
  • 7f5b37efd6
    log the extban policy at startup (all offered, or the restricted set) Jean 2026-07-17 22:07:54 +00:00
  • 77d09c4bdc
    akick: accept a matching extban only the ircd knows (ircd-enforced +b), reject acting extbans with a clear reason Jean 2026-07-17 22:01:32 +00:00
  • c990eb1e1e
    extban: learn the ircd live set from CAPAB EXTBANS and validate AKICK/MODE against what it actually offers Jean 2026-07-17 21:47:02 +00:00
  • da94142bad
    chanserv: hold MODE ban/except/invex extbans to the [extban] enabled policy, matching AKICK Jean 2026-07-17 21:33:00 +00:00
  • 74a983467c
    akick: match the server and fingerprint extbans from the SERVER name and ssl_cert metadata the s2s stream carries Jean 2026-07-17 21:23:25 +00:00
  • f7c38cedad
    chanserv: full AKICK extban registry, [extban] enabled gate, passive extbans pushed as channel bans for the ircd to enforce Jean 2026-07-17 21:06:14 +00:00
  • 9a197fca3d
    db: one timestamp for a ban/account's logged event and in-memory record, so a peer replaying it converges (two now() calls could straddle a second) Jean 2026-07-17 20:38:50 +00:00
  • 47dfa76fd5
    engine: a takeover keeps the account's founded channels (the account still exists) — only a genuine drop or expiry releases them Jean 2026-07-17 20:23:51 +00:00
  • 426fc694a2
    akick: match extbans (account/realname/realmask/unauthed) using the ident, real host and real name the UID carries but was discarding Jean 2026-07-17 19:47:34 +00:00
  • bc4fada354
    api: type GroupServ flags (GroupFlag/GroupFlags via a shared flag_set! macro); delete the stringly apply_flags Jean 2026-07-17 18:47:08 +00:00
  • 2a12ebd6e3
    api: typed Flag/Flags bitset for channel access (mirrors Privs); level_caps resolves every level through it, collapsing 40 lines to 5 Jean 2026-07-17 18:30:45 +00:00
  • 65323caaeb
    chanserv: FLAGS maps sop/halfop presets to flag letters (oa=+ao), fixing privilege escalation when editing a HOP/SOP entry Jean 2026-07-17 18:14:58 +00:00
  • 5dcd216eeb
    api: ordered Rank enum (founder>admin>op>halfop>voice) replaces the coarse u8 access rank, so PEACE distinguishes every tier Jean 2026-07-17 17:33:53 +00:00
  • f2ba876ce4
    botserv: bots join +ao (protected admin + op), keeping op alongside protect Jean 2026-07-17 17:11:25 +00:00
  • 73467b91ca
    botserv: bots join channels as protected admins (+a) so ordinary ops can't kick or deop them Jean 2026-07-17 16:52:00 +00:00
  • e2330c56ff
    chanserv: SOP protect (+ao) and founder owner (+qo) with standard ~ & @ prefix tiers Jean 2026-07-17 16:10:36 +00:00
  • b5aef650f2
    chanserv: all op-and-above tiers grant +o for a single @ prefix; tier distinction stays in the access list Jean 2026-07-17 15:58:11 +00:00
  • 2f6fd41465
    chanserv: SOP protect tier over AOP (+ao), founder owner (+qo); resolve op access by capability not mode string Jean 2026-07-17 15:43:16 +00:00
  • c8106035df
    chanserv: give SOP/AOP/HOP/VOP four distinct access tiers matching Anope, classified by capability Jean 2026-07-17 14:54:36 +00:00
  • f5c976eb56
    api/gameserv: type email ExpiryTarget and chess Ending as enums (drop stringly returns) Jean 2026-07-17 14:15:39 +00:00
  • 2cdc7f820a
    chanserv/nickserv: resolve access level via caps, so FLAGS-set roles list correctly in ALIST and AOP/SOP/VOP Jean 2026-07-17 14:15:39 +00:00
  • 7a5f1502a4
    infoserv: type the news kind as an enum at the store boundary Jean 2026-07-17 13:53:53 +00:00
  • ee95225eaf
    operserv: OPER ADD rejects unknown privilege names instead of silently dropping them Jean 2026-07-17 13:53:53 +00:00
  • ef34c04c8d
    operserv: type the X-line kind as an enum at the command/store boundary, wire token in storage Jean 2026-07-17 13:47:10 +00:00
  • 2c8ba4460d
    forbid: type the FORBID kind as an enum at the store boundary, string only in storage Jean 2026-07-17 13:26:16 +00:00
  • 1fb3615b7e
    auth: warn on unknown [[oper]] privilege names instead of silently dropping them Jean 2026-07-17 12:45:41 +00:00
  • cfe05481d6
    gameserv: model the domain with enums (GameType/Side/Status/Outcome/Board), zero-alloc grid moves Jean 2026-07-17 12:20:26 +00:00
  • 108c15e95a
    gameserv: ranked ladder rides StatServ's persisted counters, no separate store Jean 2026-07-17 12:07:35 +00:00
  • b763eab9ed
    gameserv: use the GamesServ nick, GameServ is reserved on the network Jean 2026-07-17 11:51:35 +00:00
  • a7a37d1277
    gameserv: server-authoritative ttt/c4/chess referee with ranked ladder Jean 2026-07-17 11:24:13 +00:00
  • e3b83f4a92
    operserv: REHASH announces the reload in the log channel via DebugServ Jean 2026-07-17 11:02:29 +00:00
  • 64b675e61f
    operserv: REHASH reloads config live without a restart Jean 2026-07-17 10:46:12 +00:00
  • e112b8737c
    auth: deferred login is authoritative in the account map, not just ircd metadata Jean 2026-07-17 03:30:47 +00:00
  • 75c6537532
    standard replies: emit IRCv3 FAIL/WARN/NOTE for service errors, config-gated Jean 2026-07-17 02:53:48 +00:00
  • fcca7ac12b
    chanserv: channel seen checks channel membership, not global presence Jean 2026-07-17 01:54:55 +00:00
  • 66eb644a07
    chanserv: channel-scoped seen with last message, replied in-channel Jean 2026-07-17 01:41:47 +00:00
  • f2774f13fe
    services: all pseudo-clients join a configurable channel (default #services) Jean 2026-07-17 01:23:18 +00:00
  • 657154e268
    services: assigned bot fronts channel modes, not chanserv Jean 2026-07-17 01:17:29 +00:00
  • 96654b5e5a
    groupserv: gate channel access on the c flag, document !group Jean 2026-07-17 01:00:27 +00:00
  • b87a0c56a2
    services: label as network service in whois Jean 2026-07-17 00:30:51 +00:00
  • 952078aa7e services: configurable pseudo-client umodes Jean 2026-07-17 00:01:24 +00:00
  • eaf3111917 whois: answer IDLE for pseudo-clients Jean 2026-07-16 23:22:35 +00:00
  • a60a6df19d debugserv: sourced auth feed, drop icons Jean 2026-07-16 23:08:30 +00:00
  • 9bdda721f3 keycard: redeem website login keycards over SASL Jean 2026-07-16 22:27:59 +00:00
  • 38d12cb0bb debugserv: live services activity feed Jean 2026-07-16 22:27:35 +00:00
  • 6c403c01b0 services: configurable pseudo-client host Jean 2026-07-16 19:15:48 +00:00
  • 2f9790feac
    auth: offload IDENTIFY + SASL PLAIN verify off the engine lock Jean 2026-07-16 19:04:18 +00:00
  • 63fc2fb2c0
    grpc: run authenticate's PBKDF2 verify off the engine lock Jean 2026-07-16 18:40:30 +00:00
  • 2e92f75a90
    chanserv: PEACE never blocks acting on yourself (self-deop) Jean 2026-07-16 17:59:00 +00:00
  • 1f6a11dba2
    statserv: persist per-channel activity across restart too Jean 2026-07-16 17:50:11 +00:00
  • 8a9b6a37ca
    botserv: op assigned bots on join; statserv: persist counters across restart Jean 2026-07-16 17:32:20 +00:00
  • fd455922a5
    link: redact credentials from debug logs, default to info Jean 2026-07-16 17:03:32 +00:00
  • 34bc7d69f0
    grpc: provision sets the verifier on an already-existing account Jean 2026-07-16 16:53:06 +00:00
  • d1685f7e53
    inspircd: include membid in outbound IJOIN Jean 2026-07-16 16:36:19 +00:00