diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a7ca4b8..e5ef83c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,12 +4,15 @@ All notable changes to Oragono will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). For the purposes of versioning, we consider the "public API" to refer to the configuration files, CLI interface and database format. -## [0.13.0-rc] -This release has a wide range of improvements and new features. Highlights include: -* Support for storing and replaying message history, via various protocol extensions: the `draft/resume-0.2` capability, the `CHATHISTORY` command, and a custom `HISTORY` command -* Confusables prevention for Unicode nicknames and account names -* User-customizable nickname protection schemes -* A SASL-only mode in which all clients must authenticate with SASL +## [1.0.0-rc] - 2019-02-18 +Our v1.0.0 is finally here! Well, almost. The final v1.0.0 should be released in a week or two, after our last bits of testing is complete and the documentation has been double and triple-checked. This version rounds out most of our need-to-haves, and leaves us with a bunch of nice-to-haves that we'll be looking at going forward. Thanks to all of our amazing translators and contributors for the work they've done this release (we'll have a proper thanks section when v1.0.0 drops). + +Highlights include: + +* Support for storing and replaying message history with: the [`draft/resume-0.3` capability](https://github.com/ircv3/ircv3-specifications/pull/306), the `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. ### Config Changes * `allow-custom-enforcement` key added under `accounts`. @@ -20,14 +23,17 @@ This release has a wide range of improvements and new features. Highlights inclu * `method` key now under `accounts` now allows the value `"optional"`. * Logging type `server` has been added, replacing the `startup`, `rehash`, and `shutdown` types. * We no longer listen on port `6668` by default (this fixes Docker installs). -* The default logging configuration now logs to stderr only, rather than to both stderr and a file +* The default logging configuration now logs to stderr only, rather than to both stderr and a file. +* `max-channels-per-client` key added under `channels` (limiting the number of channels that can be joined). +* `max-channels-per-account` key added under `channels.registration` (limiting the number of channels that can be registered). +* Exemption lists now accept `localhost` as a value, meaning any loopback IPV4, loopback IPV6, or unix domain address. ### Security -* Added a SASL-only mode in which all clients must authenticate with SASL -* Added login throttling as a hardening measure against password guessing +* 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 -* `oragono genpasswd` now works when piping input in (fixes Docker installs). * Added automagic datastore creation on `oragono run`. * Added limited message history for connection resuming (to be extended in future). * Added new EspaƱol (es) translation (thanks to Mauropek!)). @@ -38,8 +44,9 @@ This release has a wide range of improvements and new features. Highlights inclu * Added new 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 + * `SAREGISTER` to allow operators to manually create new user accounts. * Added Unicode confusable detection and prevention when changing nicknames and registering accounts. +* Added proposed IRCv3 capability [`draft/setname`](https://github.com/ircv3/ircv3-specifications/pull/361). ### Changed * `SASL PLAIN` logins now log more correctly. @@ -48,8 +55,10 @@ This release has a wide range of improvements and new features. Highlights inclu * 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 to version [`draft/resume-0.2`](https://github.com/ircv3/ircv3-specifications/pull/306). +* Updated proposed IRCv3 capability to version [`draft/resume-0.3`](https://github.com/ircv3/ircv3-specifications/pull/306). * When nick ownership is enabled, users can now select which enforcement mechanism to use with their nickname. +* Improved compatibility with ZNC's nickserv module. +* Halfops can now kick unprivileged users. ### Removed @@ -67,14 +76,17 @@ This release has a wide range of improvements and new features. Highlights inclu * 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`. * Updated internal command line parsing (thanks @iNecas!). -* Fixed handling of CIDR width in connection limiting/throttling +* `oragono genpasswd` now works when piping input in (fixes Docker installs). +* Fixed handling of CIDR width in connection limiting/throttling. +* Fixed many responses that violated the specifications (thanks to Ascrod, bogdomania, csmith, jesopo, jwheare). +* Fixed incorrect behavior of `CHANSERV OP` command. ### Internal Notes * `DLINE` and `KLINE` refactored, and expired bans are now removed from the database. * Logging system optimised. * Services handlers refactored. * Translations are now sent to/PR'd from CrowdIn automagically as we develop the software. -* Direct responses to client commands are now sent "synchronously", bypassing the sendq +* Direct responses to client commands are now sent "synchronously", bypassing the sendq. ## [0.12.0] - 2018-10-15 diff --git a/Gopkg.lock b/Gopkg.lock index 5f56b548..78234ee2 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -10,12 +10,12 @@ revision = "2aa6f33b730c79971cfc3c742f279195b0abc627" [[projects]] - digest = "1:abaaa7489a2f0f3afb2adc8ea1a282a5bd52350b87b26da220c94fc778d6d63b" + branch = "master" + digest = "1:289fa52f4d9e9c817a003324bc14e9339b996dbe02b9f6cfc57a9383e5365287" name = "github.com/docopt/docopt-go" packages = ["."] pruneopts = "UT" - revision = "784ddc588536785e7299f7272f39101f7faccc3f" - version = "0.6.2" + revision = "ee0de3bc6815ee19d4a46c7eb90f829db0e014b1" [[projects]] branch = "master" @@ -27,7 +27,7 @@ [[projects]] branch = "master" - digest = "1:36bb9ad6dfc5cf44265b463d53dd048e5da196b0f626e4805d6e327a8cbe9abd" + digest = "1:6bcd7bcd5e14cc9552fbf83b2f77f24935c0c502d009c9825b6c212c3f8eb967" name = "github.com/goshuirc/irc-go" packages = [ "ircfmt", @@ -35,7 +35,7 @@ "ircmsg", ] pruneopts = "UT" - revision = "8d136c4f92871c1c132bf702022363add479291b" + revision = "cf199aea7186fd960d0ed5abbf579bb0f9d890d1" [[projects]] digest = "1:c658e84ad3916da105a761660dcaeb01e63416c8ec7bc62256a9b411a05fcd67" @@ -93,12 +93,12 @@ version = "v1.0.0" [[projects]] - digest = "1:2cab41f59638fdb77dda96ab4f9b5860ef30f48967557254eba127e43c756f2e" + digest = "1:7df351557a6d5c30804e7d6f7ed87f2fccb0619c08fcc84869a93f22bec96c11" name = "github.com/tidwall/gjson" packages = ["."] pruneopts = "UT" - revision = "1e3f6aeaa5bad08d777ea7807b279a07885dd8b2" - version = "v1.1.3" + revision = "eee0b6226f0d1db2675a176fdfaa8419bcad4ca8" + version = "v1.2.1" [[projects]] branch = "master" @@ -109,12 +109,20 @@ revision = "ba9a043346eba55344e40d66a5e74cfda3a9d293" [[projects]] - branch = "master" - digest = "1:d3f968e2a2c9f8506ed44b01b605ade0176ba6cf73ff679073e77cfdef2c0d55" + digest = "1:8453ddbed197809ee8ca28b06bd04e127bec9912deb4ba451fea7a1eca578328" name = "github.com/tidwall/match" packages = ["."] pruneopts = "UT" - revision = "1731857f09b1f38450e2c12409748407822dc6be" + revision = "33827db735fff6510490d69a8622612558a557ed" + version = "v1.0.1" + +[[projects]] + branch = "master" + digest = "1:88611438dc87bda5862e2d12d8e901bac8ebfd4a9034a896d2f69835360439a7" + name = "github.com/tidwall/pretty" + packages = ["."] + pruneopts = "UT" + revision = "65a9db5fad5105a89e17f38adcc9878685be6d78" [[projects]] branch = "master" @@ -137,7 +145,7 @@ [[projects]] branch = "master" - digest = "1:1947d22ddfa0770abd34e49ba2ebc5d3e74de2c61dd5db8c3db750888715fe42" + digest = "1:67305bd1b1258ec12fe9dd5b2e19e8278f6a7d2a79cdb058afaee64cec8a1818" name = "golang.org/x/crypto" packages = [ "bcrypt", @@ -146,18 +154,18 @@ "ssh/terminal", ] pruneopts = "UT" - revision = "a92615f3c49003920a58dedcf32cf55022cefb8d" + revision = "74369b46fc6756741c016591724fd1cb8e26845f" [[projects]] branch = "master" - digest = "1:f5aa274a0377f85735edc7fedfb0811d3cbc20af91633797cb359e29c3272271" + digest = "1:0d703f14f9bbbe1070ff0ce86d749dcbc9d68fb0ae554252c09bd4bb37a072e7" name = "golang.org/x/sys" packages = [ "unix", "windows", ] pruneopts = "UT" - revision = "fa43e7bc11baaae89f3f902b2b4d832b68234844" + revision = "d0b11bdaac8adb652bff00e49bcacf992835621a" [[projects]] digest = "1:2b43038ba580394ec711455c92dc9c89f3c29ad758136afe6aef01685ef3b557" @@ -188,12 +196,12 @@ version = "v0.3.0" [[projects]] - digest = "1:342378ac4dcb378a5448dd723f0784ae519383532f5e70ade24132c4c8693202" + digest = "1:4d2e5a73dc1500038e504a8d78b986630e3626dc027bc030ba5c75da257cdb96" name = "gopkg.in/yaml.v2" packages = ["."] pruneopts = "UT" - revision = "5420a8b6744d3b0345ab293f6fcba19c978f1183" - version = "v2.2.1" + revision = "51d6538a90f86fe93ac480b35f37b2be17fef232" + version = "v2.2.2" [solve-meta] analyzer-name = "dep" @@ -212,8 +220,10 @@ "golang.org/x/crypto/bcrypt", "golang.org/x/crypto/sha3", "golang.org/x/crypto/ssh/terminal", + "golang.org/x/text/cases", + "golang.org/x/text/language", "golang.org/x/text/secure/precis", - "golang.org/x/text/unicode/norm", + "golang.org/x/text/width", "gopkg.in/yaml.v2", ] solver-name = "gps-cdcl" diff --git a/Gopkg.toml b/Gopkg.toml index 380726f7..b4656ed4 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -31,7 +31,7 @@ [[constraint]] name = "github.com/docopt/docopt-go" - version = "0.6.2" + branch = "master" [[constraint]] branch = "master" diff --git a/docs/MANUAL.md b/docs/MANUAL.md index cdadeffb..07812cab 100644 --- a/docs/MANUAL.md +++ b/docs/MANUAL.md @@ -590,6 +590,11 @@ connregex = ".+-.+CONNECT.+-.+ Client Connected \\[([^ ]+)\\] \\[u:([^ ]+)\\] \\ kline = "DLINE ANDKILL 2h %i :Open proxy found on your host."; ```` +## ZNC + +Versions of ZNC prior to 1.7 have a [bug](https://github.com/znc/znc/issues/1212) in their SASL implementation that renders them incompatible with Oragono. However, you should be able to authenticate from ZNC using its [nickserv](https://wiki.znc.in/Nickserv) module. + + -------------------------------------------------------------------------------------------- diff --git a/irc/constants.go b/irc/constants.go index 5b90adbe..6bd87bcb 100644 --- a/irc/constants.go +++ b/irc/constants.go @@ -9,7 +9,7 @@ import "fmt" const ( // SemVer is the semantic version of Oragono. - SemVer = "0.13.0-unreleased" + SemVer = "1.0.0-rc1" ) var ( diff --git a/vendor b/vendor index 0d667e5d..72043bab 160000 --- a/vendor +++ b/vendor @@ -1 +1 @@ -Subproject commit 0d667e5d09fd0a2041154eca9cdd1915b9843453 +Subproject commit 72043bab39044196e57bff1fe5e59c9ec81e59f3