Skip to content

v1.0.0 - History, Unicode, and Nickname Ownership

Compare
Choose a tag to compare
@slingamn slingamn released this 24 Feb 07:17
· 3711 commits to master since this release

We've finally made it to v1.0.0! With this release, our list of need-to-haves is rounded out, and we reckon the software's ready for production use in smaller networks. slingamn and I have been working with our contributors and translators to prepare a cracker of a release. Thanks to @csmith our Docker builds have been updated, with automatic rebuilds as we develop the software. Thanks to @bogdomania our translation workflow has been improved a lot.

Highlights include:

  • Optional support for storing and replaying message history with the draft/resume-0.3 capability, the draft IRCv3 CHATHISTORY command, and a custom HISTORY command.
  • Better detection of confusing nick/account/channel names.
  • User-customizable nickname protection methods.
  • An account-only mode in which all clients must have an account and login to it (using SASL) before they can join the server.

Thanks to Mauropek, @modinfo, @bogdomania, @Shillos, Tony Chen, and Remini for adding new translations. Thanks to @Ascrod, @bogdomania, @csmith, @jesopo, @jwheare, @remini1998, @enckse, and @iNecas for finding bugs and/or writing new features.

Config Changes

  • allow-custom-enforcement key added under accounts.
  • allow-plaintext-resume key added under server.
  • history section added.
  • identlen key added under limits.
  • login-throttling section added under accounts.
  • max-channels-per-account key added under channels.registration (limiting the number of channels that can be registered).
  • max-channels-per-client key added under channels (limiting the number of channels that can be joined).
  • method key now under accounts now allows the value "optional".
  • Exemption lists now accept localhost as a value, meaning any loopback IPV4, loopback IPV6, or unix domain address.
  • Logging type server has been added, replacing the startup, rehash, and shutdown types.
  • The default logging configuration now logs to stderr only, rather than to both stderr and a file.
  • We no longer listen on port 6668 by default (this fixes Docker installs).

Security

  • Added a SASL-only mode in which all clients must authenticate with SASL.
  • Added login throttling as a hardening measure against password guessing.
  • Configurable limits are imposed on how many channels clients can join or register.

Added

  • Added automagic datastore creation on oragono run.
  • Added detection and prevention of confusing nicknames, account names, and channel names.
  • Added limited message history for connection resuming (to be extended in future).
  • Added new Español (es) translation (thanks to Mauropek!).
  • Added new Polski (pl) translation (thanks to @modinfo!).
  • Added new Română (ro) translation (thanks to @bogdomania!).
  • Added new Ελληνικά (el) translation (thanks to @Shillos!).
  • Added new 简体中文 (zh-CN) translation (thanks to Tony Chen and Remini!)).
  • Added proposed IRCv3 capability draft/setname.
  • Added subcommands to NICKSERV, including:
    • PASSWD to change account passwords.
    • ENFORCE to set a specific enforcement mechanism on your nick.
    • SAREGISTER to allow operators to manually create new user accounts.

Changed

  • SASL PLAIN logins now log more correctly.
  • Database upgrade failures now provide information about the error that occurred.
  • Halfops can now kick unprivileged users.
  • Idents (sometimes called "usernames") are now restricted to ASCII, similar to other servers.
  • Improved compatibility with ZNC's nickserv module.
  • In addition to the founder, now auto-ops (halfop and higher) automatically bypass channel join restrictions.
  • Log lines now display time down to milliseconds, instead of just seconds.
  • Updated all translation files (thanks to our amazing translators!).
  • Updated proposed IRCv3 capability draft/resume to draft/resume-0.3.
  • When nick ownership is enabled, users can now select which enforcement mechanism to use with their nickname.

Fixed

  • INVITE: Fixed bug where invited users could not join the channel they were invited to (thanks to @unendingpattern!).
  • oragono.io/maxline capability was accidentally disabled, and is now re-enabled.
  • oragono genpasswd now works when piping input in (fixes Docker installs).
  • PRIVMSG: Messages sent to multiple clients (such as channel messages) now share the same timestamp (previously each client got a very slightly different time).
  • WHOIS: Now responds properly for NickServ, ChanServ, etc.
  • Channel names with right-to-left characters are now casefolded correctly (thanks to @remini1998!).
  • Fixed handling of CIDR width in connection limiting/throttling.
  • Fixed incorrect behavior of CHANSERV OP command.
  • Fixed incorrect rejection of nickmasks with Unicode RTL nicknames.
  • Fixed many responses that violated the specifications (thanks to @Ascrod, @bogdomania, @csmith, @jesopo, and @jwheare!).
  • Fixed nickname sync issue which could cause clients to fail to see each other.
  • Invalid ISUPPORT tokens are now explicitly rejected.
  • Made server-time timestamp format more consistent and safer.
  • Oragono now exits with status (1) if it fails to start.
  • Prevent logging in multiple times when using /NS IDENTIFY.
  • Prevented the db handler from automagically creating the database without initializing it (thanks @enckse!). We also now automatically create the datastore on run.

Internal Notes

  • DLINE and KLINE refactored, and expired bans are now removed from the database.
  • Command-line parsing was upgraded to match modern best practices (thanks to @iNecas!).
  • Direct responses to client commands are now sent "synchronously", bypassing the sendq.
  • Logging system optimised.
  • Services handlers refactored.
  • Translations are now sent to/PR'd from CrowdIn automagically as we develop the software.