Releases: ergochat/ergo
v2.3.0-rc2 - a second release candidate
Pre-release testing of 2.3.0-rc1 revealed serious bugs (#1251, #1252) that were introduced during the 2.3.0 development window. Accordingly, we're publishing a second release candidate for 2.3.0 that fixes these issues. We expect the official release of 2.3.0 next week; thanks for your patience.
Thanks to @mogad0n for help testing 2.3.0-rc1!
v2.3.0-rc1 - a bugfix release
We're pleased to be publishing the release candidate for 2.3.0 (the official release should follow in a week or so).
This release contains primarily bug fixes, but includes one notable feature enhancement: a change contributed by @hhirtz that updates the draft/rename
specification to correspond to the new (soon-to-be) published draft.
Many thanks to @hhirtz for contributing patches, to @bogdomania, @jesopo, @kylef, @Mitaka8,and @mogad0n for reporting issues and helping test, and to our translators for contributing translations.
This release includes no changes to the config file format or database changes.
Config changes
- The recommended value of
lookup-hostnames
for configurations that cloak IPs (as has been the default since 2.1.0) is nowfalse
(#1228)
Security
- Mitigated a potential DoS attack on websocket listeners (#1226)
Removed
- Removed
/HOSTSERV OFFERLIST
and related commands; this functionality is superseded by IP cloaking (#1190)
Fixed
- Fixed an edge case in handling no-op nick changes (#1242)
- Fixed edge cases with users transitioning in and out of always-on status (#1218, #1219, thanks @bogdomania!)
- Fixed a race condition related to the registration timeout (#1225, thanks @hhirtz!)
- Fixed messages to services and
*playback
not receiving echo-message when applicable (#1204, thanks @kylef!) - Fixed a help string (#1237, thanks @Mitaka8!)
Changed
Internal
v2.2.0 - WHOX and other delights
We're pleased to announce Oragono 2.2.0, a new stable release.
This release contains several notable enhancements, as well as bug fixes:
- Support for tracking seen/missed messages across multiple devices (#843)
- WHOX support contributed by @jesopo (#938)
- Authentication of users via external scripts (#1107)
Many thanks to @clukawski and @jesopo for contributing patches, to @ajaspers, @bogdomania, @csmith, @daurnimator, @emersonveenstra, @eskil, @eskimo, Geo-, @happyhater, @jesopo, @jwheare, @k4bek4be, @KoraggKnightWolf, @kylef, @LukeHoersten, @mogad0n, r3m, @RyanSquared, savoyard, and @wrmsr for reporting issues and helping test, and to our translators for contributing translations.
This release includes changes to the config file format, including one breaking change: timeout
is no longer an acceptable value of accounts.nick-reservation.method
. (If you were using it, we suggest strict
as a replacement.) All other changes to the config file format are backwards compatible and do not require updating before restart.
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).
Removed
- Timeout-based nickname enforcement has been removed. We recommend
strict
as the default enforcement method. Users who configuredtimeout
for their account will be upgraded tostrict
. Withaccounts.login-via-pass-command
enabled, clients lacking support for SASL can authenticate via thePASS
(server password command) by sendingaccount_name:account_password
as the server password. (#1027) - Native support for LDAP has been removed. LDAP is now supported via the external oragono-ldap plugin; see its repository page for details. (#1142, #1107)
Config changes
- Added
server.enforce-utf8
, controlling whether the server enforces that messages be valid UTF-8; a value oftrue
for this is now the recommended default (#1151) - Added
history.tagmsg-storage
for configuring which TAGMSG are stored in history; if this is not configured, TAGMSG will not be stored (#1172) - All TLS certificate fingerprints in the config file are now named
certfp
instead offingerprint
(the old name offingerprint
is still accepted) (#1050, thanks @RyanSquared!) - Added
accounts.auth-script
section for configuring external authentication scripts (#1107, thanks @daurnimator!) - Removed
accounts.ldap
section for configuring LDAP; LDAP is now available via the auth-script plugin interface (#1142) - Added
defcon
operator capability, allowing use of the new/DEFCON
command (#328) - Default
awaylen
,kicklen
, andtopiclen
limits now reflect the 512-character line limit (#1112, thanks @k4bek4be!) - Added
extjwt
section for configuring the EXTJWT extension (#948, #1136) login-via-pass-command: true
is now a recommended default (#1186)
Added
- Added support for WHOX, contributed by @jesopo (#938, thanks!)
- Added support for tracking missed messages across multiple devices; see the "history" section of the manual for details (#843, thanks @jwheare and @wrmsr!)
- Added
/NICKSERV SUSPEND
and/NICKSERV UNSUSPEND
commands, allowing operators to suspend access to an abusive user account (#1135) - Added support for external authentication systems, via subprocess ("auth-script") invocation (#1107, thanks @daurnimator!)
- Added the
/DEFCON
command, allowing operators to respond to spam or DoS attacks by disabling features at runtime without a rehash. (This feature requires that the operator have a newly defined capability, nameddefcon
; this can be added to the appropriate oper blocks in the config file.) (#328, thanks @bogdomania!) - Added support for the EXTJWT draft extension, allowing Oragono to be integrated with other systems like Jitsi (#948, #1136)
- Services (NickServ, ChanServ, etc.) now respond to CTCP VERSION messages (#1055, thanks @jesopo!)
- Added
BOT
ISUPPORT token, plus aB
flag for bots in352 RPL_WHOREPLY
(#1117) - Added support for the
+T
no-CTCP user mode (#1007, thanks @clukawski!) - Added support for persisting the realname of always-on clients (#1065, thanks @clukawski!)
- Added a warning on incorrect arguments to
/NICKSERV REGISTER
(#1179, thanks @LukeHoersten!) /NICKSERV SET PASSWORD
now sends a warning (#1208)
Fixed
- Fixed channels with only invisible users not being displayed in
/LIST
output (#1161, thanks @bogdomania!) - Fixed
INVITE
not overriding a+b
ban (#1168) - Fixed incorrect
CHGHOST
lines during authentication with/NICKSERV IDENTIFY
under some circumstances (#1108, thanks Geo-!) - Fixed incorrect
CHGHOST
lines sent to users during connection registration (#1125, thanks @jesopo!) - Fixed a number of issues affecting the
znc.in/playback
capability, in particular restoring compatibility with Palaver (#1205, thanks @kylef!) - Fixed interaction of auto-away with the regular
/AWAY
command (#1207) - Fixed an incorrect interaction between always-on and
/NS SAREGISTER
(#1216) - Fixed a race condition where nicknames of signed-out users could remain in the channel names list (#1166, thanks @eskimo!)
- Fixed the last line of the MOTD being truncated in the absence of a terminating
\n
(#1167, thanks @eskimo!) - Fixed
away-notify
lines not being sent on channel JOIN (#1198, thanks savoyard!) - Fixed incorrect source of some nickserv messages (#1185)
- Fixed idle time being updated on non-PRIVMSG commands (thanks r3m and @happyhater!)
- Fixed
/NICKSERV UNREGISTER
and/NICKSERV ERASE
not deleting stored user modes (#1157)
Security
- Connections to an STS-only listener no longer reveal the exact server version or server creation time (#802, thanks @csmith!)
Changed
/DLINE
now operates on individual client connections (#1135)- When using the multiclient feature, each client now has its own independent
MONITOR
list (#1053, thanks @ajaspers!) MONITOR L
now lists the nicknames in the form they were originally sent withMONITOR +
, without casefolding (#1083)- We now send the traditional
445 ERR_SUMMONDISABLED
and446 ERR_USERSDISABLED
in response to theSUMMON
andUSERS
commands (#1078, thanks @KoraggKnightWolf!) - RPL_ISUPPORT parameters with no values are now sent without an
=
(#1067, #1069, #1091, thanks @KoraggKnightWolf and @jesopo!) - TAGMSG storage is now controlled via the
history.tagmsg-storage
config block (#1172) /NICKSERV CERT ADD
with no argument now adds the user's current TLS certificate fingerprint, when applicable (#1059, thanks @emersonveenstra!)
Internal
v2.2.0-rc1 - WHOX and other delights
We're pleased to be publishing the release candidate for 2.2.0 (the official release should follow in a week or so).
This release contains several notable enhancements, as well as bug fixes:
- Support for tracking seen/missed messages across multiple devices (#843)
- WHOX support contributed by @jesopo (#938)
- Authentication of users via external scripts (#1107)
Many thanks to @clukawski and @jesopo for contributing patches, to @ajaspers, @bogdomania, @csmith, @daurnimator, @emersonveenstra, @eskimo, Geo-, @happyhater, @jesopo, @jwheare, @k4bek4be, @KoraggKnightWolf, @LukeHoersten, @mogad0n, r3m, @RyanSquared, and savoyard for reporting issues and helping test, and to our translators for contributing translations.
This release includes changes to the config file format, including one breaking change: timeout
is no longer an acceptable value of accounts.nick-reservation.method
. (If you were using it, we suggest strict
as a replacement.) All other changes to the config file format are backwards compatible and do not require updating before restart.
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).
Removed
- Timeout-based nickname enforcement has been removed. We recommend
strict
as the default enforcement method. Users who configuredtimeout
for their account will be upgraded tostrict
. Withaccounts.login-via-pass-command
enabled, clients lacking support for SASL can authenticate via thePASS
(server password command) by sendingaccount_name:account_password
as the server password. (#1027) - Native support for LDAP has been removed. LDAP is now supported via the external oragono-ldap plugin; see its repository page for details. (#1142, #1107)
Config changes
- Added
server.enforce-utf8
, controlling whether the server enforces that messages be valid UTF-8; a value oftrue
for this is now the recommended default (#1151) - Added
history.tagmsg-storage
for configuring which TAGMSG are stored in history; if this is not configured, TAGMSG will not be stored (#1172) - All TLS certificate fingerprints in the config file are now named
certfp
instead offingerprint
(the old name offingerprint
is still accepted) (#1050, thanks @RyanSquared!) - Added
accounts.auth-script
section for configuring external authentication scripts (#1107, thanks @daurnimator!) - Removed
accounts.ldap
section for configuring LDAP; LDAP is now available via the auth-script plugin interface (#1142) - Added
defcon
operator capability, allowing use of the new/DEFCON
command (#328) - Default
awaylen
,kicklen
, andtopiclen
limits now reflect the 512-character line limit (#1112, thanks @k4bek4be!) - Added
extjwt
section for configuring the EXTJWT extension (#948, #1136) login-via-pass-command: true
is now a recommended default (#1186)
Added
- Added support for WHOX, contributed by @jesopo (thanks!)
- Added support for tracking missed messages across multiple devices; see the "history" section of the manual for details (#843, thanks @jwheare and @wrmsr!)
- Added
/NICKSERV SUSPEND
and/NICKSERV UNSUSPEND
commands, allowing operators to suspend access to an abusive user account (#1135) - Added support for external authentication systems, via subprocess ("auth-script") invocation (#1107, thanks @daurnimator!)
- Added the
/DEFCON
command, allowing operators to respond to spam or DoS attacks by disabling features at runtime without a rehash. (This feature requires that the operator have a newly defined capability, nameddefcon
; this can be added to the appropriate oper blocks in the config file.) (#328, thanks @bogdomania!) - Added support for the EXTJWT draft extension, allowing Oragono to be integrated with other systems like Jitsi (#948, #1136)
- Services (NickServ, ChanServ, etc.) now respond to CTCP VERSION messages (#1055, thanks @jesopo!)
- Added
BOT
ISUPPORT token, plus aB
flag for bots in352 RPL_WHOREPLY
(#1117) - Added support for the
+T
no-CTCP user mode (#1007, thanks @clukawski!) - Added support for persisting the realname of always-on clients (#1065, thanks @clukawski!)
- Added a warning on incorrect arguments to
/NICKSERV REGISTER
(#1179, thanks @LukeHoersten!)
Fixed
- Fixed channels with only invisible users not being displayed in
/LIST
output (#1161, thanks @bogdomania!) - Fixed
INVITE
not overriding a+b
ban (#1168) - Fixed incorrect
CHGHOST
lines during authentication with/NICKSERV IDENTIFY
under some circumstances (#1108, thanks Geo-!) - Fixed incorrect
CHGHOST
lines sent to users during connection registration (#1125, thanks @jesopo!) - Fixed a race condition where nicknames of signed-out users could remain in the channel names list (#1166, thanks @eskimo!)
- Fixed the last line of the MOTD being truncated in the absence of a terminating
\n
(#1167, thanks @eskimo!) - Fixed
away-notify
lines not being sent on channel JOIN (#1198, thanks savoyard!) - Fixed incorrect source of some nickserv messages (#1185)
- Fixed idle time being updated on non-PRIVMSG commands (thanks r3m and @happyhater!)
- Fixed
/NICKSERV UNREGISTER
and/NICKSERV ERASE
not deleting stored user modes (#1157)
Security
- Connections to an STS-only listener no longer reveal the exact server version or server creation time (#802, thanks @csmith!)
Changed
/DLINE
now operates on individual client connections (#1135)- When using the multiclient feature, each client now has its own independent
MONITOR
list (#1053, thanks @ajaspers!) MONITOR L
now lists the nicknames in the form they were originally sent withMONITOR +
, without casefolding (#1083)- We now send the traditional
445 ERR_SUMMONDISABLED
and446 ERR_USERSDISABLED
in response to theSUMMON
andUSERS
commands (#1078, thanks @KoraggKnightWolf!) - RPL_ISUPPORT parameters with no values are now sent without an
=
(#1067, @1069, #1091, thanks @KoraggKnightWolf and @jesopo!) - TAGMSG storage is now controlled via the
history.tagmsg-storage
config block (#1172) /NICKSERV CERT ADD
with no argument now adds the user's current TLS certificate fingerprint, when applicable (#1059, thanks @emersonveenstra!)
Internal
v2.1.0 - websockets, fixes, polish
We're pleased to announce Oragono 2.1.0, a new stable release.
Since the release of 2.0.0 in March, a number of new communities and organizations have adopted Oragono as a communications tool. This new release incorporates many improvements and fixes derived from the experiences of real-world operators and end users. Highlights include:
- Native support for websockets contributed by @hhirtz, eliminating the need for a separate websockets-to-IRC proxy server
- Tighter control over the relationship between account names and nicknames, eliminating the need for extbans
- Support for sending account verification emails directly from Oragono, including DKIM signatures
Many thanks to @ajaspers and @hhirtz for contributing patches, to @ajaspers, @eklitzke, and @hhirtz for contributing code reviews, to @ajaspers, @bogdomania, @clukawski, Csibesz, @csmith, @eklitzke, @nxths, @hhirtz, @jesopo, @jlnt, @justjanne, @jwheare, @k4bek4be, @KoraggKnightWolf, @kula, @kylef, @Mitaka8, @petteri, @PizzaLover2007, @prawnsalad, @RyanSquared, savoyard, and @xPaw for reporting issues, and to @bogdomania, @boppy, Nuve, stickytoffeepuddingwithcaramel, and @vegax87 for contributing translations.
This release includes changes to the config file format, including one breaking change: support for server.ip-cloaking.secret-environment-variable
has been removed. (See below for instructions on how to upgrade if you were using this feature.) All other changes to the config file format are backwards compatible and do not require updating before restart.
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).
This release includes a change to the MySQL schema. This change will be applied automatically when you restart Oragono. It is fully backwards compatible (i.e., if it is necessary for you to downgrade Oragono back to 2.0.0, it will not be necessary to downgrade the schema).
Config Changes
- Added
websocket
attribute of individual listeners, and a newserver.websockets
section, for configuring websocket listeners. (#967, thanks @hhirtz!) - The recommended default is now to enable IP cloaking. In order to facilitate this, the cloaking secret is now stored in the database, instead of the config file. If you currently have a secret stored in the config file (as
server.ip-cloaking.secret
), it will be automatically imported into the database. If you were usingsecret-environment-variable
to distribute your cloaking secret, you can import it manually after restart using the new/HOSTSERV SETCLOAKSECRET
command. (#952) - Added
accounts.nick-reservation.force-nick-equals-account
, which ensures that logged-in clients are using their account name as their nickname. This eliminates the need for extbans and is a new recommended default. (#864) - Added
guest-nickname-format
andforce-guest-format
, which optionally add a prefix likeGuest-
to the nicknames of unauthenticated users (#749) - The recommended default is now to enable history storage and playback, with messages expiring after 7 days. (As with all changes in recommended config values, applying this to an existing config file requires explicitly changing the values.) (#1030)
- Added
history.retention
section for controlling new features related to history storage and deletion (#858) - The recommended default for
accounts.multiclient.always-on
is nowopt-in
(#919) - Added
accounts.default-user-modes
; the recommended default is now to set+i
on all users automatically (#942, thanks @ajaspers!) - Added
channels.list-delay
, allowing restrictions on channel listings as a defence against spambots (#964) - Added
accounts.multiclient.auto-away
, allowing always-on clients to be automatically marked as away when all their sessions disconnect - Added
accounts.throttling
as a global throttle on the creation of new accounts (#913) - New format for
accounts.callbacks.mailto
, allowing direct email sending and DKIM signing (#921) - Added
accounts.login-via-pass-command
, providing a new mechanism for legacy clients to authenticate to accounts by sendingPASS account:password
pre-registration (#1020) - Added
datastore.mysql.socket-path
, allowing MySQL connections over UNIX domain sockets (#1016, thanks savoyard and @ajaspers!) - Added
roleplay
section for controlling the server's roleplay features (#865) - The recommended default for
accounts.nick-reservation.allow-custom-enforcement
is nowfalse
(#918) - The recommended default is now to allow PROXY and WEBIRC lines from localhost (#989, #1011)
- Added
channels.registration.operator-only
, optionally restricting channel registrations to operators (#685) - Added
server.output-path
for controlling where the server writes output files (#1004) - Operator capability names prefixed with
oper:
have been normalized to remove the prefix (the old names are still respected in the config file) (#868) - The log category names
localconnect
andlocalconnect-ip
have been changed toconnect
andconnect-ip
respectively (the old names are still respected in the config file) (#940)
Security
- Fixed incorrect enforcement of ban/invite/exception masks under some circumstances (#983)
- STATUSMSG were being stored in history without the relevant minimum-prefix information, so they could be replayed to unprivileged users. This was fixed by not storing them at all. (#959, thanks @prawnsalad!)
- Fixed invisible users not being hidden from
WHO *
queries (#991, thanks @ajaspers!) - Restricted nicknames of some additional common services:
OperServ
,BotServ
,MemoServ
, andGlobal
(#1080, thanks @KoraggKnightWolf!)
Fixed
- Fixed incorrect rejection of
draft/multiline
messages containing blank lines (#1005, thanks @jwheare!) - Fixed roleplay commands, which were completely broken from v1.1.0 through v2.0.0 (#865, thanks @petteri and @Mitaka8!)
- Fixed
/SAMODE
applying user mode changes to the operator instead of the target user (#866, thanks @csmith!) - Fixed some channels not being unregistered during account unregistration (#889)
- Fixed
/NICKSERV SET
and related commands being unavailable when account registration is disabled (#922, thanks @PizzaLover2007!) - Fixed
TAGMSG
not being replayed correctly in history (#1044) - Fixed incorrect
401 ERR_NOSUCHNICK
responses onTAGMSG
sent to a service (#1051, thanks @ajaspers!) - Fixed
301 RPL_AWAY
not being sent inWHOIS
responses when applicable (#850) /OPER
with no password no longer disconnects the client (#951)- Fixed failure to send extended-join responses after account unregistration (#933, thanks @jesopo!)
- Improved validation of channel keys (#1021, thanks @kylef!)
- Fixed labeling of
421 ERR_UNKNOWNCOMMAND
responses (#994, thanks @k4bek4be!) - Fixed incorrect parsing of ident protocol responses (#1002, thanks @justjanne!)
- Fixed registration completing after
NICK
and an ident response, without waiting forUSER
(#1057, thanks @KoraggKnightWolf!) - Fixed messages rejected by the
+R
mode being stored in history (#1061, thanks @KoraggKnightWolf!) - Fixed redundant
/INVITE
commands not sending443 ERR_USERONCHANNEL
(#842, thanks @hhirtz!) - Fixed
/NICKSERV REGISTER
response displayingmailto:
out of context (#985, thanks @eklitzke!) - Fixed nickname changes not sending
731 RPL_MONOFFLINE
when appropriate (#1076, thanks @ajaspers!) - Fixed incorrect MONITOR responses in some cases (#1086, thanks @ajaspers!)
- Fixed HostServ approval and rejection notices being sent from the wrong source (#805)
- Error messages for invalid TLS certificate/key pairs are now more informative (#982)
- Fixed error message when attempting to attach a plaintext session to an always-on client (#955, thanks @bogdomania and @xPaw!)
- Increased the TLS handshake timeout, increasing reliability under high CPU contention (#894)
- Fixed
CHANMODES
ISUPPORT token (#408, #874, thanks @hhirtz!) - Fixed
002 RPL_MYINFO
parameters (#1058, thanks [@KoraggKnightWolf](htt...
v2.1.0-rc1 - websockets, fixes, polish
We're pleased to be publishing the release candidate for 2.1.0 (the official release should follow in a week or so).
Since the release of 2.0.0 in March, a number of new communities and organizations have adopted Oragono as a communications tool. This new release incorporates many improvements and fixes derived from the experiences of real-world operators and end users. Highlights include:
- Native support for websockets contributed by @hhirtz, eliminating the need for a separate websockets-to-IRC proxy server
- Tighter control over the relationship between account names and nicknames, eliminating the need for extbans
- Support for sending account verification emails directly from Oragono, including DKIM signatures
Many thanks to @ajaspers and @hhirtz for contributing patches, to @ajaspers, @eklitzke, and @hhirtz for contributing code reviews, to @ajaspers, @bogdomania, @clukawski, Csibesz, @csmith, @eklitzke, @nxths, @hhirtz, @jesopo, @jlnt, @justjanne, @jwheare, @k4bek4be, @kula, @kylef, @Mitaka8, @petteri, @PizzaLover2007, @prawnsalad, @RyanSquared, savoyard, and @xPaw for reporting issues, and to @bogdomania, @boppy, Nuve, stickytoffeepuddingwithcaramel, and @vegax87 for contributing translations. for contributing translations.
This release includes changes to the config file format, including one breaking change: support for server.ip-cloaking.secret-environment-variable
has been removed. (See below for instructions on how to upgrade if you were using this feature.) All other changes to the config file format are backwards compatible and do not require updating before restart.
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).
This release includes a change to the MySQL schema. This change will be applied automatically when you restart Oragono. It is fully backwards compatible (i.e., if it is necessary for you to downgrade Oragono back to 2.0.0, it will not be necessary to downgrade the schema).
Config Changes
- Added
websocket
attribute of individual listeners, and a newserver.websockets
section, for configuring websocket listeners. (#967, thanks @hhirtz!) - The recommended default is now to enable IP cloaking. In order to facilitate this, the cloaking secret is now stored in the database, instead of the config file. If you currently have a secret stored in the config file (as
server.ip-cloaking.secret
), it will be automatically imported into the database. If you were usingsecret-environment-variable
to distribute your cloaking secret, you can import it manually after restart using the new/HOSTSERV SETCLOAKSECRET
command. (#952) - Added
accounts.nick-reservation.force-nick-equals-account
, which ensures that logged-in clients are using their account name as their nickname. This eliminates the need for extbans and is a new recommended default. (#864) - Added
guest-nickname-format
andforce-guest-format
, which optionally add a prefix likeGuest-
to the nicknames of unauthenticated users (#749) - The recommended default is now to enable history storage and playback, with messages expiring after 7 days. (As with all changes in recommended config values, applying this to an existing config file requires explicitly changing the values.) (#1030)
- Added
history.retention
section for controlling new features related to history storage and deletion (#858) - The recommended default for
accounts.multiclient.always-on
is nowopt-in
(#919) - Added
accounts.default-user-modes
; the recommended default is now to set+i
on all users automatically (#942, thanks @ajaspers!) - Added
channels.list-delay
, allowing restrictions on channel listings as a defence against spambots (#964) - Added
accounts.multiclient.auto-away
, allowing always-on clients to be automatically marked as away when all their sessions disconnect - Added
accounts.throttling
as a global throttle on the creation of new accounts (#913) - New format for
accounts.callbacks.mailto
, allowing direct email sending and DKIM signing (#921) - Added
accounts.login-via-pass-command
, providing a new mechanism for legacy clients to authenticate to accounts by sendingPASS account:password
pre-registration (#1020) - Added
datastore.mysql.socket-path
, allowing MySQL connections over UNIX domain sockets (#1016, thanks savoyard and @ajaspers!) - Added
roleplay
section for controlling the server's roleplay features (#865) - The recommended default for
accounts.nick-reservation.allow-custom-enforcement
is nowfalse
(#918) - The recommended default is now to allow PROXY and WEBIRC lines from localhost (#989, #1011)
- Added
channels.registration.operator-only
, optionally restricting channel registrations to operators (#685) - Added
server.output-path
for controlling where the server writes output files (#1004) - Operator capability names prefixed with
oper:
have been normalized to remove the prefix (the old names are still respected in the config file) (#868) - The log category names
localconnect
andlocalconnect-ip
have been changed toconnect
andconnect-ip
respectively (the old names are still respected in the config file) (#940)
Security
- Fixed incorrect enforcement of ban/invite/exception masks under some circumstances (#983)
- STATUSMSG were being stored in history without the relevant minimum-prefix information, so they could be replayed to unprivileged users. This was fixed by not storing them at all. (#959, thanks @prawnsalad!)
- Fixed invisible users not being hidden from
WHO *
queries (#991, thanks @ajaspers!)
Fixed
- Fixed incorrect rejection of
draft/multiline
messages containing blank lines (#1005, thanks @jwheare!) - Fixed roleplay commands, which were completely broken from v1.1.0 through v2.0.0 (#865, thanks @petteri and @Mitaka8!)
- Fixed
/SAMODE
applying user mode changes to the operator instead of the target user (#866, thanks @csmith!) - Fixed some channels not being unregistered during account unregistration (#889)
- Fixed
/NICKSERV SET
and related commands being unavailable when account registration is disabled (#922, thanks @PizzaLover2007!) - Fixed
TAGMSG
not being replayed correctly in history (#1044) - Fixed
301 RPL_AWAY
not being sent inWHOIS
responses when applicable (#850) /OPER
with no password no longer disconnects the client (#951)- Fixed failure to send extended-join responses after account unregistration (#933, thanks @jesopo!)
- Improved validation of channel keys (#1021, thanks @kylef!)
- Fixed labeling of
421 ERR_UNKNOWNCOMMAND
responses (#994, thanks @k4bek4be!) - Fixed incorrect parsing of ident protocol responses (#1002, thanks @justjanne!)
- Fixed redundant
/INVITE
commands not sending443 ERR_USERONCHANNEL
(#842, thanks @hhirtz!) - Fixed
/NICKSERV REGISTER
response displayingmailto:
out of context (#985, thanks @eklitzke!) - Fixed HostServ approval and rejection notices being sent from the wrong source (#805)
- Error messages for invalid TLS certificate/key pairs are now more informative (#982)
- Fixed error message when attempting to attach a plaintext session to an always-on client (#955, thanks @bogdomania and @xPaw!)
- Increased the TLS handshake timeout, increasing reliability under high CPU contention (#894)
- Fixed
CHANMODES
ISUPPORT token (#408, #874, thanks @hhirtz!) - Fixed edge cases in handling of the
+k
channel mode parameter (#874, thanks @hhirtz!) account-notify
lines are now part of the labeled-response batch when applicable (#1018)- Fixed incorrect help description of channel mode
+R
(#930, thanks @PizzaLover2007!) - Fixed
255 RPL_LUSERME
response to indicate that the number of federated peer servers is 0 (#846, thanks @RyanSquared!)
Changed
- Account names are now permanent identifiers; they cannot be re-registered after unregistration, and applicable nickname protections remain in force. (#793)
- User modes of always-on clients now persist across server restarts (#819)
- Registered channels with no members remain present on the server, including their in-memory history messages when applicable (#704, thanks [@bogdomania](https://github.com/...
v2.0.0 - persistent history support and much more
We're pleased to announce Oragono 2.0.0, a major update with a wide range of enhancements and fixes. Highlights include:
- Support for storing chat history in a MySQL backend
- Full "bouncer" functionality, including "always-on" clients that remain present on the server even when disconnected
- LDAP support contributed by @mattouille
- Support for the ratified labeled-response IRCv3 capability
- Enhanced support for Kubernetes
- Many new service commands, improving management of client certificates, vhosts, and channel ownership
Many thanks to @csmith, @mattouille, and @xPaw for contributing patches, to @csmith and @wrmsr for contributing code reviews, to @bogdomania, @brenns10, @daurnimator, @ekianjo, horseface, @ivucica, @jesopo, @jwheare, KoDi, lover, @notbandali, @poVoq, @TETYYS, and @zaher for reporting issues, and to @bogdomania and Nuve for contributing translations.
This release includes changes to the config file format, including two breaking changes:
- Backwards compatibility with the old
server.listen
format for configuring listeners has been removed; you must now use theserver.listeners
format that was introduced in 1.2.0. - The two sections
server.connection-limits
andserver.connection-throttling
have been consolidated into one new section,server.ip-limits
.
Other changes to the config file format are backwards compatible and do not require updating before restart. To minimize potential downtime, we suggest the following workflow:
- Without upgrading your
oragono
binary, edit your config file to add newserver.listeners
andserver.ip-limits
sections, based on the example config file - Rehash your server, confirming that the new config file is valid for for the previous version of the server
- Upgrade your
oragono
binary to the new 2.0.x version and restart your server - Once your deployment is stable on 2.0.x, delete the old
server.listen
,server.connection-limits
, andserver.connection-throttling
sections from your config, and rehash your server to confirm
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).
Config Changes
- Desupported
server.listen
in favor ofserver.listeners
, a breaking change (#794) - Desupported
server.connection-limits
andserver.connection-throttling
in favor ofserver.ip-limits
, a breaking change (#646) - The recommended default is now to allow plaintext only on loopback interfaces (#801)
- Added
server.casemapping
option to control which Unicode nicknames and channels are allowed (#693) - Added
server.lookup-hostnames
andserver.forward-confirm-hostnames
options to control hostname lookup (#688) - Added new
limits.multiline
section to control the newdraft/multiline
capability - Added sections for enabling the optional MySQL history storage backend:
datastore.mysql
for connecting to the server andhistory.persistent
for controlling which messages are stored - Added
history.restrictions
for preventing people from retrieving arbitrarily old history messages - Added
history.znc-maxmessages
, allowing a higher history replay limit for bouncer emulation relative to CHATHISTORY - Added
accounts.vhosts.offer-list
, allowing users to take pre-approved vhosts without operator approval (#737) - Renamed
accounts.bouncer
toaccounts.multiclient
(the old name still works) (#787) - New recommended values of
server.max-sendq
,server.ip-cloaking.num-bits
,accounts.registration.bcrypt-cost
,accounts.nick-reservation.enabled
(now true),accounts.multiclient.allowed-by-default
(now true) - Added
server.ip-cloaking.secret-environment-variable
, allowing the cloaking secret to be deployed via an environment variable for use in Kubernetes (#741, thanks @daurnimator!)
Security
- Added forward confirmation of reverse DNS lookups for hostnames: to enable this, set
server.forward-confirm-hostnames
to true (#688) - Added protection against confusable channel names (#581)
- Fixed cases where Tor users could receive CTCP messages, contrary to expectations (#752, #753)
- Fixed
NS INFO
displaying the local timezone (#710) - Fixed
accounts.authentication-enabled
failing to disable theNS IDENTIFY
command (#721)
Added
- Added support for persistent history storage in MySQL (#348)
- Added support for "always-on" clients that remain present on the server even when disconnected (#348, #701)
- Added support for LDAP (#690, thanks @mattouille, @ivucica, and @mabgnu!)
- Added support for the new draft/multiline specification (#670, thanks @jwheare and @jesopo!)
- Added new modes for Unicode characters in nicknames and channel names: ASCII-only and "permissive" (allowing emoji) (#693)
- Added support for plaintext PROXY lines ahead of a TLS handshake, improving compatibility with some Kubernetes load balancers (#561, thanks @RyanSquared and @daurnimator!)
- Added support for authenticating operators by TLS client certificates, and automatically applying operator privileges on login (#696, thanks @RyanSquared!)
- Added
/DEOPER
command to remove operator privileges (#549, thanks @bogdomania!) - Added
/CHANSERV TRANSFER
, allowing transfers of channel ownership (#684) - Added
/NICKSERV CERT
, allowing users to manage their authorized client certificates (#530) - Added
/HOSTSERV TAKE
, allowing users to take pre-approved vhosts without operator approval (#737) - Added support for configuring connection limits and throttling for individual CIDRs (#646, thanks KoDi!)
- Added
/CHANSERV PURGE
, allowing server administrators to shut down channels (#683) - Added
/CHANSERV CLEAR
, allowing channel founders to reset stored bans and privileges (#692) - Added
/CHANSERV SET
, allowing channel founders to disable channel history (#379) - Added account preference
AUTOREPLAY-JOINS
, allowing greater control over when joins and parts appear in history replay (#616, thanks @zaher!) - Added
/DEBUG CRASHSERVER
command (#791) znc.in/playback
now supports nicknames as targets (#830)- Added channel mode
+C
to suppress CTCP messages to a channel (#756) - Added some missing snomasks for events related to accounts and vhosts (
+s v
to enable vhost snomasks) (#347, #103)
Changed
- Updated CHATHISTORY support to the latest draft (#621, thanks @prawnsalad!)
- Updated to the ratified labeled-response specification from the earlier
draft/labeled-response-0.2
(#757) /HISTORY
now defaults to returning 100 messages, and also takes time durations like1h
as arguments (#621, thanks lover!)- D-Lines are no longer enforced against loopback IPs (#671)
- Password length limit was reduced from 600 bytes to 300 bytes (#775)
Fixed
- Fixed a bug where
znc.in/playback
commands would play every channel, regardless of the target parameter (#760, thanks @brenns10!) - Fixed
MODE -o
not removing all operator permissions (#725, #549, thanks @bogdomania!) - Fixed client-only tags being relayed in direct messages to users without the
message-tags
capability (#754, thanks @jesopo!) - Fixed the channel user limit (the
+l
mode) not persisting after server restart (#705, thanks @bogdomania!) - Fixed response to
JOIN
lines with parameters ending in a comma (#679, thanks @bogdomania!) - Fixed confusable protection not being removed from unregistered accounts (#745, thanks @bogdomania!)
- Fixed rehash not enabling nickname reservation, vhosts, or history under some circumstances (#702, thanks @bogdomania!)
- Fixed responses to the
USERHOST
command (#682) - Fixed bad results when running
oragono upgradedb
against a missing database file (#715, thanks @bogdomania!) - Fixed confusing
NS GHOST
behavior when nickname reservation is disabled (#727, thanks horseface!) - Fixed validation of authzid during SASL (#716, thanks @xPaw!)
- Non-ASCII characters are proactively disallowed in
ip-cloaking.netname
(#713, thanks @bogdomania!) - Limited the time during which
znc.in/playback
affects channel joins (#829)
Removed
v2.0.0-rc1 - persistent history support and much more
We're pleased to be publishing the release candidate for Oragono 2.0.0 (the official release should follow in a week or two). Version 2.0.0 is a major update with a wide range of enhancements and fixes. Major highlights include:
- Support for storing chat history in a MySQL backend
- Full "bouncer" functionality, including "always-on" clients that remain present on the server even when disconnected
- LDAP support contributed by @mattouille
- Support for the ratified labeled-response IRCv3 capability
- Enhanced support for Kubernetes
Many thanks to @csmith, @mattouille, and @xPaw for contributing patches, to @csmith and @wrmsr for contributing code reviews, to @bogdomania, @brenns10, @daurnimator, @ekianjo, horseface, @ivucica, @jesopo, @jwheare, KoDi, lover, @mabgnu, @poVoq, @TETYYS, and @zaher for reporting issues, and to @bogdomania and Nuve for contributing translations.
This release includes changes to the config file format, including two breaking changes:
- Backwards compatibility with the old
server.listen
format for configuring listeners has been removed; you must now use theserver.listeners
format that was introduced in 1.2.0. - The two sections
server.connection-limits
andserver.connection-throttling
have been consolidated into one new section,server.ip-limits
.
Other changes to the config file format are backwards compatible and do not require updating before restart. To minimize potential downtime, we suggest the following workflow:
- Without upgrading your
oragono
binary, edit your config file to add newserver.listeners
andserver.ip-limits
sections, based on the example config file - Rehash your server, confirming that the new config file is valid for for the previous version of the server
- Upgrade your
oragono
binary to the new 2.0.x version and restart your server - Once your deployment is stable on 2.0.x, delete the old
server.listen
,server.connection-limits
, andserver.connection-throttling
sections from your config, and rehash your server to confirm
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).
Config Changes
- Desupported
server.listen
in favor ofserver.listeners
, a breaking change (#794) - Desupported
server.connection-limits
andserver.connection-throttling
in favor ofserver.ip-limits
, a breaking change (#646) - The recommended default is now to allow plaintext only on loopback interfaces (#801)
- Added
server.casemapping
option to control which Unicode nicknames and channels are allowed (#693) - Added
server.lookup-hostnames
andserver.forward-confirm-hostnames
options to control hostname lookup (#688) - Added new
limits.multiline
section to control the newdraft/multiline
capability - Added sections for enabling the optional MySQL history storage backend:
datastore.mysql
for connecting to the server andhistory.persistent
for controlling which messages are stored - Added
history.restrictions
for preventing people from retrieving arbitrarily old history messages - Added
history.znc-maxmessages
, allowing a higher history replay limit for bouncer emulation relative to CHATHISTORY - Added
accounts.vhosts.offer-list
, allowing users to take pre-approved vhosts without operator approval (#737) - Renamed
accounts.bouncer
toaccounts.multiclient
(the old name still works) (#787) - New recommended values of
server.max-sendq
,server.ip-cloaking.num-bits
,accounts.registration.bcrypt-cost
,accounts.nick-reservation.enabled
(now true),accounts.multiclient.allowed-by-default
(now true) - Added
server.ip-cloaking.secret-environment-variable
, allowing the cloaking secret to be deployed via an environment variable for use in Kubernetes (#741, thanks @daurnimator!)
Security
- Added forward confirmation of reverse DNS lookups for hostnames: to enable this, set
server.forward-confirm-hostnames
to true (#688) - Added protection against confusable channel names (#581)
- Fixed cases where Tor users could receive CTCP messages, contrary to expectations (#752, #753)
- Fixed
NS INFO
displaying the local timezone (#710) - Fixed
accounts.authentication-enabled
failing to disable theNS IDENTIFY
command (#721) - Fixed confusable protection not being applied to newly registered accounts (#745, thanks @bogdomania!)
Added
- Added support for persistent history storage in MySQL (#348)
- Added support for "always-on" clients that remain present on the server even when disconnected (#348, #701)
- Added support for LDAP (#690, thanks @mattouille, @ivucica, and @mabgnu!)
- Added support for the new draft/multiline specification (#670, thanks @jwheare and @jesopo!)
- Added new modes for Unicode characters in nicknames and channel names: ASCII-only and "permissive" (allowing emoji) (#693)
- Added support for plaintext PROXY lines ahead of a TLS handshake, improving compatibility with some Kubernetes load balancers (#561, thanks @RyanSquared and @daurnimator!)
- Added support for authenticating operators by TLS client certificates, and automatically applying operator privileges on login (#696, thanks @RyanSquared!)
- Added
/DEOPER
command to remove operator privileges (#549, thanks @bogdomania!) - Added
/CHANSERV TRANSFER
, allowing transfers of channel ownership (#684) - Added
/NICKSERV CERT
, allowing users to manage their authorized client certificates (#530) - Added
/HOSTSERV TAKE
, allowing users to take pre-approved vhosts without operator approval (#737) - Added support for configuring connection limits and throttling for individual CIDRs (#646, thanks KoDi!)
- Added
/CHANSERV PURGE
, allowing server administrators to shut down channels (#683) - Added
/CHANSERV CLEAR
, allowing channel founders to reset stored bans and privileges (#692) - Added
/CHANSERV SET
, allowing channel founders to disable channel history (#379) - Added account preference
AUTOREPLAY-JOINS
, allowing greater control over when joins and parts appear in history replay (#616, thanks @zaher!) - Added
/DEBUG CRASHSERVER
command (#791) znc.in/playback
now supports nicknames as targets (#830)- Added channel mode
+C
to suppress CTCP messages to a channel (#756) - Added some missing snomasks for events related to accounts and vhosts (
+s v
to enable vhost snomasks) (#347, #103)
Changed
- Updated CHATHISTORY support to the latest draft (#621, thanks @prawnsalad!)
- Updated to the ratified labeled-response specification from the earlier
draft/labeled-response-0.2
(#757) /HISTORY
now defaults to returning 100 messages, and also takes time durations like1h
as arguments (#621, thanks lover!)- D-Lines are no longer enforced against loopback IPs (#671)
- Password length limit was reduced from 600 bytes to 300 bytes (#775)
Fixed
- Fixed a bug where
znc.in/playback
commands would play every channel, regardless of the target parameter (#760, thanks @brenns10!) - Fixed
MODE -o
not removing all operator permissions (#725, #549, thanks @bogdomania!) - Fixed client-only tags being relayed in direct messages to users without the
message-tags
capability (#754, thanks @jesopo!) - Fixed the channel user limit (the
+l
mode) not persisting after server restart (#705, thanks @bogdomania!) - Fixed response to
JOIN
lines with parameters ending in a comma (#679, thanks @bogdomania!) - Fixed confusable protection not being removed from unregistered accounts (#745, thanks @bogdomania!)
- Fixed rehash not enabling nickname reservation, vhosts, or history under some circumstances (#702, thanks @bogdomania!)
- Fixed responses to the
USERHOST
command (#682) - Fixed bad results when running
oragono upgradedb
against a missing database file (#715, thanks @bogdomania!) - Fixed confusing
NS GHOST
behavior when nickname reservation is disabled (#727, thanks horseface!) - Fixed validation of authzid during SASL (#716, thanks @xPaw!)
- Non-ASCII characters are proactively disallowed in
ip-cloaking.netname
(#713, thanks @bogdomania!) - Limited the time during which
znc.in/playback
affects channel joins (#829)
Removed
- Removed
oragono.io/maxline-2
capability in favor of the newdraft/multiline
...
v1.2.0 - minor updates
We're pleased to announce Oragono 1.2.0. This version contains bug fixes and minor improvements.
Many thanks to @bogdomania, @csmith, @edmund-huber, @jesopo, @jwheare, @poVoq, @prawnsalad, and stealthgin for reporting issues and contributing code reviews, and also to @bogdomania, Forbidden (cptbl00dra1n), Nuve, @streaps, and UnLokitoFeliz for contributing translations.
This release includes a change to the config file format: the old server.listen
format for configuring listeners has been replaced by a new server.listeners
format. See the bundled oragono.yaml
configuration file for a commented example. For now, Oragono maintains backwards compatibility with the old format. To minimize potential downtime, we recommend the following workflow:
- Without rewriting your config file, upgrade your
oragono
binary to the new 1.2.x version and restart your server - Rewrite your configuration file to use the new
server.listeners
format - Rehash your server, confirming that the rewritten config file is valid and correct
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).
Config Changes
- Replaced
server.listen
section withserver.listeners
; seeoragono.yaml
for a commented example (#565) - Added
history.autoresize_window
for automatically resizing history buffers (#349)
Added
- Added STS-only listeners; you can configure port 6667 so that it "redirects" clients to TLS on port 6697. See the manual for details. (#448)
- Added the
CHANLIMIT
ISUPPORT token (#625, thanks @poVoq!) - Added ban creator and creation time to banlist output (#644, thanks stealthgin!)
Changed
- Upgraded to the new
draft/labeled-response-0.2
capability (#555) oragono mkcerts
no longer overwrites existing certificate files (#622, thanks @poVoq!)- Allowed Tor and non-Tor connections to attach to the same nickname via bouncer functionality (#632)
Fixed
- Fixed
CAP LS 302
response being potentially truncated (#594, #661) - Fixed redundant output to some
MODE
commands (#649) - Improved display of replies to
/msg NickServ verify
in some clients (#567, thanks @edmund-huber!) - Improved display of NickServ timeout warnings in some clients (#572, thanks @bogdomania!)
LUSERS
output is now sent at the end of connection registration (#526)- Fixed operators not being able to
WHOIS
some Unicode nicknames (#331, thanks @bogdomania!) - Fixed
RESUME
not clearing theBRB
reason (#592, thanks @jesopo!) - Fixed an edge case where the
BRB
timestamp wasn't reset correctly (#642) - Fixed behavior of
SAMODE
issued against a different user (#585) - Fixed a false-positive error logline (#601)
oragono.io/bnc
is no longer advertised when disabled in the config (#595)- Made the connection limiter and throttler more resilient against the failure to whitelist a reverse proxy IP (#197, thanks @prawnsalad!)
Internal Notes
v1.2.0-rc1 - minor updates
We're pleased to be publishing the release candidate for 1.2.0 (the official release should follow in a week or two). This version contains bug fixes and minor improvements.
Many thanks to @bogdomania, @csmith, @edmund-huber, @jesopo, @jwheare, @poVoq, @prawnsalad, and stealthgin for reporting issues and contributing code reviews, and also to @bogdomania, Forbidden (cptbl00dra1n), Nuve, @streaps, and UnLokitoFeliz for contributing translations.
This release includes a change to the config file format: the old server.listen
format for configuring listeners has been replaced by a new server.listeners
format. See the bundled oragono.yaml
configuration file for a commented example. For now, Oragono maintains backwards compatibility with the old format. To minimize potential downtime, we recommend the following workflow:
- Without rewriting your config file, upgrade your
oragono
binary to the new 1.2.x version and restart your server - Rewrite your configuration file to use the new
server.listeners
format - Rehash your server, confirming that the rewritten config file is valid and correct
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).
Config Changes
- Replaced
server.listen
section withserver.listeners
; seeoragono.yaml
for a commented example (#565) - Added
history.autoresize_window
for automatically resizing history buffers (#349)
Added
- Added STS-only listeners; you can configure port 6667 so that it "redirects" clients to TLS on port 6697. See the manual for details. (#448)
- Added the
CHANLIMIT
ISUPPORT token (#625, thanks @poVoq!) - Added ban creator and creation time to banlist output (#644, thanks stealthgin!)
Changed
- Upgraded to the new
draft/labeled-response-0.2
capability (#555) oragono mkcerts
no longer overwrites existing certificate files (#622, thanks @poVoq!)- Allowed Tor and non-Tor connections to attach to the same nickname via bouncer functionality (#632)
Fixed
- Fixed
CAP LS 302
response being potentially truncated (#594) - Fixed redundant output to some
MODE
commands (#649) - Improved display of replies to
/msg NickServ verify
in some clients (#567, thanks @edmund-huber!) - Improved display of NickServ timeout warnings in some clients (#572, thanks @bogdomania!)
LUSERS
output is now sent at the end of connection registration (#526)- Fixed operators not being able to
WHOIS
some Unicode nicknames (#331, thanks @bogdomania!) - Fixed
RESUME
not clearing theBRB
reason (#592, thanks @jesopo!) - Fixed an edge case where the
BRB
timestamp wasn't reset correctly (#642) - Fixed behavior of
SAMODE
issued against a different user (#585) - Fixed a false-positive error logline (#601)
oragono.io/bnc
is no longer advertised when disabled in the config (#595)- Made the connection limiter and throttler more resilient against the failure to whitelist a reverse proxy IP (#197, thanks @prawnsalad!)