|
|
068924de86
|
asn: core ASN lookup module (native MMDB); match connect classes + security groups on origin AS
|
2026-08-28 11:53:55 +00:00 |
|
|
|
cc13ce02c7
|
geoip: read city + ASN from MaxMind dbs; add geo (country/city + ASN) to connect snote, WHOIS and GEOIP
|
2026-08-28 09:49:18 +00:00 |
|
|
|
f0c4a1cc87
|
snoop: show transport (websocket) + TLS version/cipher in the client-connecting snote
|
2026-08-28 00:40:54 +00:00 |
|
|
|
106bda2e8b
|
watchdog: name the slow event/command in the slow-event snote and [watchdog] warning
|
2026-08-27 16:32:48 +00:00 |
|
|
|
533666dba0
|
link: announce a member's IJOIN status modes to local channel members so a rejoining services bot shows opped
|
2026-08-26 17:46:37 +00:00 |
|
|
|
8df756b038
|
docs/ircv3: document draft/event-playback, draft/webpush (WEBPUSH + VAPID ISUPPORT)
|
2026-08-26 11:46:15 +00:00 |
|
|
|
f7ff5c3f86
|
readme: list draft/event-playback + draft/webpush under IRCv3 features
|
2026-08-26 11:43:59 +00:00 |
|
|
|
6ecb6f3d84
|
modules: draft/webpush — RFC 8291 (aes128gcm) + RFC 8292 (VAPID ES256) Web Push; WEBPUSH REGISTER/UNREGISTER, VAPID ISUPPORT, off-core delivery, HKDF/round-trip tested
|
2026-08-25 22:31:11 +00:00 |
|
|
|
6bb8ccd8ee
|
modules: draft/event-playback — record JOIN/PART/QUIT/NICK/MODE/TOPIC/KICK into CHATHISTORY, replayed only for cap clients (event_playback config, default on)
|
2026-08-25 22:17:26 +00:00 |
|
|
|
9dcc269f45
|
readme: document server-wide message localization (locale/lang catalogs, fr+es)
|
2026-08-25 14:47:02 +00:00 |
|
|
|
04671733d2
|
i18n: localize the client-facing Closing-link ERROR wrapper via trf (fr, es); QUIT-broadcast reasons stay canonical for S2S
|
2026-08-25 14:35:13 +00:00 |
|
|
|
9b51db07f5
|
i18n: sweep all remaining dynamic prose (oper commands, XLINE/FILTER/DNSBL notices, whois/vhost/knock/dcc/title/reputation/tline/rmode, hash, rename) through trf; +\xNN catalog escape; fr+es now 236 entries each
|
2026-08-25 14:30:29 +00:00 |
|
|
|
ef96bcbd06
|
i18n: localize the snotice/announce path — translate at deliver_server_notice chokepoint; rehash, connect/exit, oper-up, login, channel & ojoin notices via trf (fr, es)
|
2026-08-25 13:04:31 +00:00 |
|
|
|
6f8ff39f99
|
i18n: localize the welcome burst (001-003/251) via trf() dynamic templates (fr, es)
|
2026-08-25 12:18:17 +00:00 |
|
|
|
560c860f1d
|
i18n: server-wide locale via lang/<code>.conf catalogs (fr, es); numeric prose auto-translated at the chokepoint, en = zero-cost passthrough
|
2026-08-25 12:14:35 +00:00 |
|
|
|
5914a6d993
|
websocket: collapse v4-mapped proxy peer so ws_proxyranges matches and X-Real-IP is honored
|
2026-08-25 03:15:28 +00:00 |
|
|
|
935f22f2f2
|
accounts: oper snotice on post-connect login ('Client X is now logged in as Y')
|
2026-08-25 02:21:58 +00:00 |
|
|
|
37436d0306
|
snoop: drop needless clones in the connect notice (hold the &User borrow)
|
2026-08-25 00:12:23 +00:00 |
|
|
|
6e8d6c31fb
|
snoop: connect notice includes port, sni and account (present fields only)
|
2026-08-25 00:06:22 +00:00 |
|
|
|
a587d25873
|
docs: document the brand block (per-SNI server/network identity) in the example config
|
2026-08-24 23:29:45 +00:00 |
|
|
|
b6ada854cc
|
brand: per-SNI server/network identity (welcome, ISUPPORT NETWORK, numeric source prefix)
|
2026-08-24 23:29:15 +00:00 |
|
|
|
f36f803d42
|
whois: show client-cert fingerprint (276) to everyone, not just opers/self
|
2026-08-24 22:25:08 +00:00 |
|
|
|
009bea734a
|
whois: show negotiated TLS version/group/cipher in 671; sslgroup crate reads the KEX group
|
2026-08-24 21:45:46 +00:00 |
|
|
|
85eb8218f0
|
tls: openssl backend offers TLS 1.3 via mozilla_intermediate_v5 (was capped at 1.2)
|
2026-08-24 20:38:58 +00:00 |
|
|
|
51602737e2
|
tls: rustls backend offers TLS 1.3 (was TLS 1.2 only), preferred over 1.2
|
2026-08-24 20:30:54 +00:00 |
|
|
|
d0fdb2e8be
|
docs: add Community section (irc.devtronic.pro #echoiRCd support channel) to README
|
2026-08-24 19:47:06 +00:00 |
|
|
|
f066fa0b5a
|
docs: document the block config format + mkpasswd/checkconfig/rehash CLIs in README and configuration.md
|
2026-08-24 19:13:45 +00:00 |
|
|
|
8d48900ae3
|
config: derive Eq on the block-parser token enum
|
2026-08-23 13:01:05 +00:00 |
|
|
|
1166c49443
|
config: checkconfig CLI + Config::dump; tls block carries sni/handshake_timeout
|
2026-08-23 12:42:30 +00:00 |
|
|
|
b11382bc1e
|
config: block-format example documenting every option; cloak/uline block fields + example parse guard
|
2026-08-23 12:28:19 +00:00 |
|
|
|
2f6ce36af0
|
config: add brace/block format (translated to flat, both formats supported)
|
2026-08-23 12:18:10 +00:00 |
|
|
|
e8d16a1f96
|
config: accept oper password=<hash> named token; keep positional password back-compat
|
2026-08-23 03:11:32 +00:00 |
|
|
|
c2e0a9eeb4
|
mkpasswd: 'echoircd mkpasswd [cost]' CLI hashes a stdin password with bcrypt for oper blocks
|
2026-08-23 02:55:14 +00:00 |
|
|
|
12a4ddb749
|
rehash: fall back to a /proc scan for the running server when the pidfile is stale, and self-heal it
|
2026-08-23 02:40:53 +00:00 |
|
|
|
3052e47212
|
docs: document the pidfile option in the example config
|
2026-08-23 02:35:32 +00:00 |
|
|
|
34342e110f
|
rehash: write the pidfile only when configured + CLI verifies a live echoircd, so a stale/clobbered pid can't misfire
|
2026-08-23 02:17:44 +00:00 |
|
|
|
a7ae0d86a9
|
rehash: 'echoircd rehash' CLI + SIGHUP reload the running config in place via a pidfile
|
2026-08-23 02:10:41 +00:00 |
|
|
|
42fe82556b
|
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 |
|
|
|
5c286a94cb
|
conn_waitpong: exempt loopback (per ipv4/ipv6) and per-class from the registration ping cookie
|
2026-08-22 23:49:46 +00:00 |
|
|
|
70a4ecb0a0
|
core: add oper MODULES command (702/703) listing loaded modules; module.list RPC already existed
|
2026-08-22 17:36:46 +00:00 |
|
|
|
4357a59c7a
|
filter: pluggable pattern engine (glob|regex) selected by filter_engine config; regex/glob backends behind a Matcher trait
|
2026-08-22 17:36:46 +00:00 |
|
|
|
73817eddde
|
whois: show a remote user's actual server description in 312, not the literal "remote user"
|
2026-08-21 23:43:51 +00:00 |
|
|
|
ddb6214b47
|
chanlog: post log lines as a channel PRIVMSG from the server, not a NOTICE
|
2026-08-21 17:41:00 +00:00 |
|
|
|
b8e24e2071
|
chanlog: filter each log channel by snomask category; repeatable so different snomasks route to different channels
|
2026-08-21 17:11:27 +00:00 |
|
|
|
7cb9256ff5
|
xline: tell a banned user when the ban expires, not just why
|
2026-08-21 15:18:23 +00:00 |
|
|
|
745ddd540e
|
xline: show a timed ban's remaining time in the removal notice
|
2026-08-21 15:10:27 +00:00 |
|
|
|
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 |
|
|
|
6301b64509
|
server: extract civil() so iso_time and long_date share one date conversion instead of duplicating it
|
2026-08-21 14:52:49 +00:00 |
|
|
|
b693c5e5df
|
dnsbl: per-zone name/action/duration/reason with %ip%; XLINE notice shows duration + absolute expiry
|
2026-08-21 14:14:17 +00:00 |
|
|
|
1824af5d90
|
signore: persist per-account via services metadata — push on edit, replay on login
|
2026-08-20 15:40:19 +00:00 |
|