Skip to content

Releases: ergochat/ergo

v2.3.0-rc2 - a second release candidate

30 Aug 07:55
v2.3.0-rc2
Compare
Choose a tag to compare
Pre-release

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

23 Aug 04:26
v2.3.0-rc1
Compare
Choose a tag to compare
Pre-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 now false (#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

  • Updated draft/rename implementation to the latest draft (#1223, thanks @hhirtz!)

Internal

  • Official release builds now use Go 1.15 (#1195)
  • /INFO now includes the Go version (#1234)

v2.2.0 - WHOX and other delights

26 Jul 09:51
Compare
Choose a tag to compare

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 configured timeout for their account will be upgraded to strict. With accounts.login-via-pass-command enabled, clients lacking support for SASL can authenticate via the PASS (server password command) by sending account_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 of true 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 of fingerprint (the old name of fingerprint 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, and topiclen 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, named defcon; 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 a B flag for bots in 352 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 with MONITOR +, without casefolding (#1083)
  • We now send the traditional 445 ERR_SUMMONDISABLED and 446 ERR_USERSDISABLED in response to the SUMMON and USERS 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

  • The config file containing recommended defaults is now named default.yaml, instead of oragono.yaml (#1130, thanks @k4bek4be!)
  • The output of the /INFO command now includes the full git hash, when applicable (#1105)

v2.2.0-rc1 - WHOX and other delights

19 Jul 06:35
Compare
Choose a tag to compare
Pre-release

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 configured timeout for their account will be upgraded to strict. With accounts.login-via-pass-command enabled, clients lacking support for SASL can authenticate via the PASS (server password command) by sending account_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 of true 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 of fingerprint (the old name of fingerprint 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, and topiclen 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, named defcon; 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 a B flag for bots in 352 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 with MONITOR +, without casefolding (#1083)
  • We now send the traditional 445 ERR_SUMMONDISABLED and 446 ERR_USERSDISABLED in response to the SUMMON and USERS 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

  • The config file containing recommended defaults is now named default.yaml, instead of oragono.yaml (#1130, thanks @k4bek4be!)
  • The output of the /INFO command now includes the full git hash, when applicable (#1105)

v2.1.0 - websockets, fixes, polish

01 Jun 04:03
Compare
Choose a tag to compare

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 new server.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 using secret-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 and force-guest-format, which optionally add a prefix like Guest- 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 now opt-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 sending PASS 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 now false (#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 and localconnect-ip have been changed to connect and connect-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, and Global (#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 on TAGMSG sent to a service (#1051, thanks @ajaspers!)
  • Fixed 301 RPL_AWAY not being sent in WHOIS 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 for USER (#1057, thanks @KoraggKnightWolf!)
  • Fixed messages rejected by the +R mode being stored in history (#1061, thanks @KoraggKnightWolf!)
  • Fixed redundant /INVITE commands not sending 443 ERR_USERONCHANNEL (#842, thanks @hhirtz!)
  • Fixed /NICKSERV REGISTER response displaying mailto: 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...
Read more

v2.1.0-rc1 - websockets, fixes, polish

25 May 00:53
Compare
Choose a tag to compare
Pre-release

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 new server.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 using secret-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 and force-guest-format, which optionally add a prefix like Guest- 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 now opt-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 sending PASS 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 now false (#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 and localconnect-ip have been changed to connect and connect-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 in WHOIS 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 sending 443 ERR_USERONCHANNEL (#842, thanks @hhirtz!)
  • Fixed /NICKSERV REGISTER response displaying mailto: 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/...
Read more

v2.0.0 - persistent history support and much more

08 Mar 09:52
Compare
Choose a tag to compare

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:

  1. Backwards compatibility with the old server.listen format for configuring listeners has been removed; you must now use the server.listeners format that was introduced in 1.2.0.
  2. The two sections server.connection-limits and server.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:

  1. Without upgrading your oragono binary, edit your config file to add new server.listeners and server.ip-limits sections, based on the example config file
  2. Rehash your server, confirming that the new config file is valid for for the previous version of the server
  3. Upgrade your oragono binary to the new 2.0.x version and restart your server
  4. Once your deployment is stable on 2.0.x, delete the old server.listen, server.connection-limits, and server.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 of server.listeners, a breaking change (#794)
  • Desupported server.connection-limits and server.connection-throttling in favor of server.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 and server.forward-confirm-hostnames options to control hostname lookup (#688)
  • Added new limits.multiline section to control the new draft/multiline capability
  • Added sections for enabling the optional MySQL history storage backend: datastore.mysql for connecting to the server and history.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 to accounts.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 the NS 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 like 1h 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 new draft/multiline capability (#670, #752)
  • Removed oragono.io/bnc capability (multiclient functionality is now controllable only via server config ...
Read more

v2.0.0-rc1 - persistent history support and much more

02 Mar 05:11
Compare
Choose a tag to compare

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:

  1. Backwards compatibility with the old server.listen format for configuring listeners has been removed; you must now use the server.listeners format that was introduced in 1.2.0.
  2. The two sections server.connection-limits and server.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:

  1. Without upgrading your oragono binary, edit your config file to add new server.listeners and server.ip-limits sections, based on the example config file
  2. Rehash your server, confirming that the new config file is valid for for the previous version of the server
  3. Upgrade your oragono binary to the new 2.0.x version and restart your server
  4. Once your deployment is stable on 2.0.x, delete the old server.listen, server.connection-limits, and server.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 of server.listeners, a breaking change (#794)
  • Desupported server.connection-limits and server.connection-throttling in favor of server.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 and server.forward-confirm-hostnames options to control hostname lookup (#688)
  • Added new limits.multiline section to control the new draft/multiline capability
  • Added sections for enabling the optional MySQL history storage backend: datastore.mysql for connecting to the server and history.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 to accounts.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 the NS 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 like 1h 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 new draft/multiline...
Read more

v1.2.0 - minor updates

16 Nov 23:30
0d77315
Compare
Choose a tag to compare

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:

  1. Without rewriting your config file, upgrade your oragono binary to the new 1.2.x version and restart your server
  2. Rewrite your configuration file to use the new server.listeners format
  3. 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 with server.listeners; see oragono.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 the BRB 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

  • Official builds now use Go 1.13, which includes native TLS 1.3 support (#626)
  • Minor performance improvements (#640, #615)

v1.2.0-rc1 - minor updates

04 Nov 02:08
cd7ff5c
Compare
Choose a tag to compare
Pre-release

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:

  1. Without rewriting your config file, upgrade your oragono binary to the new 1.2.x version and restart your server
  2. Rewrite your configuration file to use the new server.listeners format
  3. 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 with server.listeners; see oragono.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 the BRB 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

  • Official builds now use Go 1.13, which includes native TLS 1.3 support (#626)
  • Minor performance improvements (#640, #615)