]> jfr.im git - solanum.git/blame - NEWS.md
check bans and quiets for cmode -n/nonmember PRIVMSG
[solanum.git] / NEWS.md
CommitLineData
7e5f0af6
AC
1# News
2
6ec9c49f 3This is solanum 1.0-dev.
212380e3
AC
4See LICENSE for licensing details (GPL v2).
5
6ec9c49f
EK
6## solanum-1.0
7
8Includes changes from charybdis-4.1.3-dev.
9
faf98b8e
EK
10**This release includes breaking changes from charybdis 4.x.** Please pay close attention to
11bolded warnings in the full release notes below.
6ec9c49f
EK
12
13### build
14- Add `--with-asan` to configure to produce an ASan instrumented build
15
16### server protocol
06c53095
EK
17- **Breaking:** Don't implicitly abort SASL when connection registration handshake completes;
18 requires updating atheme to include https://github.com/atheme/atheme/pull/833.
6ec9c49f
EK
19- OPER is now propagated globally, as :operator OPER opername privset
20
21### user
22- **Breaking:** invite-notify is now enabled by loading the invite-notify extension
23- Prioritise older, more important client capabilities for clients that can only accept
24 one line of CAP LS
25- Add the solanum.chat/realhost vendor capability (provided by extensions/cap\_realhost)
26- Add the solanum.chat/identify-msg vendor capability (provided by extensions/identify\_msg)
27- Server-side aliases preserve protocol framing characters
28- Add the +G user mode for soft callerid (implicitly allow users with a common channel)
29- /invite no longer punches through callerid
30- invite-notify now works
31- Rejectcached users are now sent the reason of the ban that caused their reject in most cases
32- Rejectcache entries expire when their corresponding K-lines do
33- One-argument /stats and zero-argument /motd are no longer ratelimited
34- Channel bans don't see through IP spoofs
35- Global /names now respects userhost-in-names
36- The `$j` extban is no longer usable inside ban exceptions
faf98b8e
EK
37- TLSv1 connections are accepted. They can still be disabled using OpenSSL config if you don't
38 want them. TLSv1 existing is not thought to be a threat to up-to-date clients.
6ec9c49f
EK
39
40### oper
41- **Breaking:** Kick immunity for override is now its own extension, override\_kick\_immunity
42- **Breaking:** /stats A output now follows the same format as other stats letters
43- **Breaking:** helpops now uses +h instead of +H
faf98b8e 44- **Breaking:** sno\_whois and the spy\_ extensions have been removed
d04ed5c5 45- **Breaking:** Using /wallops now requires the oper:wallops privilege instead of oper:massnotice
6ec9c49f
EK
46- Opers now have their privset (identified by name) on remote servers
47- Oper-only umodes are refreshed after rehash and /grant
48- Extension modules can be reloaded
49- Override no longer spams about being enabled/disabled. It continues to spam on each use.
50- Add /testkline, which has the same syntax as /testline but doesn't check if the mask is ilined
51- /privs is now remote-capable and can respond with more than one line
52- Most commands now respect oper hiding
53- Massnotice (notice/privmsg to $$.../$#...) now alerts opers
54- Massnotice no longer imposes any restrictions on the target mask
55- /kline and /dline are hardened to invalid inputs
56- K/D-lines are more consistent about checking for encoded ipv4-in-ipv6 addresses
57- Add extensions/drain to reject new connections
58- Add extensions/filter to filter messages, parts and quits with a Hyperscan database
59- Add extensions/sasl\_usercloak to interpolate SASL account names into I-line spoofs
60
61### conf
62- **Breaking:** Completely overhaul oper privs. All privset configs will need to be rewritten.
63 See reference.conf for details.
64- Add the `kline_spoof_ip` I-line flag to make any spoof opaque to K-line matching
65- Add general::hide\_tkline\_duration to remove durations from user-visible ban reasons
66- Add general::hide\_opers, which behaves as if all opers have oper:hidden
67- Add general::post\_registration\_delay
68- Add general::tls\_ciphers\_oper\_only to hide TLS cipher details in /whois
69- Add channel::opmod\_send\_statusmsg to send messages allowed by +z to @#channel
70- Add class::max\_autoconn, with the behaviour of class::max\_number for servers prior to
71 charybdis 4
faf98b8e
EK
72- Add `secure {}` blocks. Networks listed in a secure block gain +Z and can match `need_ssl` I-
73 and O-lines.
6ec9c49f
EK
74- Remove general::kline\_delay
75- If m\_webirc is loaded, connections that try to use a webirc auth block as their I-line will
76 be disconnected on registration
77
78### misc
79- **Breaking:** WEBIRC now processes the "secure" option as specified by IRCv3. Web gateways that
80 do not set this option will need to be updated or their connections will show as insecure.
faf98b8e 81- Successfully changing IP with WEBIRC now drops an identd username
6ec9c49f
EK
82
83### code
84- Channel lists are now kept sorted. A for-loop macro, `ITER_COMM_CHANNELS`, is introduced to
85 efficiently compare two such lists.
86
87
efe1f312
SA
88## charybdis-4.1.2
89
90### user
6ec9c49f 91- src/s\_user.c: don't corrupt usermodes on module unload/reload
efe1f312 92
17776e52
SA
93## charybdis-4.1.1
94
95### security
96- Fix an issue with the PASS command and duplicate server instances.
97
98### misc
99- Fix connection hang with blacklist/opm when ident is disabled.
100- Improve SASL CAP notification when the services server disconnects.
101- MbedTLS: Support ChaCha20-Poly1305 in default cipher suites.
102
8fad9421
SA
103## charybdis-4.1
104
105### misc
106- SCTP is now supported for server connections (and optionally, user connections)
107
108## charybdis-4.0.1
109
110### server protocol
111- SJOIN messages were being constructed in a 1024 byte buffer and truncated to 512 bytes
112 when sending. This caused channels with more than 50 users to fail to propagate all of
113 them during a net join.
114
115## charybdis-4.0
df317d70
AC
116
117### build
118- Build system has been converted to libtool + automake for sanity reasons.
15b0093d
AC
119- The compile date is now set at configure time rather than build time, allowing for
120 reproducible builds. (#148, #149)
121- Support for GNUTLS 3.4 has been added.
df317d70 122
0cc93ead
AC
123### user
124- Import the ability to exceed MAXCHANNELS from ircd-seven.
15b0093d
AC
125- Implement IRCv3.2 enhanced capability negotiation (`CAP LS 302`).
126- Implement support for receiving and sending IRCv3 message tags.
127- Implement IRCv3.2 capabilities: (#141)
128 - account-tag
129 - echo-message
5462fb6e 130 - invite-notify
15b0093d
AC
131 - sasl
132 - server-time
133- SASL: certificate fingerprints are now always sent to the SASL agent, allowing for
134 the certificate to be used as a second authentication factor.
0cc93ead
AC
135
136### oper
137- Merge several features from ircd-seven:
138 - Implement support for remote DIE/RESTART.
139 - Implement support for remote MODLOAD et al commands.
140 - Add the GRANT command which allows for temporarily opering a client.
141 - Implement the hidden oper-only channel modes framework.
142 - Implement a channel mode that disallows kicking IRC operators (+M).
143- Enhance the oper override system, allowing more flexibility and detail
144 in network-wide notices.
4d1e4989
EM
145- DNS, ident, and blacklist lookups have been moved to a dedicated daemon known
146 as authd. Some cosmetic changes to blacklist statistics and rejection notices
147 have resulted.
0ed0a9fe
EM
148- An experimental OPM scanner has been added to authd. Plaintext SOCKS4,
149 SOCKS5, and HTTP CONNECT proxies can be checked for.
150- The LOCOPS command has been moved from core to an extension.
d1478ff2 151- All core modules in charybdis have descriptions, which are shown in MODLIST.
d1478ff2 152- Suffixes should not be used when doing /MODLOAD, /MODUNLOAD, /MODRELOAD, etc.
0cc93ead 153
b28cccb7
AC
154### misc
155- Support for WebSocket has been added, use the listen::wsock option to switch
156 a listener into websocket mode.
157
0cc93ead
AC
158### conf
159- Add the ability to strip color codes from topics unconditionally.
4d1e4989 160- The obsolete hub option from server info has been removed.
0cc93ead 161
aba90ea5
EM
162### docs
163- The documentation has been cleaned up; obsolete files have been purged, and
0ed0a9fe 164 files have been renamed and shuffled around to be more consistent.
aba90ea5 165
0cc93ead 166### code
e791dc6d
EM
167- `common.h` is gone. Everything useful in it was moved to `ircd_defs.h`.
168- `config.h` is gone; the few remaining knobs in it were not for configuration
169 by mere mortals, and mostly existed as a 2.8 relic. Most of the knobs live in
170 `defaults.h`, but one is well-advised to stay away unless they know exactly
171 what they are doing.
172- A new module API has been introduced, known as AV2. It includes things such as
173 module datecodes (to ensure modules don't fall out of sync with the code),
174 module descriptions, and other fun things.
175- Alias and module commands are now in m_alias and m_modules, respectively, and
176 can be reloaded if need be. For sanity reasons, m_modules is a core module,
177 and cannot be unloaded.
0ed0a9fe
EM
178- irc_dictionary and irc_radixtree related functions are now in librb, and
179 prefixed accordingly. Typedefs have been added for consistency with existing
180 data structures. For example, now you would write `rb_dictionary *foo` and
181 `RB_DICTIONARY_FOREACH`.
182- C99 bools are now included and used in the code. Don't use ints as simple true
183 or false flags anymore. In accordance with this change, the `YES`/`NO` and
184 `TRUE`/`FALSE` macros have been removed.
e791dc6d
EM
185- Return types from command handlers have been axed, as they have been useless
186 for years.
aba90ea5
EM
187- libratbox has been renamed to librb, as we have diverged from upstream long
188 ago.
0cc93ead
AC
189- Almost all 2.8-style hashtable structures have been moved to dictionaries or
190 radix trees, resulting in significant memory savings.
191- The block allocator has been disabled and is no longer used.
15b0093d
AC
192- The ratbox client capabilities have been ported to use the ircd capabilities
193 framework, allowing for modules to provide capabilities.
194- Support for restarting ssld has been added. ssld processes which are still
195 servicing clients will remain in use, but not service new connections, and
196 are garbage collected when they are no longer servicing connections.
197- Support for ratbox-style 'iodebug' hooks has been removed.
1e706d5a
AC
198- New channel types may be added by modules, see `extensions/chantype_dummy.c`
199 for a very simple example.
0cc93ead 200
7e5f0af6 201## charybdis-3.5.0
72cc5a99 202
7e5f0af6 203### server protocol
72cc5a99
JT
204- Fix propagation of ip_cloaking hostname changes (only when setting or
205 unsetting the umode after connection).
206- Fix a remote-triggerable crash triggered by the CAPAB parsing code.
207- As per the TS6 spec, require QS and ENCAP capabilities.
1c38b9de 208- Require EX and IE capabilities (+e and +I cmodes).
72cc5a99 209- Check that UIDs start with the server's SID.
7e5f0af6
AC
210
211### user
72cc5a99
JT
212- Allow mode queries on mlocked modes. In particular, allow /mode #channel f
213 to query the forward channel even if +f is mlocked.
214- Strip colours from channel topics in /list.
215- If umode +D or +g are oper-only, don't advertise them in 005.
6a49a343 216- If MONITOR is not enabled, don't advertise it in 005.
72cc5a99
JT
217- Add starttls as per ircv3.
218- Abort a whowas listing when it would exceed SendQ, which would previously
219 disconnect the user.
220- Reject nicks with '~' in them, rather than truncating at the '~'.
221- Remove CHARSET=ascii from ISUPPORT
222- Use the normal rules for IP visibility in /whowas.
1c38b9de
JT
223- Cmode +c now strips '\x0F' (^O, formatting off), fixing weird rendering in
224 some clients that internally use mIRC formatting such as highlighted
225 messages in HexChat.
226- Indicate join failure because of the chm_sslonly extension (cmode +S) using
227 the same 480 numeric as ircd-ratbox.
6a49a343
AC
228- Do not allow SASL authentication when the configured SASL agent is unavailable.
229- Automatically add unidentified users to the ACCEPT list when a user is set +R,
230 as we do when the user is set +g.
231- Implement IRCv3.2 capabilities:
232 - cap-notify
233 - chghost
234 - userhost-in-names
d4466030
AC
235- Implement the $&, $| and $m extban types:
236 - $& combines 1 or more child extbans as an AND expression
237 - $| combines 1 or more child extbans as an OR expression
238 - $m provides normal hostmask matching as an extban for the above
25eeb5ed
AC
239- Do not allow STARTTLS if a connection is already using TLS.
240- Display an operator's privilege set in WHOIS.
241- The $o extban now matches against privilege set names as well as individual
242 privileges. Privilege set names are preferred over individual privileges.
7e5f0af6
AC
243
244### oper
72cc5a99
JT
245- Fix a crash with /testline.
246- Complain to opers if a server that isn't a service tries to
247 SU/RSFNC/NICKDELAY/SVSLOGIN.
248- Turn off umode +p (override) when deopering.
249- Make listener error messages (e.g. port already in use) visible by default
250 instead of only on snomask +d and in ioerrorlog.
251- Remove snotes on +r about GET/PUT/POST commands ("HTTP Proxy disconnected").
252- Add DNSBL snotes on snomask +r.
7e5f0af6
AC
253
254### config
25eeb5ed
AC
255- Add hide_uncommon_channels extension to hide uncommon channel memberships in WHOIS,
256 like in ircd-seven.
72cc5a99
JT
257- Add chm_nonotice extension, cmode +T to reject notices.
258- Add restrict-unauthenticated extension, prevents unauthenticated users from
259 doing anything as channel operator.
260- Add no_kill_services extension, prevents local opers from killing services.
261- Allow matching specific replies of DNSBLs, using the new matches option.
262- Remove blowfish crypt since it has the BSD advertising clause.
263- Fix SHA256 ($5$) crypt.
1c38b9de
JT
264- Make the channel::channel_target_change option actually work (it used to be
265 always on).
6a49a343 266- SSL/TLS listeners now have defer_accept unconditionally enabled on them.
509088aa
AC
267- The method used for certificate fingerprints (CertFP) is now configurable.
268 SHA1, SHA256 and SHA512 are available options.
6dedd212
AC
269- The minimum user threshold for channels in default /list output is now
270 configurable.
7e5f0af6
AC
271
272### misc
72cc5a99
JT
273- Work around timerfd/signalfd brokenness on OpenVZ.
274- Fix a compilation issue in libratbox/src/sigio.c with recent glibc.
275- Extend documentation slightly.
276- Remove a BSD advertising clause that permission was granted to remove.
277- Add support for hooking PRIVMSG/NOTICE.
278- Reenable and fix the GnuTLS support.
6a49a343
AC
279- Add mbedTLS backend for SSL/TLS.
280- Remove EGD support.
72cc5a99
JT
281- Try other DNS servers if errors or corrupt replies are encountered.
282- Rename genssl.sh script to genssl.
283- Choose more secure SSL/TLS algorithms.
284- Fix reconnecting with SSL/TLS with some clients such as ChatZilla (see
285 https://bugzilla.mozilla.org/show_bug.cgi?id=858394#c34 for details.)
286- Improve error messages about the configuration file.
287- Fix a crash when compiled with recent clang on 32-bit systems.
288- Fix various memory leaks in rehash.
289- Fix various code quality issues.
1c38b9de
JT
290- Add --with-shared-sqlite to allow distribution packages to link to a shared
291 sqlite library. Using this is not recommended for on-server compilation.
6dedd212
AC
292- ISUPPORT tokens which are actually provided by modules have been moved to their
293 respective modules.
72cc5a99 294
7e5f0af6 295## charybdis-3.4.0
2080c943 296
7e5f0af6 297### server protocol
2080c943
JT
298- Allow overriding opers (with the new extension) to op themselves on channels.
299- Allow RSFNC to change a nickname's capitalization only.
300- Add channel ban forwarding <mask>$<channel> much like ircd-seven. Local use
301 of this is controlled by the channel::use_forward config option.
302- Add ENCAP TGINFO to propagate IP addresses that exceeded target change
303 limits (these get a lower limit when they reconnect).
7e5f0af6
AC
304
305### user
2080c943
JT
306- Consider bogus CTCP ACTION messages (without action text) CTCP (for
307 cmode +C).
308- Send ERR_TOOMANYCHANNELS for each channel join that fails due to channel
309 limits.
310- Add account-notify client capability to notify clients about logins and
311 logouts of users in common channels. See doc/account-notify.txt.
312- Add extended-join client capability to add account name and ircname to JOIN.
313- Add topic TS and channel TS constraints for /LIST (T<, T>, C<, C>
314 parameters as in some other servers).
315- Disallow wildcarded nicknames in "hunted" parameters like /stats and /motd.
316- Disallow mIRC italics in channel names when disable_fake_channels.
317- Add AUTHENTICATE EXTERNAL support, allows SASL authentication using a
318 certificate fingerprint.
319- Allow channel::kick_on_split_riding to protect channels with mlocked keys.
320- The NICKLEN token in 005 now only specifies the maximum usable nick length.
321 The MAXNICKLEN token specifies the maximum nick length any user can have.
322- Disallow $ in usernames as this may cause problems with ban forwarding.
323- Add an error message (numeric 743) if a ban mask is invalid.
324- Extract the underlying IPv4 address from 6to4 and Teredo IPv6 addresses.
325 Show it in a remote /whois and check channel bans, quiets, D:lines and
326 K:lines against it. Note that ban exceptions and auth{} blocks are not
327 checked.
328- Allow normal users to perform /privs on themselves, showing some privileges
329 from the auth{} block.
330- Add away-notify client capability, see doc/away-notify.txt.
331- Add rate limit for high-bandwidth commands, in particular /who <channel>.
332- Rate limit /away to help avoid flooding via away-notify.
333- Apply colour stripping (cmode +c) and CTCP checking (cmode +C) to messages
334 to @/+ channel as well.
335- Channel mode +c (and other places that disallow colour codes) now also strip
336 ASCII 4 (a different kind of colour code).
7e5f0af6
AC
337
338### oper
2080c943
JT
339- Add operspy for /list.
340- Add a server notice to snomask +b if a user exceeds target change limits.
341- Add missing server notice for kills from RSFNC and SVSLOGIN.
342- Add /stats C to show information about dynamically loaded server
343 capabilities.
7e5f0af6
AC
344
345### config
2080c943
JT
346- Add support for linking using SSL certificate fingerprints as the link
347 credential rather than the traditional password pair.
348- Add m_roleplay extension, provides various roleplay commands.
349- Add override extension, umode +p oper override for opers with oper:override
350 permission, with accountability notices and timeout. Note that opers cannot
351 op themselves if there are older servers on the network.
352- Add channel::disable_local_channels config option.
353- Add support for IPv6 DNSBLs. A new "type" option specifies the IP version(s)
354 for which each DNSBL should be checked.
355- Make flood control settings configurable by those who know exactly what they
356 are doing.
357- Add serverinfo::nicklen config option to limit the nick length for local
358 users. Different values of this option do not break the server protocol.
359- Add extb_usermode extension, $m:+-<modes> extban matching against umodes.
360- Extend extb_oper extension to allow matching against oper privileges.
361- Add m_remove extension, /remove command as in ircd-seven.
362- Add general::away_interval to allow configuring /away rate limiting.
363- Add listener::defer_accept to delay accepting a connection until the client
364 sends data. This depends on kernel support. It may break BOPM checking.
7e5f0af6
AC
365
366### misc
2080c943
JT
367- In mkpasswd, default to SHA512-based crypt instead of MD5-based crypt.
368- Add --with-custom-branding and --with-custom-version configure options to
369 help forks/patchsets distinguish themselves.
370- Change version control from Mercurial to GIT.
371- Ensure SIGHUP and SIGINT keep working after a SIGINT restart.
372- Add --enable-fhs-paths configure option to allow installing into a more
373 FHS-like hierarchy.
72cc5a99 374- Remove broken GnuTLS support. SSL/TLS is now only provided using OpenSSL.
2080c943 375
7e5f0af6 376## charybdis-3.3.0
8a419c60 377
7e5f0af6 378### server protocol
8a419c60
SB
379- Add new BAN command, for propagated network-wide bans (K/X:lines and RESVs).
380 These will burst to new servers as they are introduced, and will stay in sync
381 across the whole network (new BAN capab).
382- Add new MLOCK command, to implement ircd-side channel mode locks. This allows
383 services to send out a list of mode letters for a given channel which may not
384 be changed, preventing mode fights between services and client bots (new MLOCK
385 capab).
7e5f0af6
AC
386
387### user
8a419c60
SB
388- New RPL_QUIETLIST(728) and RPL_ENDOFQUIETLIST(729) numerics are used for the
389 quiet (+q) list, instead of overloading the ban list numerics.
390- Users may no longer change the topic of a -t channel if they cannot send to
391 it.
392- Add help for EXTBAN, describing the syntax of extended bans in general, as
393 well as the most common types.
394- Changed AWAY messages are now propagated to other servers. Previously, AWAY
395 was only propagated when the user was not already away.
396- Channel mode +c (and other places that disallow colour codes) now also strip
397 ASCII 29 (mIRC 7 italics).
398- Add auto-accept for user mode +g (callerid): Messaging a user while set +g
399 will automatically add them to your accept list.
a48f183c
AC
400- Add target change for channels. It applies to unopped, unvoiced and unopered
401 users. This has the effect of stopping spambots which join, message and part
402 many channels at a time.
403- Show RPL_WHOISLOGGEDIN in /whowas as well as in /whois entries. This adds at
404 most an additional 0.5MB of memory usage.
7e5f0af6 405### config
8a419c60
SB
406- Add general::use_propagated_bans to switch the new BAN system on or off.
407- Add general::default_ident_timeout, to control the timeout for identd (auth)
408 connections.
a48f183c
AC
409- Add channel::channel_target_change to switch the new channel target change limits
410 on or off.
8a419c60
SB
411- Fix class::number_per_ident so that it also applies to connections without
412 identd.
a48f183c 413- Change the example sslport option to 6697, which is more standard than 9999.
7e5f0af6 414### misc
8a419c60
SB
415- The custom channel mode API has been rewritten, allowing these modules to work
416 correctly when reloaded, or loaded from the config file.
417- The EFNet RBL is now recommended, instead of DroneBL.
418- Remove the unsupported modules directory.
419- Numerous bug fixes and code cleanups.
a48f183c 420- In mkpasswd, default to MD5 crypt instead of insecure DES.
8a419c60 421
7e5f0af6 422## charybdis-3.2.0
1c5683de 423
7e5f0af6 424### server protocol
1c5683de
JT
425- Apply +z to messages blocked by +b and +q as well. (new EOPMOD capab)
426- Add new topic command ETB, allowing services to set topic+setter+ts always.
427 (new EOPMOD capab)
428- The slash ('/') character is now allowed in spoofs.
7e5f0af6
AC
429
430### user
1c5683de
JT
431- Add can_kick hook, based on the ircd-seven one.
432- Add cmode +C (no CTCP) from ircd-seven.
433- Flood checking has been reworked.
434- Fix op-moderate (cmode +z) for channel names with '@'.
435- Add CERTFP support, allowing users to connect with an SSL client
436 certificate and propagating the certificate fingerprint to other servers.
437 Services packages can use this to identify users based on client
438 certificates.
439- Maintain the list of recently used targets (for the target change
440 anti-spam system) in most-recently-used order, overwriting the least
441 recently used target with a new one. This should be friendlier to users
442 without giving spambots anything.
443- Do not require target change slots for replying to the last five users to
444 send a private message, notice or invite.
445- Apply target change restrictions to /invite.
446- Apply umode +g/+R restrictions to /invite, with the difference that
447 instead of sending "<user> is messaging you" the invite is let through
448 since that is just as noisy.
7e5f0af6
AC
449
450### oper
1c5683de
JT
451- Add /rehash throttles to clear throttling.
452- Send all server notices resulting from a remote /rehash to the oper.
453- '\s' for space is now part of the matching, not a substitution at xline
454 time, fixing various issues with it.
455- Display o:line "nickname" in oper-up server notices.
456- Fix sendq exceeded snotes for servers.
457- SCAN UMODES: default list-max to 500, like a global WHO.
458- Ignore directory names in MODRELOAD to avoid crashing if it is a core
459 module and the path is incorrect.
087a8399 460- Tweaks to spambot checks.
7e5f0af6
AC
461
462### config
1c5683de
JT
463- Add channel::only_ascii_channels config option to restrict channel names
464 to printable ascii only.
465- Add channel::resv_forcepart, forcibly parts local users on channel RESV,
466 default enabled.
7e5f0af6
AC
467
468### misc
1c5683de
JT
469- New mkpasswd from ircd-ratbox.
470- Check more system calls for errors and handle the errors.
471- Various ssld/libratbox bugfixes from ircd-ratbox. [some MERGED]
472- Fix fd passing on FreeBSD/amd64 and possibly Solaris/sparc. [MERGED]
473- Various documentation improvements. [some MERGED]
474- Fix some crash issues. [MERGED]
475- Add bandb from ircd-ratbox, which stores permanent dlines/klines/xlines/resvs
476 in an sqlite database instead of a flatfile and does the storage in a
b47da224
JT
477 helper process. Use bin/bantool -i to import your old bans into the
478 database.
1c5683de 479
7e5f0af6 480## charybdis-3.1.0
38423900
JT
481
482- Remove TS5 support. No TS5 servers are permitted in a network with
483 charybdis 3.1.0 or newer, except jupes.
07d86ced
JT
484- Replace oper flags by privilege sets (privsets). This adds an extra
485 level of indirection between oper flags and operator blocks. /stats O
486 (capital O) shows the configured privsets.
38423900
JT
487- Update libratbox and ssld from upstream and use it better.
488- Add auth_user to auth{}. This allows specifying a username:password instead
489 of just a password in PASS, so that a fixed user@host is not necessary
490 for a specific auth{} block.
491- Add need_ssl to auth{} and operator{}. This makes these blocks reject
492 the user if not connected via SSL.
493- Allow modules to provide simple channel modes without parameter.
494- Remove restrictions on CNAME in the resolver.
495- Make the resolver remember nonresponsive nameservers.
496- Move nick collision notices from +s to +k.
497- Add additional information to various server notices about server
498 connections.
07d86ced
JT
499- Show throttle information in /stats t.
500- Show rejectcache and throttle information in /testline.
501- Show oper reason in /testline.
502- Allow opers to see other users' umodes with /mode <nick>.
7714f92a 503- SCAN UMODES GLOBAL NO-LIST MASK <mask> is no longer an operspy command.
38423900
JT
504- Also apply floodcount to messages to remote clients (except services).
505- Remove user@server messages to local users. Sending such messages to
506 remote servers is still possible, for securely messaging pseudoservers
507 whether service{}'ed or not. The special oper-only syntax opers@server
508 remains as well.
509- Allow /list on a named +p channel. A full /list already included +p channels.
510- Add operspy /topic.
27cdbd27 511- For remote rehashes, send error messages to the requesting oper as well.
c029a164
JT
512- Disable autoconnect for a server with excessive TS delta.
513- Disallow invites to juped channels.
27cdbd27 514- Warn about certain duplicate and redundant auth blocks.
38423900
JT
515- Make PRIVMSG/NOTICE behave as CPRIVMSG/CNOTICE automatically if possible.
516- Allow +z messages from outside if a channel is -n.
517- Allow coloured part reasons in -c channels.
518- Add ircu-like WHOX support. This allows requesting specific information
519 in /who and allows obtaining services login name for all users in a
520 channel. XChat/Conspire use WHOX to update away status more efficiently.
07d86ced
JT
521- Allow opers and shide_exempt users to see hopcounts even if flatten_links
522 is on.
38423900
JT
523- Rework ip_cloaking.
524- Add the IP address to userlog, as in ircd-ratbox 3.0.
525- Split cidr_bitlen into cidr_ipv4_bitlen and cidr_ipv6_bitlen.
07d86ced
JT
526- Allow using ziplinks with SSL connections. This is not as efficient as
527 using OpenSSL's built in compression, but also works with older versions
528 of OpenSSL.
c029a164
JT
529- Fix an off by one error with zipstats processing, which could overwrite
530 a variable with NULL causing a crash on some systems.
38423900 531- Document some extensions in charybdis-oper-guide.
07d86ced 532- Add more server protocol documentation.
27cdbd27
JT
533- Add m_sendbans extension, SENDBANS command to propagate xlines and resvs
534 manually.
535- Add chm_sslonly extension, cmode +S for SSL/TLS only channels.
3ecb8b06 536- Add chm_operonly extension, cmode +O for IRCop only channels.
27cdbd27 537- Add chm_adminonly extension, cmode +A for server admin only channels.
38423900
JT
538- Various code cleanups.
539
7e5f0af6 540## charybdis-3.0.4
38423900
JT
541
542- Fix a crash on certain recent versions of Ubuntu.
543- Allow 127.x.y.z for DNSBL replies instead of just 127.0.0.x.
544- Various documentation improvements.
545
7e5f0af6 546## charybdis-3.0.3
38423900
JT
547
548- Fix IPv6 D:lines
549- Fix rejectcache and unknown_count.
550- Fix genssl.sh.
551- Fix ident for SSL/TLS connections.
552- Fix SSL/TLS bugs for servers with more than about 100 connections.
553- Small bugfixes.
554
7e5f0af6 555## charybdis-3.0.2
38423900
JT
556
557- Improve OLIST extension error messages.
558- Improve some kline error checking.
559- Avoid timing out clients if we are still waiting for a DNSBL lookup.
560- Fix resolver hangs with epoll.
561- Fix compilation without zlib.
562
7e5f0af6 563## charybdis-3.0.1
d99faa42
JT
564
565- Fix occasional hung clients with kqueue.
566- Fix a rare ssld crash.
567- Fix a bug that could cause incorrect connect failure reasons to be
568 reported.
c75eb8da 569- Make the IRCd work on MacOS X again.
d99faa42 570
7e5f0af6 571## charybdis-3.0.0
aa218c5b 572
509090fe
JT
573- Port the IRCd to libratbox, which has improved our portability and allows
574 us to reuse low-level code instead of maintaining our own.
575- Change configuration of maximum number of clients to ircd-ratbox 3 way.
576- Add adminwall from ircd-ratbox, as an extension.
577- Add client and server-to-server SSL, read example.conf for setup.
578- Replace servlink with ssld (also for ziplinks).
579- A new extban, $z, has been added for ssl users (extensions/extb_ssl.so).
7f9626ff 580- A new compatibility channel mode, +R, has been added, it sets
509090fe
JT
581 +q/-q $~a (extensions/chm_operonly_compat.so). This is similar to
582 the +R seen in ircd-seven.
ce56b91d 583- A new compatibility channel mode, +S, has been added, it sets
509090fe 584 +b/-b $~z (extensions/chm_sslonly_compat.so).
7f9626ff 585- A new compatibility channel mode, +O, has been added, it sets
509090fe
JT
586 +iI/-iI $o (extensions/chm_operonly_compat.so).
587- Add remote D:lines. Note that these are not enabled by default.
588- Remove EFnet-style G:lines. Noone appears to use these.
589- Remove idle time checking (auto disconnecting users idle too long).
590- Display a notice to clients when the IRCd is shut down using SIGTERM.
591- Some error messages have been clarified to enhance usability.
592- Close the link to servers that send invalid nicks (e.g. nicklen mismatches).
593 Formerly the users were killed from the network.
594- Enable topicburst by default in connect{}.
595- Fix a potential desync which can happen with oper override.
596- Remove "deopped" flag (TS5 legacy).
597- Use 127.0.0.1 as nameserver if none can be found in /etc/resolv.conf.
598- Only accept 127.0.0.x as a dnsbl listing.
599- Change cloaking module (same as 2.2.1, different from 2.2.0).
600- Make some more server notices about failed remote connect attempts
601 network wide.
602- Make some server notices about flooders and TS delta network wide.
603- Remove redundant "<server> had been connected for <time>" server notice.
604- Add resv oper privilege to control /resv, /unresv and cmode +L and +P,
605 enabled by default.
606- Add mass_notice oper privilege to control global notices and /wallops,
607 enabled by default.
608- Rework unkline/undline/unxline/unresv so they show the exact item removed
609 and do not rehash bans.
610- Show opers a list of recently (<24hrs) split servers in /map.
611- Add /privs command, shows effective privileges of a client.
aa218c5b 612
7e5f0af6 613## charybdis-2.2.0
55da5539 614
f32e30dd 615- The I/O code has been reworked, file descriptor metadata is stored in a
f7b60293 616 hashtable and the maximum number of clients can now be set in ircd.conf.
0b15df83
JT
617- Improve error checking and error messages for kline/dline/xline/resv files.
618- Allow kline ipv6:address, unkline some.host and unkline ipv6:address
619 without *@.
620- Add accountability (wallops, log) to OKICK extension.
621- Add opernick to OPME/OMODE/OJOIN log messages.
622- Add use_forward option, allows disabling cmode +fFQ and umode +Q.
623- Add keyword substitution to DNSBL reasons, making it possible to show
624 things like the user's IP address in the reason.
625- Use sendto_one_notice() more.
626- Server notices about kills now include the victim's nick!user@host instead
627 of just nick.
628- Include real hostname in Closing Link message for unknown connections
629 that have sent USER, in particular banned users.
630- Add some documentation about the SASL client protocol.
631- Change spambot, flooder and jupe joiner notices from host to orighost.
632- Remove the last remains of server hostmasking (this made it possible to
633 have multiple servers with similar names appear as a single server).
634- Keep bitmasks of modularized umodes reserved forever to the letter,
635 avoiding problems when reloading umode modules in a different order.
636- Fix -logfile.
637- Update to the new revision (v8) of the TS6 spec, this fixes problems with
0af87e57
JT
638 joins reversing certain mode changes crossing them. This interoperates
639 with older versions.
0b15df83
JT
640- Put "End of Channel Quiet List" at the end of +q lists.
641- Fix invisible count getting desynched from reality if the act of opering
642 up sets -i or +i.
643- Don't leak auth{} spoofed IP addresses in +f notices.
644- Shorten quit/part/kick reasons to avoid quit reasons overflowing the
645 client exiting server notice (from TOPICLEN to 260).
646- Fix some cases where 10 char usernames lose their final character.
647- Move username check after xline and dnsbl checks, so it will not complain
648 to opers about clients who are xlined or blacklisted anyway (both of
649 which silently reject).
650- Remove invite_ops_only config option, forcing it to YES.
651- Allow /invite (but not invex) to override +r, +l, +j in addition to +i.
f7b60293
JT
652- Add several new extensions, such as createoperonly.
653- Merge whois notice extensions into one and move it from snomask +y to +W.
0b15df83 654
7e5f0af6 655## charybdis-2.1.2
212380e3
AC
656
657- Fix bug that could cause all hostmangled users to be exempted when a
658 single ban exception existed on a channel.
659- Tweak \s code a little.
660- Add a minor clarification to the SGML docs.
661- Avoid truncation in ip_cloaking (by removing components on the other side).
662 Note that this may cause channel +bqeI modes set on such very long hosts
663 to no longer match.
664
7e5f0af6 665## charybdis-2.1.1
212380e3
AC
666
667- Search the shortest list (user's/channel's) when looking up channel
668 memberships.
669- Make the SID-collision notice look right under all conditions.
670- Move kills from services from +s to +k snomask.
671- When no_tilde is present on an auth{} block, check the non-tilde version
672 of the user@host against k:lines as well.
673- Put full reason in the SQUIT reason when a server is rejected for
674 insufficient parameters being passed to a command.
675- Don't redirect users to an existing domain, irc.fi.
676- Improve communication of servlink-related error messages.
677
7e5f0af6 678## charybdis-2.1.0
212380e3 679
7f9626ff 680- Our official website is now http://www.ircd-charybdis.org/.
212380e3
AC
681- Make RPL_ISUPPORT (005 numeric) modularizable.
682- Also do forwarding if the channel limit (+l) is exceeded.
683- Don't count opers on service{} servers in /lusers.
684- Allow servers to send to @#chan and +#chan.
685- Allow +S clients (services) to send to channels and @/+ channels always.
686- Allow normal match() on IP address also in /masktrace.
687- Add new testmask from ratbox 2.2. Allows matches on nick, ip and gecos
688 in addition to user and host, and is fully analogous to masktrace.
689 The numeric has changed from 724 to 727 and fields in it have changed.
690- Show IP addresses to opers in /whowas.
691- Add extb_extgecos extban option ($x:nick!user@host#gecos), from sorcery
692 modules.
693- Add extb_canjoin extban option ($j:#channel), matches if the user is banned
694 from the other channel.
695- Allow opers to /who based on realhost.
696- Allow opers to /masktrace, /testmask based on realhost.
697- Add general::operspy_dont_care_user_info, limits operspy accountability to
698 channel-related information.
699- Make host mangling more reliable.
700- Prevent ban evasion by enabling/disabling host mangling.
701- Add EUID, sends real host and services account in the same command as other
702 user information.
703- Make it possible to send CHGHOST without ENCAP (fixes problems with old
704 services).
705- Allow service{} servers to manipulate the nick delay table (for "nickserv
706 enforcement", aka SVSHOLD).
707- Send server notices about connections initiated by remote opers network wide.
708- Fix too early truncation of JOIN channel list.
709- Make the newconf system available to modules.
710- Add /stats s to the hurt module to list active hurts.
711- Add general::servicestring, shown in /whois for opered services (+oS).
712- Show real host/IP behind dynamic spoof in /whois to the user themselves
713 and opers.
714- Document option to disable nick delay.
715- Improve logging of server connections.
716- Clean up handling of hostnames in connect blocks.
717- Remove support for resolving ip6.int, people should be using ip6.arpa.
718- Unbreak --disable-balloc (useful for debugging with tools like valgrind).
719- Make Solaris 10 I/O ports code compile.
720- Add WEBIRC module to allow showing the real host/IP of CGI:IRC users.
721- Comment out blacklist{} block in example confs, as AHBL requires
722 notification before use.
723- Fix some bugs relating to the resolver.
724
7e5f0af6 725## charybdis-2.0.0
212380e3
AC
726
727- Replace ADNS with a new smaller resolver from ircu and hybrid.
728- Make services shortcuts (/chanserv etc) configurable in ircd.conf.
729- Add extban: extensible +bqeI matching via modules. Syntax is
730 $<type>[:<data>]. By default no modules are loaded.
731- Add DNS blacklist checking.
732- Change operator{} block user@host from host to orighost. This means that
733 services/+h spoofs do not work in operator{} blocks; auth{} spoofs still
734 work. Check your operator{} blocks!
735- Split contrib/ into extensions/ and unsupported/.
736- Change CHGHOST do show the change to all other clients on common channels
737 with quit/join/mode.
738- Add /rehash nickdelay to clear out the nickdelay tables.
739- Glines are now disabled in the example confs.
740- Show more error messages on stderr.
741- Add OMODE command to extensions/ for easier oper mode hacking.
742- Add HURT system to extensions/; this shuns clients matching certain host/ip
743 unless and until they identify to services. Mainly intended for SorceryNet.
744- Show SASL success and failure counts in /stats t.
745- Allow more frequent autoconnects to servers.
746- Messaging services by nickname no longer uses target change slots.
747- Only accept SASL from servers in a service{} block.
748- New auth{} flag need_sasl to reject users who haven't done SASL
749 authentication.
750- Expand blah.blah and blah:blah to *!*@... instead of ...!*@* for bans
751- Don't allow opers to fake locops/operwall to +w.
752- Documentation updates.
753- Many bugfixes.
754
7e5f0af6 755## charybdis-1.1.0
212380e3
AC
756
757- Implement SAFELIST.
758- Incorporate ircu's match() algorithm.
759- Improve usermode modularization.
760- Seperate server notices into a seperate snomask, freeing up many
761 usermodes to be used.
762- Add support for SIGNON originating from Hyperion2.
763- Modularize many server notices into seperate modules.
764- Add hooks for can_join and can_create_channel.
765- Add support for SASL authentication.
766- Add introduce_user hook for adding new messages when a user is bursted.
767- Move a large part of the ircd into libcharybdis.
768- Don't complain "unknown user mode" if a user tries to unset
769 a mode they do not have access to.
770- Update our challenge specification to the challenge implementation in
771 ratbox 2.2 for interoperability.
772- Make +f notices network-wide (local host, global host,
773 global user@host, local class), other notices tied to +f remain local.
774- Allow ENCAP REALHOST outside of netburst.
775- Add general::global_snotices option to make server notices be
776 network-wide or not.
777- Add sno_farconnect.c to contrib, provides farconnect support.
778 Could be useful for BOPM.
779- Add sno_routing.c which displays information about netsplits, netjoins
780 and the clients affected by them.
781- Add CHANTRACE and TRACEMASK commands from ratbox 3.0
782- Use IsOperAdmin() instead of IsAdmin() when sending admin-only messages,
783 that way hidden admins get them too.
784- Add m_error to core_module_table, somehow it was missing.
785- Correct a format string bug that occurs when a read error is
786 received.
787- Add some logging in places where we drop servers and only notify
788 server operators.
789- Track hostmask limits based on a client's original host, if
790 available.
791- Move HIDE_SPOOF_IPS into the general {} block in ircd.conf
792
7e5f0af6 793## charybdis-1.0.3
212380e3
AC
794
795- Fix /invite UID leak. (Found by logiclrd@EFnet.)
796- Incorporate ratbox bugfixes for the MONITOR system.
797- Made show_ip() less braindead.
798- Show real errno if we fail to connect to a server.
799- Don't disclose server IP's when a connection fails.
800- Do not show the channels a service is sitting in.
801- Reverted the aline code from hybrid-7.2
802- Make sure TS6 services are recognized properly if connected remotely.
803- Tweak something in services support for cyrix boxes.
804
7e5f0af6 805## charybdis-1.0.2
212380e3
AC
806
807- Fix propagation of an empty SJOIN (permanant channels).
808- Fix an exploit involving a malformed /trace request.
809- Don't display a blank RPL_WHOISCHANNELS in a remote whois request.
810- Allow modules to provide new usermodes.
811- On a nickname collision, change the collided nick to their unique ID,
812 if general::collision_fnc is enabled in the config.
813- Don't allow UID lookups in /monitor + and /monitor s
814- Fix a garbage issue with channel mode +j.
815- Apply proper capability flags to the proper server in me_gcap().
816- Use find_named_person() instead of find_person() in a nick collision.
817- Prevent UID disclosure in cmode setting.
818- Prevent UID disclosure to remote clients in /kick.
819- Do not allow users to query via /whois <server> <UID>.
820- Don't allow local users to use UID's in local usermode changes.
821- Propagate +q lists on netjunction.
822- Clear +q lists on a lowerTS SJOIN.
823- Ported a generic k/d/x-line parser from hybrid-7.2 which resulted in
824 duplicate code reduction.
825- Fix linebuf raw code to not truncate lines longer than 512 bytes;
826 improves ziplink reliability on net junction.
827- Use find_named_person() vs find_person() in services alias code.
828- Fix issue where channel forwarding token can be lost on net junction.
829- Fix empty channel desync issues involving +P.
830- Remove unused non-ENCAP CHGHOST support.
831- Use TS6 form for SQUIT wallops.
832- Propagate nickname changes for remote clients in TS6 form if possible,
833 even if sent in TS5 format.
834- Only clear oper_only_umodes for local clients on deoper.
835
7e5f0af6 836## charybdis-1.0.1
212380e3
AC
837
838- Display logged in status on non-local clients too.
839- Documentation updates
840- Fix a bug with forward target authorization.
841- Fix a bug with mode propagation (+Q/+F).
842- Change ERR_NOSUCHNICK to ERR_SERVICESOFFLINE in services aliases.
843- Add remote rehashing.
844- Document service { } blocks (u:lines on ircu).
845- Document identify_service and identify_command in reference.conf.
846
7e5f0af6
AC
847## charybdis-1.0
848
212380e3 849- Implement channel mode +L for channel list limit exemptions.
6ec9c49f 850- Implement channel mode +P primarily as a status mode, permanant
212380e3
AC
851 channel -- this is usually enforced via services registrations.
852- Change behaviour of /stats p: now displays all staff members instead
853 of local ones only.
854- Make oper_list global, add local_oper_list for local traffic.
855- Strip control codes from parts and quits.
856- Add channel mode +c which strips control codes from messages sent to
857 the channel.
858- Add channel mode +g which enables free use of the /invite command.
859- Add channel mode +z which sends rejected messages to channel ops.
860 Could be useful for Q&A sessions or other similar events.
861- Add channel quietmasks. These are recommended over the use of channel
862 bans used to remove a user's ability to participate in the channel.
863- Add channel join throttling mode, +j. Used to throttle channel join
864 traffic, i.e. join/part flood attacks. Syntax: +j <joins>:<timeslice>
865- Improvements to channel_modes(), from shadowircd -- allows for
866 better construction of the mode string.
867- Use the undernet throttle notice instead of bancache message when
868 dealing with rejected clients. (stolen from ircu2.10.12)
869- Add channel forwarding, via channel mode +f, behaves similarly to
870 dancer-ircd version.
871- Update example.conf to reflect AthemeNET changes. Original ratbox
872 config is now reference.conf.
873- Services account names are now tracked globally.
874- Add channel mode +Q which disables the effects of channel forwarding
875 on a temporary basis.
876- Add channel mode +F which allows anybody to disable forwarding target
877 authorisation, voluntarily on their channels.
878- Make wallops behave like normal wallops.
879- Add services aliases: /ns, /cs, /os, /nickserv, /chanserv, /operserv.
880- Add simple hack that enables use of server password for automatic
881 identify.