We're pleased to be publishing the release candidate for 2.4.0 (the official release should follow in a week or so).
This release includes a number of exciting enhancements and fixes. Here are some highlights:
- Support for migrating an Anope or Atheme database to Oragono (#1042)
- A pluggable system for validating external IPs, e.g., via DNSBLs (#68, thanks @moortens!)
- draft/relaymsg, a new draft extension simplifying bridging with other chat systems (thanks @jlu5!)
- New moderation tools:
+u
("auditorium", #1300),+U
("op-moderated", #1178),+M
("moderated-registered", #1182, thanks @ajaspers!), and+b m:
(an extban for muting users, #307)
This release includes changes to the config file format, including one breaking change: roleplay.enabled
now defaults to false (the new recommended default) instead of true when unset. Other config changes are backwards compatible and do not require updating the file before upgrading.
This release includes a database change. If you have datastore.autoupgrade
set to true
in your configuration, it will be automatically applied when you restart Oragono. Otherwise, you can update the database manually by running oragono upgradedb
(see the manual for complete instructions).
Many thanks to @ajaspers, @jesopo, @moortens, and @RunBarryRun for contributing patches, to @csmith for contributing code reviews, to @ajaspers, @Amiga60077, @bogdomania, @csmith, @edk0, @eskimo, @jlu5, @jwheare, @KoraggKnightWolf, @Mitaka8, @mogad0n, @RyanSquared, and @vertisan for reporting issues and helping test, and to our translators for contributing translations.
Config changes
- Added
server.ip-cloaking.enabled-for-always-on
, which generates a unique hostname for each always-on client. The recommended default value of this field istrue
(#1312) - Added
server.coerce-ident
; if this is set to a string value, all user/ident fields supplied by clients are ignored and replaced with this value. The recommended default value of this field is~u
. This simplifies bans. (#1340) - Simplified the config file format for email verification into a new
accounts.nick-reservation.email-verification
section. The old format (callbacks
) is still accepted (#1075) - The recommended value of
roleplay.enabled
is nowfalse
; this field now defaults to false when unset (#1240, #1271) - Added
server.relaymsg
section for configuring the newdraft/relaymsg
capability; added the newrelaymsg
operator capability for exercising it (#1119) - Added
allow-environment-overrides
config variable, allowing config options to be overridden by environment variables. See the manual for more details. (#1049, thanks @csmith!) - Added
server.ip-check-script
for configuring IP check plugins (#68, #1267, thanks @moortens!) - Added
max-concurrency
restriction toaccounts.auth-script
section. The recommended default value is64
(0
or unset disable the restriction) (#1267) - Added
accounts.registration.allow-before-connect
; this allows the use of the newREGISTER
command before connecting to the server (#1075) - Added
hidden
option in operator blocks: if set totrue
, operator status is hidden from commands likeWHOIS
that would otherwise display it (#1194) - Added
accounts.nick-reservation.forbid-anonymous-nick-changes
, which forbids anonymous users from changing their nicknames after initially connecting (#1337, thanks @Amiga60077!) - Added
channels.invite-expiration
, allowing invites to+i
channels to expire after a given amount of time (#1171)
Security
- Added
/NICKSERV CLIENTS LOGOUT
command for disconnecting clients connected to a user account (#1072, #1272, thanks @ajaspers!) - Disallowed the use of service nicknames during roleplaying (#1240, thanks @Mitaka8!)
- Improved security properties of
INVITE
for invite-only channels, including anUNINVITE
command (#1171)
Removed
- Removed the request queue system for HostServ, i.e., the
REQUEST
,APPROVE
, andREJECT
subcommands ofHOSTSERV
(#1346)
Fixed
PONG
is now sent with the server name as the first parameter, matching the behavior of other ircds (#1249, thanks @jesopo!)- It was not possible to set or unset the
+T
no-CTCP user mode; this has been fixed (#1299, thanks @mogad0n!) - Fixed edge cases with
/NICKSERV SAREGISTER
of confusable nicknames (#1322, thanks @mogad0n!) - Fixed websocket listeners with proxy-before-TLS enabled closing on invalid PROXY lines (#1269, thanks @RyanSquared!)
- Fixed error responses and history for SANICK (#1277, #1278, thanks @eskimo!)
- Ensured that stored realnames of always-on clients are deleted during account unregistration (#1330)
- Whitespace is now stripped from KLINEs (#1327, thanks @mogad0n!)
- Fixed incorrect
LUSERS
counts caused by KLINE (#1303, thanks @mogad0n!) CHATHISTORY
queries for invalid channels now get an empty batch instead of aFAIL
(#1322)fakelag.messages-per-window = 0
no longer causes a panic (#861, thanks @vertisan!)
Added
- Added
oragono importdb
command for importing a converted Anope or Atheme database; see the manual for details (#1042) - Added support for the new draft/relaymsg extension, which simplifies bridging IRC with other protocols relaymsg (#1119, thanks @jlu5!)
- Added
ip-check-script
, a scripting API for restricting access by client IP. We provide oragono-dnsbl, an external script that can query DNSBLs for this purpose (#68, #1267, thanks @moortens!) - Added channel mode
+u
. This is an "auditorium" mode that prevents unprivileged users from seeing each other'sJOIN
andPART
lines. It's useful for large public-announcement channels, possibly in conjunction with+m
(#1300) - Added channel mode
+U
. This is an "op-moderated" mode; messages from unprivileged users are sent only to channel operators, who can then choose to grant them+v
. (#1178) - Added a mute extban
+b m:
: users matching the ban expression (e.g.,+b m:*!*@j6dwi4vacx47y.irc
) will be able to join the channel, but will be unable to speak. (#307) - Added support for the new draft/register extension, which exposes a cleaner account registration API to clients (#1075, thanks @edk0!)
- Added a
379 RPL_WHOISMODES
line to theWHOIS
response, making it easier for operators to see other users' modes (#769, thanks @Amiga60077 and @KoraggKnightWolf!) - Added
/CHANSERV DEOP
command for removing channel operator privileges (#361, thanks @RunBarryRun!) - Added
r
flag to/WHO
responses for registered nicknames (#1366, thanks @Amiga60077!)
Changed
- Always-on clients now receive a user/ident of
~u
by default, instead of~user
; this can be changed by setting thecoerce-ident
field (#1340) /NICKSERV SUSPEND
has been modified to take subcommands (ADD
,DEL
, andLIST
); theADD
subcommand now accepts time duration and reason arguments. See/msg NickServ HELP SUSPEND
for details. (#1274, thanks @mogad0n!)- Only the channel founder can kick the channel founder, regardless of either party's modes (#1262)
/NICKSERV SESSIONS
is now/NICKSERV CLIENTS LIST
, but the old command is still accepted (#1272, thanks @ajaspers!)- Improved
SETNAME
behavior for legacy clients (#1358, thanks @KoraggKnightWolf!) - Halfops can set the channel topic (#1306)
- Full client certificates are now passed to auth scripts. This allows for more flexible checks on certificates, including verification against an internal CA (#414)