|
|
c2b70f5004
|
nickserv/chanserv: reject look-alike / mixed-script registration names (homoglyph impersonation guard)
CI / check (push) Successful in 3m56s
|
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
CI / check (push) Successful in 4m0s
|
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
CI / check (push) Successful in 4m4s
|
2026-07-18 20:21:30 +00:00 |
|
|
|
76be932131
|
test: add an ignored engine throughput benchmark (botserv hot path + append/fsync write path)
CI / check (push) Successful in 3m56s
|
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)
|
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
CI / check (push) Successful in 4m1s
|
2026-07-18 19:18:17 +00:00 |
|
|
|
617d3c7966
|
operserv: NOTIFY feed uses labelled fields (IP/DNS/Account/Server) and Service:verb
CI / check (push) Successful in 4m5s
|
2026-07-18 17:50:32 +00:00 |
|
|
|
4247df8844
|
operserv: notify_exclude gains server:<glob> to mute a whole relay server from the feed
CI / check (push) Successful in 4m1s
|
2026-07-18 17:35:04 +00:00 |
|
|
|
4d327c3f47
|
operserv: NOTIFY lines carry real IP, rdns, login and origin server for the oper feed
CI / check (push) Successful in 4m4s
|
2026-07-18 17:28:07 +00:00 |
|
|
|
2fb1970030
|
docs: notify_exclude comments cover channel masks
CI / check (push) Successful in 4m3s
|
2026-07-18 17:20:24 +00:00 |
|
|
|
29bedf0358
|
operserv: notify_exclude also mutes #channel masks, so a broad watch can skip specific channels
CI / check (push) Has been cancelled
|
2026-07-18 17:19:48 +00:00 |
|
|
|
bbdb34aa77
|
operserv: NOTIFY allows broad masks (it only observes) so a #* watch can match all joins
CI / check (push) Successful in 4m4s
|
2026-07-18 17:14:13 +00:00 |
|
|
|
1d30c9cfe3
|
operserv: note the log channel and notify exclude list are REHASH-reloadable in HELP
CI / check (push) Successful in 4m11s
|
2026-07-18 17:02:01 +00:00 |
|
|
|
8f19a94928
|
operserv: NOTIFY honours a config exclude list so relay/pylinked clients cannot flood the feed
|
2026-07-18 16:47:25 +00:00 |
|
|
|
c415117ec5
|
operserv: add NOTIFY oper watch list emitting matched-user events to the staff feed
|
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
|
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
|
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
CI / check (push) Successful in 3m47s
|
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
CI / check (push) Successful in 3m47s
|
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)
CI / check (push) Successful in 3m43s
|
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
CI / check (push) Successful in 3m44s
|
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
CI / check (push) Successful in 3m45s
|
2026-07-18 02:41:03 +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
CI / check (push) Successful in 3m49s
|
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
CI / check (push) Successful in 4m31s
|
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
CI / check (push) Successful in 4m6s
|
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
|
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
|
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
CI / check (push) Successful in 3m56s
|
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
|
2026-07-17 22:52:31 +00:00 |
|
|
|
8c77016aed
|
helpserv: HELP EXTBANS lists the network live extban set with a friendly example for each
|
2026-07-17 22:23:54 +00:00 |
|
|
|
7f5b37efd6
|
log the extban policy at startup (all offered, or the restricted set)
|
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
|
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
|
2026-07-17 21:47:02 +00:00 |
|
|
|
da94142bad
|
chanserv: hold MODE ban/except/invex extbans to the [extban] enabled policy, matching AKICK
|
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
|
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
|
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)
CI / check (push) Successful in 3m55s
|
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
CI / check (push) Failing after 3m56s
|
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
CI / check (push) Successful in 4m0s
|
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
CI / check (push) Successful in 4m0s
|
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
CI / check (push) Successful in 4m0s
|
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
CI / check (push) Successful in 4m2s
|
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
CI / check (push) Successful in 3m59s
|
2026-07-17 17:33:53 +00:00 |
|
|
|
f2ba876ce4
|
botserv: bots join +ao (protected admin + op), keeping op alongside protect
CI / check (push) Successful in 3m53s
|
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
CI / check (push) Successful in 3m50s
|
2026-07-17 16:52:00 +00:00 |
|
|
|
e2330c56ff
|
chanserv: SOP protect (+ao) and founder owner (+qo) with standard ~ & @ prefix tiers
CI / check (push) Successful in 4m12s
|
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
CI / check (push) Successful in 4m12s
|
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
CI / check (push) Successful in 3m59s
|
2026-07-17 15:43:16 +00:00 |
|
|
|
c8106035df
|
chanserv: give SOP/AOP/HOP/VOP four distinct access tiers matching Anope, classified by capability
CI / check (push) Successful in 3m55s
|
2026-07-17 14:54:36 +00:00 |
|
|
|
f5c976eb56
|
api/gameserv: type email ExpiryTarget and chess Ending as enums (drop stringly returns)
CI / check (push) Successful in 3m53s
|
2026-07-17 14:15:39 +00:00 |
|