Browse Source

changelog, documentation, and distrib updates for ergo 2.7

tags/v2.7.0-rc1
Shivaram Lingamneni 2 years ago
parent
commit
6ff0486aa0
5 changed files with 206 additions and 164 deletions
  1. 42
    0
      CHANGELOG.md
  2. 4
    4
      distrib/systemd/ergo.service
  3. 132
    133
      docs/MANUAL.md
  4. 26
    26
      docs/USERGUIDE.md
  5. 2
    1
      irc/server.go

+ 42
- 0
CHANGELOG.md View File

@@ -1,6 +1,48 @@
1 1
 # Changelog
2 2
 All notable changes to Ergo will be documented in this file.
3 3
 
4
+## [2.7.0-rc1] - 2021-05-30
5
+
6
+We're pleased to be publishing Ergo 2.7.0-rc1, our first release candidate under our new name of Ergo. This release contains bug fixes and minor enhancements.
7
+
8
+This release includes changes to the config file format, all of which are fully backwards-compatible and do not require updating the file before upgrading. This release includes no changes to the database format.
9
+
10
+Because the name of the executable has changed from `oragono` to `ergo` (`ergo.exe` on Windows), you may need to update your system configuration (e.g., scripts or systemd unit files that reference the executable).
11
+
12
+Many thanks to [@ajaspers](https://github.com/ajaspers) and [@jesopo](https://github.com/jesopo) for contributing patches, to [@ajaspers](https://github.com/ajaspers), [@ChrisTX](https://github.com/ChrisTX), [@emersion](https://github.com/emersion), [@jwheare](https://github.com/jwheare), [@kylef](https://github.com/kylef), [@Mikaela](https://github.com/Mikaela), [@mogad0n](https://github.com/mogad0n), and [@ProgVal](https://github.com/ProgVal) for reporting issues and helping test, and to our translators for contributing translations.
13
+
14
+### Changed
15
+* The project was renamed from "Oragono" to "Ergo" (#897, thanks to everyone who contributed feedback or voted in the poll)
16
+
17
+### Config changes
18
+* Entries in `server.listeners` now take a new key, `min-tls-version`, that can be used to set the minimum required TLS version; the recommended default value is `1.2` (#1611, thanks [@ChrisTX](https://github.com/ChrisTX)!)
19
+* Added `max-conns` (maximum connection count) and `max-conn-lifetime` (maximum lifetime of a connection before it is cycled) to `datastore.mysql` (#1622)
20
+* Added `massmessage` operator capability to allow sending NOTICEs to all connected users (#1153, #1629, thanks [@jesopo](https://github.com/jesopo)!)
21
+
22
+### Security
23
+* If `require-sasl.enabled` is set to `true`, `tor-listeners.require-sasl` will be automatically set to `true` as well (#1636)
24
+* It is now possible to set the minimum required TLS version, using the `min-tls-version` key in listener configuration
25
+* Configurations that require SASL but allow user registration now produce a warning (#1637)
26
+
27
+### Added:
28
+* Operators with the correct permissions can now send "mass messages", e.g. `/NOTICE $$*` will send a `NOTICE` to all users (#1153, #1629, thanks [@jesopo](https://github.com/jesopo)!)
29
+* Operators can now extend the maximum (non-tags) length of the IRC line using the `server.max-line-len` configuration key. This is not recommended for use outside of "closed-circuit" deployments where IRC operators have full control of all client software. (#1651)
30
+
31
+### Fixed
32
+* `RELAYMSG` now sends a full NUH ("nick-user-host"), instead of only the relay nickname, as the message source (#1647, thanks [@ProgVal](https://github.com/ProgVal), [@jwheare](https://github.com/jwheare), and [@Mikaela](https://github.com/Mikaela)!)
33
+* Fixed a case where channels would remain visible in `/LIST` after unregistration (#1619, thanks [@ajaspers](https://github.com/ajaspers)!)
34
+* Fixed incorrect tags on `JOIN` lines in `+u` ("auditorium") channels (#1642)
35
+* Fixed an issue where LUSERS counts could get out of sync (#1617)
36
+* It was impossible to add a restricted set of snomasks to an operator's permissions; this has been fixed (#1618)
37
+* Fixed incorrect language in `NS INFO` responses (#1627, thanks [@ajaspers](https://github.com/ajaspers)!)
38
+* Fixed a case where the `REGISTER` command would emit an invalid error message (#1633, thanks [@ajaspers](https://github.com/ajaspers)!)
39
+
40
+### Removed
41
+* Removed the `draft/resume-0.5` capability, and the associated `RESUME` and `BRB` commands (#1624)
42
+
43
+### Internal
44
+* Optimized MySQL storage of direct messages (#1615)
45
+
4 46
 ## [2.6.1] - 2021-04-26
5 47
 
6 48
 Oragono 2.6.1 is a bugfix release, fixing a security issue that is critical for some private server configurations. We regret the oversight.

distrib/systemd/oragono.service → distrib/systemd/ergo.service View File

@@ -1,5 +1,5 @@
1 1
 [Unit]
2
-Description=oragono
2
+Description=ergo
3 3
 After=network.target
4 4
 # If you are using MySQL for history storage, comment out the above line
5 5
 # and uncomment these two instead (you must independently install and configure
@@ -9,9 +9,9 @@ After=network.target
9 9
 
10 10
 [Service]
11 11
 Type=simple
12
-User=oragono
13
-WorkingDirectory=/home/oragono
14
-ExecStart=/home/oragono/oragono run --conf /home/oragono/ircd.yaml
12
+User=ergo
13
+WorkingDirectory=/home/ergo
14
+ExecStart=/home/ergo/ergo run --conf /home/ergo/ircd.yaml
15 15
 ExecReload=/bin/kill -HUP $MAINPID
16 16
 Restart=on-failure
17 17
 LimitNOFILE=1048576

+ 132
- 133
docs/MANUAL.md View File

@@ -1,12 +1,13 @@
1
+      ___ _ __ __ _  ___  
2
+     / _ \ '__/ _` |/ _ \ 
3
+    |  __/ | | (_| | (_) |
4
+     \___|_|  \__, |\___/ 
5
+               __/ |      
6
+              |___/     
1 7
 
2
-          ▄▄▄   ▄▄▄·  ▄▄ •        ▐ ▄       
3
-    ▪     ▀▄ █·▐█ ▀█ ▐█ ▀ ▪▪     •█▌▐█▪     
4
-     ▄█▀▄ ▐▀▀▄ ▄█▀▀█ ▄█ ▀█▄ ▄█▀▄▪▐█▐▐▌ ▄█▀▄ 
5
-    ▐█▌.▐▌▐█•█▌▐█ ▪▐▌▐█▄▪▐█▐█▌ ▐▌██▐█▌▐█▌.▐▌
6
-     ▀█▄▀▪.▀  ▀ ▀  ▀ ·▀▀▀▀  ▀█▄▀ ▀▀ █▪ ▀█▄▀▪
8
+       Ergo IRCd Manual
9
+      https://ergo.chat/
7 10
 
8
-              Oragono IRCd Manual
9
-              https://oragono.io/
10 11
 
11 12
 _Copyright © Daniel Oaks <daniel@danieloaks.net>, Shivaram Lingamneni <slingamn@cs.stanford.edu>_
12 13
 
@@ -28,7 +29,7 @@ _Copyright © Daniel Oaks <daniel@danieloaks.net>, Shivaram Lingamneni <slingamn
28 29
     - [Environment variables](#environment-variables)
29 30
     - [Productionizing with systemd](#productionizing-with-systemd)
30 31
     - [Using valid TLS certificates](#using-valid-tls-certificates)
31
-    - [Upgrading to a new version of Oragono](#upgrading-to-a-new-version-of-oragono)
32
+    - [Upgrading to a new version of Ergo](#upgrading-to-a-new-version-of-ergo)
32 33
 - [Features](#features)
33 34
     - [User Accounts](#user-accounts)
34 35
     - [Account/Nick Modes](#accountnick-modes)
@@ -70,31 +71,31 @@ _Copyright © Daniel Oaks <daniel@danieloaks.net>, Shivaram Lingamneni <slingamn
70 71
 
71 72
 # Introduction
72 73
 
73
-This document goes over the Oragono IRC server, how to get it running and how to use it once it is up and running!
74
+This document goes over the Ergo IRC server, how to get it running and how to use it once it is up and running!
74 75
 
75
-If you have any suggestions, issues or questions, feel free to submit an issue on our [GitHub repo](https://github.com/oragono/oragono/) or ask in our channel [`#oragono` on freenode](ircs://irc.freenode.net:6697/#oragono).
76
+If you have any suggestions, issues or questions, feel free to submit an issue on our [GitHub repo](https://github.com/ergochat/ergo) or ask in our channel [`#ergo` on irc.ergo.chat](ircs://irc.ergo.chat:6697/#ergo) or [`#ergo` on irc.libera.chat](ircs://irc.libera.chat:6697/#ergo).
76 77
 
77 78
 
78 79
 ## Project Basics
79 80
 
80
-Oragono is an ircd written "from scratch" in the [Go](https://en.wikipedia.org/wiki/Go_%28programming_language%29) language, i.e., it [shares no code](https://github.com/grawity/irc-docs/blob/master/family-tree.txt) with the original ircd implementation or any other major ircd. It began as [ergonomadic](https://github.com/jlatt/ergonomadic), which was developed by Jeremy Latt between 2012 and 2014. In 2016, Daniel Oaks forked the project under its current name Oragono, in order to prototype [IRCv3](https://ircv3.net/) features and for use as a reference implementation of the [Modern IRC specification](https://modern.ircdocs.horse). Oragono 1.0.0 was released in February 2019, and as of 2020 the project is under active development by multiple contributors.
81
+Ergo is an ircd written "from scratch" in the [Go](https://en.wikipedia.org/wiki/Go_%28programming_language%29) language, i.e., it [shares no code](https://github.com/grawity/irc-docs/blob/master/family-tree.txt) with the original ircd implementation or any other major ircd. It began as [ergonomadic](https://github.com/jlatt/ergonomadic), which was developed by Jeremy Latt between 2012 and 2014. In 2016, Daniel Oaks forked the project under the name Oragono, in order to prototype [IRCv3](https://ircv3.net/) features and for use as a reference implementation of the [Modern IRC specification](https://modern.ircdocs.horse). Oragono 1.0.0 was released in February 2019; the project switched to its current name of Ergo in June 2021.
81 82
 
82
-Oragono's core design goals are:
83
+Ergo's core design goals are:
83 84
 
84 85
 * Being simple to set up and use
85 86
 * Combining the features of an ircd, a services framework, and a bouncer (integrated account management, history storage, and bouncer functionality)
86 87
 * Bleeding-edge [IRCv3 support](http://ircv3.net/software/servers.html), suitable for use as an IRCv3 reference implementation
87 88
 * Highly customizable via a rehashable (i.e., reloadable at runtime) YAML config
88 89
 
89
-In addition to its unique features (integrated services and bouncer, comprehensive internationalization), Oragono also strives for feature parity with other major servers. Oragono is a mature project with multiple communities using it as a day-to-day chat server --- we encourage you to consider it for your organization or community!
90
+In addition to its unique features (integrated services and bouncer, comprehensive internationalization), Ergo also strives for feature parity with other major servers. Ergo is a mature project with multiple communities using it as a day-to-day chat server --- we encourage you to consider it for your organization or community!
90 91
 
91 92
 ## Scalability
92 93
 
93
-We believe Oragono should scale comfortably to 10,000 clients and 2,000 clients per channel, making it suitable for small to medium-sized teams and communities. Oragono does not currently support server-to-server linking (federation), meaning that all clients must connect to the same instance. However, since Oragono is implemented in Go, it is reasonably effective at distributing work across multiple cores on a single server; in other words, it should "scale up" rather than "scaling out". (Federation is [planned](https://github.com/oragono/oragono/issues/26) but is not scheduled for development in the near term.)
94
+We believe Ergo should scale comfortably to 10,000 clients and 2,000 clients per channel, making it suitable for small to medium-sized teams and communities. Ergo does not currently support server-to-server linking (federation), meaning that all clients must connect to the same instance. However, since Ergo is implemented in Go, it is reasonably effective at distributing work across multiple cores on a single server; in other words, it should "scale up" rather than "scaling out". (Horizontal scalability is [planned](https://github.com/ergochat/ergo/issues/1532) but is not scheduled for development in the near term.)
94 95
 
95
-Even though it runs as a single instance, Oragono can be deployed for high availability (i.e., with no single point of failure) using Kubernetes. This technique uses a k8s [LoadBalancer](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/) to receive external traffic and a [Volume](https://kubernetes.io/docs/concepts/storage/volumes/) to store the embedded database file. See [Hashbang's implementation](https://github.com/hashbang/gitops/tree/master/ircd) for a "worked example".
96
+Even though it runs as a single instance, Ergo can be deployed for high availability (i.e., with no single point of failure) using Kubernetes. This technique uses a k8s [LoadBalancer](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/) to receive external traffic and a [Volume](https://kubernetes.io/docs/concepts/storage/volumes/) to store the embedded database file. See [Hashbang's implementation](https://github.com/hashbang/gitops/tree/master/ircd) for a "worked example".
96 97
 
97
-If you're interested in deploying Oragono at scale or for high availability, or want performance tuning advice, come find us on [`#oragono` on freenode](ircs://irc.freenode.net:6697/#oragono), we're very interested in what our software can do!
98
+If you're interested in deploying Ergo at scale or for high availability, or want performance tuning advice, come find us on [`#ergo` on Libera](ircs://irc.libera.chat:6697/#ergo), we're very interested in what our software can do!
98 99
 
99 100
 
100 101
 --------------------------------------------------------------------------------------------
@@ -102,42 +103,40 @@ If you're interested in deploying Oragono at scale or for high availability, or
102 103
 
103 104
 # Installing
104 105
 
105
-In this section, we'll explain how to install and use the Oragono IRC server.
106
+In this section, we'll explain how to install and use the Ergo IRC server.
106 107
 
107 108
 
108 109
 ## Windows
109 110
 
110
-To get started with Oragono on Windows:
111
+To get started with Ergo on Windows:
111 112
 
112
-1. Make sure you have the [latest release](https://github.com/oragono/oragono/releases/latest) downloaded.
113
+1. Make sure you have the [latest release](https://github.com/ergochat/ergo/releases/latest) downloaded.
113 114
 1. Extract the zip file to a folder.
114 115
 1. Copy and rename `default.yaml` to `ircd.yaml`.
115 116
 1. Open up `ircd.yaml` using any text editor, and then save it once you're happy.
116
-1. Open up a `cmd.exe` window, then `cd` to where you have Oragono extracted.
117
-1. Run `oragono.exe mkcerts` if you want to generate new self-signed SSL/TLS certificates (note that you can't enable STS if you use self-signed certs).
117
+1. Open up a `cmd.exe` window, then `cd` to where you have Ergo extracted.
118
+1. Run `ergo mkcerts` if you want to generate new self-signed SSL/TLS certificates (note that you can't enable STS if you use self-signed certs).
118 119
 
119
-To start the server, type `oragono.exe run` and hit enter, and the server should start!
120
+To start the server, type `ergo run` and hit enter, and the server should start!
120 121
 
121 122
 
122 123
 ## macOS / Linux / Raspberry Pi
123 124
 
124
-To get started with Oragono on macOS, Linux, or on a Raspberry Pi:
125
+To get started with Ergo on macOS, Linux, or on a Raspberry Pi:
125 126
 
126
-1. Make sure you have the [latest release](https://github.com/oragono/oragono/releases/latest) for your OS/distro downloaded.
127
+1. Make sure you have the [latest release](https://github.com/ergochat/ergo/releases/latest) for your OS/distro downloaded.
127 128
 1. Extract the tar.gz file to a folder.
128 129
 1. Copy and rename `default.yaml` to `ircd.yaml`.
129 130
 1. Open up `ircd.yaml` using any text editor, and then save it once you're happy.
130
-1. Open up a Terminal window, then `cd` to where you have Oragono extracted.
131
-1. Run `./oragono mkcerts` if you want to generate new self-signed SSL/TLS certificates (note that you can't enable STS if you use self-signed certs).
131
+1. Open up a Terminal window, then `cd` to where you have Ergo extracted.
132
+1. Run `./ergo mkcerts` if you want to generate new self-signed SSL/TLS certificates (note that you can't enable STS if you use self-signed certs).
132 133
 
133
-To start the server, type `./oragono run` and hit enter, and the server should be ready to use!
134
-
135
-If you're using Arch Linux, you can also install the [`oragono` package](https://aur.archlinux.org/packages/oragono/) from the AUR.
134
+To start the server, type `./ergo run` and hit enter, and the server should be ready to use!
136 135
 
137 136
 
138 137
 ## Docker
139 138
 
140
-1. Pull the latest version of Oragono: `docker pull oragono/oragono:latest`
139
+1. Pull the latest version of Ergo: `docker pull oragono/oragono:latest`
141 140
 1. Create a volume for persistent data: `docker volume create oragono-data`
142 141
 1. Run the container, exposing the default ports: `docker run -d --name oragono -v oragono-data:/ircd-data -p 6667:6667 -p 6697:6697 oragono/oragono:latest`
143 142
 
@@ -146,27 +145,27 @@ For further information and a sample docker-compose file see the separate [Docke
146 145
 
147 146
 ## Building from source
148 147
 
149
-You'll need an [up-to-date distribution of the Go language for your OS and architecture](https://golang.org/dl/). Once you have that, just clone the repository and run `make build`. If everything goes well, you should now have an executable named `oragono` in the base directory of the project.
148
+You'll need an [up-to-date distribution of the Go language for your OS and architecture](https://golang.org/dl/). Once you have that, just clone the repository and run `make build`. If everything goes well, you should now have an executable named `ergo` in the base directory of the project.
150 149
 
151 150
 
152 151
 ## Becoming an operator
153 152
 
154
-Many administrative actions on an IRC server are performed "in-band" as IRC commands sent from a client. The client in question must be an IRC operator ("oper", "ircop"). The easiest way to become an operator on your new Oragono instance is first to pick a strong, secure password, then "hash" it using the `oragono genpasswd` command (run `oragono genpasswd` from the command line, then enter your password twice), then copy the resulting hash into the `opers` section of your `ircd.yaml` file. Then you can become an operator by issuing the IRC command: `/oper admin mysecretpassword`.
153
+Many administrative actions on an IRC server are performed "in-band" as IRC commands sent from a client. The client in question must be an IRC operator ("oper", "ircop"). The easiest way to become an operator on your new Ergo instance is first to pick a strong, secure password, then "hash" it using the `ergo genpasswd` command (run `ergo genpasswd` from the command line, then enter your password twice), then copy the resulting hash into the `opers` section of your `ircd.yaml` file. Then you can become an operator by issuing the IRC command: `/oper admin mysecretpassword`.
155 154
 
156 155
 
157 156
 ## Rehashing
158 157
 
159
-The primary way of configuring Oragono is by modifying the configuration file. Most changes to the configuration file can be applied at runtime by "rehashing", i.e., reloading the configuration file without restarting the server process. This has the advantage of not disconnecting users. There are two ways to rehash Oragono:
158
+The primary way of configuring Ergo is by modifying the configuration file. Most changes to the configuration file can be applied at runtime by "rehashing", i.e., reloading the configuration file without restarting the server process. This has the advantage of not disconnecting users. There are two ways to rehash Ergo:
160 159
 
161 160
 1. If you are an operator with the `rehash` capability, you can issue the `/REHASH` command (you may have to `/quote rehash`, depending on your client)
162
-1. You can send the `SIGHUP` signal to Oragono, e.g., via `killall -HUP oragono`
161
+1. You can send the `SIGHUP` signal to Ergo, e.g., via `killall -HUP ergo`
163 162
 
164 163
 Rehashing also reloads TLS certificates and the MOTD. Some configuration settings cannot be altered by rehash. You can monitor either the response to the `/REHASH` command, or the server logs, to see if your rehash was successful.
165 164
 
166 165
 
167 166
 ## Environment variables
168 167
 
169
-Oragono can also be configured using environment variables, using the following technique:
168
+Ergo can also be configured using environment variables, using the following technique:
170 169
 
171 170
 1. Find the "path" of the config variable you want to override in the YAML file, e.g., `server.websockets.allowed-origins`
172 171
 1. Convert each path component from "kebab case" to "screaming snake case", e.g., `SERVER`, `WEBSOCKETS`, and `ALLOWED_ORIGINS`.
@@ -178,21 +177,21 @@ However, settings that were overridden using this technique cannot be rehashed -
178 177
 
179 178
 ## Productionizing with systemd
180 179
 
181
-The recommended way to operate oragono as a service on Linux is via systemd. This provides a standard interface for starting, stopping, and rehashing (via `systemctl reload`) the service. It also captures oragono's loglines (sent to stderr in the default configuration) and writes them to the system journal.
180
+The recommended way to operate ergo as a service on Linux is via systemd. This provides a standard interface for starting, stopping, and rehashing (via `systemctl reload`) the service. It also captures ergo's loglines (sent to stderr in the default configuration) and writes them to the system journal.
182 181
 
183
-The only major distribution that currently packages Oragono is Arch Linux; the aforementioned AUR package includes a systemd unit file. However, it should be fairly straightforward to set up a productionized Oragono on any Linux distribution. Here's a quickstart guide for Debian/Ubuntu:
182
+The only major distribution that currently packages Ergo is Arch Linux; the aforementioned AUR package includes a systemd unit file. However, it should be fairly straightforward to set up a productionized Ergo on any Linux distribution. Here's a quickstart guide for Debian/Ubuntu:
184 183
 
185
-1. Create a dedicated, unprivileged role user who will own the oragono process and all its associated files: `adduser --system --group oragono`. This user now has a home directory at `/home/oragono`. To prevent other users from viewing Oragono's configuration file, database, and certificates, restrict the permissions on the home directory: `chmod 0700 /home/oragono`.
186
-1. Copy the executable binary `oragono`, the config file `ircd.yaml`, the database `ircd.db`, and the self-signed TLS certificate (`fullchain.pem` and `privkey.pem`) to `/home/oragono`. (If you don't have an `ircd.db`, it will be auto-created as `/home/oragono/ircd.db` on first launch.) Ensure that they are all owned by the new oragono role user: `sudo chown oragono:oragono /home/oragono/*`. Ensure that the configuration file logs to stderr.
187
-1. Install our example [oragono.service](https://github.com/oragono/oragono/blob/master/distrib/systemd/oragono.service) file to `/etc/systemd/system/oragono.service`.
184
+1. Create a dedicated, unprivileged role user who will own the ergo process and all its associated files: `adduser --system --group ergo`. This user now has a home directory at `/home/ergo`. To prevent other users from viewing Ergo's configuration file, database, and certificates, restrict the permissions on the home directory: `chmod 0700 /home/ergo`.
185
+1. Copy the executable binary `ergo`, the config file `ircd.yaml`, the database `ircd.db`, and the self-signed TLS certificate (`fullchain.pem` and `privkey.pem`) to `/home/ergo`. (If you don't have an `ircd.db`, it will be auto-created as `/home/ergo/ircd.db` on first launch.) Ensure that they are all owned by the new ergo role user: `sudo chown ergo:ergo /home/ergo/*`. Ensure that the configuration file logs to stderr.
186
+1. Install our example [ergo.service](https://github.com/ergochat/ergo/blob/master/distrib/systemd/ergo.service) file to `/etc/systemd/system/ergo.service`.
188 187
 1. Enable and start the new service with the following commands:
189 188
     1. `systemctl daemon-reload`
190
-    1. `systemctl enable oragono.service`
191
-    1. `systemctl start oragono.service`
192
-    1. Confirm that the service started correctly with `systemctl status oragono.service`
189
+    1. `systemctl enable ergo.service`
190
+    1. `systemctl start ergo.service`
191
+    1. Confirm that the service started correctly with `systemctl status ergo.service`
193 192
 
194 193
 
195
-On a non-systemd system, oragono can be configured to log to a file and used [logrotate(8)](https://linux.die.net/man/8/logrotate), since it will reopen its log files (as well as rehashing the config file) upon receiving a SIGHUP. To rehash manually outside the context of log rotation, you can use `killall -HUP oragono` or `pkill -HUP oragono`.
194
+On a non-systemd system, ergo can be configured to log to a file and used [logrotate(8)](https://linux.die.net/man/8/logrotate), since it will reopen its log files (as well as rehashing the config file) upon receiving a SIGHUP. To rehash manually outside the context of log rotation, you can use `killall -HUP ergo` or `pkill -HUP ergo`.
196 195
 
197 196
 
198 197
 ## Using valid TLS certificates
@@ -200,7 +199,7 @@ On a non-systemd system, oragono can be configured to log to a file and used [lo
200 199
 The other major hurdle for productionizing (but one well worth the effort) is obtaining valid TLS certificates for your domain, if you haven't already done so:
201 200
 
202 201
 1. The simplest way to get valid TLS certificates is from [Let's Encrypt](https://letsencrypt.org/) with [Certbot](https://certbot.eff.org/). The correct procedure will depend on whether you are already running a web server on port 80. If you are, follow the guides on the Certbot website; if you aren't, you can use `certbot certonly --standalone --preferred-challenges http -d example.com` (replace `example.com` with your domain).
203
-1. At this point, you should have certificates available at `/etc/letsencrypt/live/example.com` (replacing `example.com` with your domain). You should serve `fullchain.pem` as the certificate and `privkey.pem` as its private key. However, these files are owned by root and the private key is not readable by the oragono role user, so you won't be able to use them directly in their current locations. You can write a post-renewal hook for certbot to make copies of these certificates accessible to the oragono role user. For example, install the following script as `/etc/letsencrypt/renewal-hooks/post/install-oragono-certificates`, again replacing `example.com` with your domain name, and chmod it 0755:
202
+1. At this point, you should have certificates available at `/etc/letsencrypt/live/example.com` (replacing `example.com` with your domain). You should serve `fullchain.pem` as the certificate and `privkey.pem` as its private key. However, these files are owned by root and the private key is not readable by the ergo role user, so you won't be able to use them directly in their current locations. You can write a post-renewal hook for certbot to make copies of these certificates accessible to the ergo role user. For example, install the following script as `/etc/letsencrypt/renewal-hooks/post/install-ergo-certificates`, again replacing `example.com` with your domain name, and chmod it 0755:
204 203
 
205 204
 ````bash
206 205
 #!/bin/bash
@@ -208,29 +207,29 @@ The other major hurdle for productionizing (but one well worth the effort) is ob
208 207
 set -eu
209 208
 
210 209
 umask 077
211
-cp /etc/letsencrypt/live/example.com/fullchain.pem /home/oragono/
212
-cp /etc/letsencrypt/live/example.com/privkey.pem /home/oragono/
213
-chown oragono:oragono /home/oragono/*.pem
214
-# rehash oragono, which will reload the certificates:
215
-systemctl reload oragono.service
210
+cp /etc/letsencrypt/live/example.com/fullchain.pem /home/ergo/
211
+cp /etc/letsencrypt/live/example.com/privkey.pem /home/ergo/
212
+chown ergo:ergo /home/ergo/*.pem
213
+# rehash ergo, which will reload the certificates:
214
+systemctl reload ergo.service
216 215
 ````
217 216
 
218 217
 Executing this script manually will install the certificates for the first time and perform a rehash, enabling them.
219 218
 
220
-If you are using Certbot 0.29.0 or higher, you can also change the ownership of the files under `/etc/letsencrypt` so that the oragono user can read them, as described in the [UnrealIRCd documentation](https://www.unrealircd.org/docs/Setting_up_certbot_for_use_with_UnrealIRCd#Tweaking_permissions_on_the_key_file).
219
+If you are using Certbot 0.29.0 or higher, you can also change the ownership of the files under `/etc/letsencrypt` so that the ergo user can read them, as described in the [UnrealIRCd documentation](https://www.unrealircd.org/docs/Setting_up_certbot_for_use_with_UnrealIRCd#Tweaking_permissions_on_the_key_file).
221 220
 
222 221
 
223
-## Upgrading to a new version of Oragono
222
+## Upgrading to a new version of Ergo
224 223
 
225
-As long as you are using official releases or release candidates of Oragono, any backwards-incompatible changes should be described in the changelog.
224
+As long as you are using official releases or release candidates of Ergo, any backwards-incompatible changes should be described in the changelog.
226 225
 
227
-In general, the config file format should be fully backwards and forwards compatible. Unless otherwise noted, no config file changes should be necessary when upgrading Oragono. However, the "config changes" section of the changelog will typically describe new sections that can be added to your config to enable new functionality, as well as changes in the recommended values of certain fields.
226
+In general, the config file format should be fully backwards and forwards compatible. Unless otherwise noted, no config file changes should be necessary when upgrading Ergo. However, the "config changes" section of the changelog will typically describe new sections that can be added to your config to enable new functionality, as well as changes in the recommended values of certain fields.
228 227
 
229 228
 The database is versioned; upgrades that involve incompatible changes to the database require updating the database. If you have `datastore.autoupgrade` enabled in your config, the database will be backed up and upgraded when you restart your server when required. Otherwise, you can apply upgrades manually:
230 229
 
231 230
 1. Stop your server
232 231
 1. Make a backup of your database file
233
-1. Run `oragono upgradedb` (from the same working directory and with the same arguments that you would use when running `oragono run`)
232
+1. Run `ergo upgradedb` (from the same working directory and with the same arguments that you would use when running `ergo run`)
234 233
 1. Start the server again
235 234
 
236 235
 If you want to run our master branch as opposed to our releases, come find us in our channel and we can guide you around any potential pitfalls.
@@ -241,12 +240,12 @@ If you want to run our master branch as opposed to our releases, come find us in
241 240
 
242 241
 # Features
243 242
 
244
-In this section, we'll explain and go through using various features of the Oragono IRC server.
243
+In this section, we'll explain and go through using various features of the Ergo IRC server.
245 244
 
246 245
 
247 246
 ## User Accounts
248 247
 
249
-In most IRC servers you can use `NickServ` to register an account. You can do the same thing with Oragono, by default, with no other software needed!
248
+In most IRC servers you can use `NickServ` to register an account. You can do the same thing with Ergo, by default, with no other software needed!
250 249
 
251 250
 To register an account, use:
252 251
 
@@ -264,7 +263,7 @@ If your client doesn't support SASL, you can typically use the "server password"
264 263
 
265 264
 ## Account/Nick Modes
266 265
 
267
-Oragono supports several different modes of operation with respect to accounts and nicknames.
266
+Ergo supports several different modes of operation with respect to accounts and nicknames.
268 267
 
269 268
 ### Nick equals account
270 269
 
@@ -302,7 +301,7 @@ To enable this mode as the server operator, set the following configs (they are
302 301
 
303 302
 ### No nick reservation
304 303
 
305
-This makes Oragono's services act similar to Quakenet's Q bot. In this mode, users cannot own or reserve nicknames. In other words, there is no connection between account names and nicknames. Anyone can use any nickname (as long as it's not already in use by another running client). However, accounts are still useful: they can be used to register channels (see below), and some IRCv3-capable clients (with the `account-tag` or `extended-join` capabilities) may be able to take advantage of them.
304
+This makes Ergo's services act similar to Quakenet's Q bot. In this mode, users cannot own or reserve nicknames. In other words, there is no connection between account names and nicknames. Anyone can use any nickname (as long as it's not already in use by another running client). However, accounts are still useful: they can be used to register channels (see below), and some IRCv3-capable clients (with the `account-tag` or `extended-join` capabilities) may be able to take advantage of them.
306 305
 
307 306
 To enable this mode, set the following configs:
308 307
 
@@ -312,7 +311,7 @@ To enable this mode, set the following configs:
312 311
 
313 312
 ### SASL-only mode
314 313
 
315
-This mode is comparable to Slack, Mattermost, or similar products intended as internal chat servers for an organization or team. In this mode, clients cannot connect to the server unless they log in with SASL as part of the initial handshake. This allows Oragono to be deployed facing the public Internet, with fine-grained control over who can log in.
314
+This mode is comparable to Slack, Mattermost, or similar products intended as internal chat servers for an organization or team. In this mode, clients cannot connect to the server unless they log in with SASL as part of the initial handshake. This allows Ergo to be deployed facing the public Internet, with fine-grained control over who can log in.
316 315
 
317 316
 In this mode, clients must not be allowed to register their own accounts, so user-initiated account registration must be disabled. Accordingly, an operator must do the initial account creation, using the `SAREGISTER` command of NickServ. (For more details, `/msg NickServ help saregister`.) To bootstrap this process, you can make an initial connection from localhost, which is exempt (by default) from the requirement, or temporarily add your own IP to the exemption list. You can also use a more permissive configuration for bootstrapping, then switch to this one once you have your account. Another possibility is permanently exempting an internal network, e.g., `10.0.0.0/8`, that only trusted people can access.
318 317
 
@@ -323,7 +322,7 @@ To enable this mode, use the configs from the "nick equals account" section (i.e
323 322
 
324 323
 ## Email verification
325 324
 
326
-By default, account registrations complete immediately and do not require a verification step. However, like other service frameworks, Oragono's NickServ can be configured to require email verification of registrations. The main challenge here is to prevent your emails from being marked as spam, which you can do by configuring [SPF](https://en.wikipedia.org/wiki/Sender_Policy_Framework), [DKIM](https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail), and [DMARC](https://en.wikipedia.org/wiki/DMARC). For example, this configuration (when added to the `accounts.registration` section) enables email verification, with the emails being signed with a DKIM key and sent directly from Oragono:
325
+By default, account registrations complete immediately and do not require a verification step. However, like other service frameworks, Ergo's NickServ can be configured to require email verification of registrations. The main challenge here is to prevent your emails from being marked as spam, which you can do by configuring [SPF](https://en.wikipedia.org/wiki/Sender_Policy_Framework), [DKIM](https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail), and [DMARC](https://en.wikipedia.org/wiki/DMARC). For example, this configuration (when added to the `accounts.registration` section) enables email verification, with the emails being signed with a DKIM key and sent directly from Ergo:
327 326
 
328 327
 ```yaml
329 328
         email-verification:
@@ -355,7 +354,7 @@ If your friends have registered accounts, you can automatically grant them opera
355 354
 
356 355
 ## Language
357 356
 
358
-Oragono supports multiple languages! Specifically, once you connect you're able to get server messages in other languages (messages from other users will still be in their original languages, though).
357
+Ergo supports multiple languages! Specifically, once you connect you're able to get server messages in other languages (messages from other users will still be in their original languages, though).
359 358
 
360 359
 To see which languages are supported, run this command:
361 360
 
@@ -390,24 +389,24 @@ Our language and translation functionality is very early, so feel free to let us
390 389
 
391 390
 ## Multiclient ("Bouncer")
392 391
 
393
-Traditionally, every connection to an IRC server is separate must use a different nickname. [Bouncers](https://en.wikipedia.org/wiki/BNC_%28software%29#IRC) are used to work around this, by letting multiple clients connect to a single nickname. With Oragono, if the server is configured to allow it, multiple clients can share a single nickname without needing a bouncer. To use this feature, both connections must authenticate with SASL to the same user account and then use the same nickname during connection registration (while connecting to the server) – once you've logged-in, you can't share another nickname.
392
+Traditionally, every connection to an IRC server is separate must use a different nickname. [Bouncers](https://en.wikipedia.org/wiki/BNC_%28software%29#IRC) are used to work around this, by letting multiple clients connect to a single nickname. With Ergo, if the server is configured to allow it, multiple clients can share a single nickname without needing a bouncer. To use this feature, both connections must authenticate with SASL to the same user account and then use the same nickname during connection registration (while connecting to the server) – once you've logged-in, you can't share another nickname.
394 393
 
395 394
 To enable this functionality, set `accounts.multiclient.enabled` to `true`. Setting `accounts.multiclient.allowed-by-default` to `true` will allow this for everyone. If `allowed-by-default` is `false` (but `enabled` is still `true`), users can opt in to shared connections using `/msg NickServ SET multiclient true`.
396 395
 
397 396
 You can see a list of your active sessions and their idle times with `/msg NickServ sessions` (network operators can use `/msg NickServ sessions nickname` to see another user's sessions).
398 397
 
399
-Oragono now supports "always-on clients" that remain present on the server (holding their nickname, subscribed to channels, able to receive DMs, etc.) even when no actual clients are connected. To enable this as a server operator, set `accounts.multiclient.always-on` to either `opt-in`, `opt-out`, or `mandatory`. To enable or disable it as a client (if the server setting is `opt-in` or `opt-out` respectively), use `/msg NickServ set always-on true` (or `false`).
398
+Ergo now supports "always-on clients" that remain present on the server (holding their nickname, subscribed to channels, able to receive DMs, etc.) even when no actual clients are connected. To enable this as a server operator, set `accounts.multiclient.always-on` to either `opt-in`, `opt-out`, or `mandatory`. To enable or disable it as a client (if the server setting is `opt-in` or `opt-out` respectively), use `/msg NickServ set always-on true` (or `false`).
400 399
 
401 400
 
402 401
 ## History
403 402
 
404
-Oragono supports two methods of storing history, an in-memory buffer with a configurable maximum number of messages, and persistent history stored in MySQL (with no fixed limits on message capacity). To enable in-memory history, configure `history.enabled` and associated settings in the `history` section. To enable persistent history, enter your MySQL server information in `datastore.mysql` and then enable persistent history storage in `history.persistent`.
403
+Ergo supports two methods of storing history, an in-memory buffer with a configurable maximum number of messages, and persistent history stored in MySQL (with no fixed limits on message capacity). To enable in-memory history, configure `history.enabled` and associated settings in the `history` section. To enable persistent history, enter your MySQL server information in `datastore.mysql` and then enable persistent history storage in `history.persistent`.
405 404
 
406 405
 Unfortunately, client support for history playback is still patchy. In descending order of support:
407 406
 
408 407
 1. The [IRCv3 chathistory specification](https://ircv3.net/specs/extensions/chathistory) offers the most fine-grained control over history replay. It is supported by [Kiwi IRC](https://github.com/kiwiirc/kiwiirc), and hopefully other clients soon.
409 408
 1. We emulate the [ZNC playback module](https://wiki.znc.in/Playback) for clients that support it. You may need to enable support for it explicitly in your client (see the "ZNC" section below).
410
-1. If you set your client to always-on (see the previous section for details), you can set a "device ID" for each device you use. Oragono will then remember the last time your device was present on the server, and each time you sign on, it will attempt to replay exactly those messages you missed. There are a few ways to set your device ID when connecting:
409
+1. If you set your client to always-on (see the previous section for details), you can set a "device ID" for each device you use. Ergo will then remember the last time your device was present on the server, and each time you sign on, it will attempt to replay exactly those messages you missed. There are a few ways to set your device ID when connecting:
411 410
     - You can add it to your SASL username with an `@`, e.g., if your SASL username is `alice` you can send `alice@phone`
412 411
     - You can add it in a similar way to your IRC protocol username ("ident"), e.g., `alice@phone`
413 412
     - If login to user accounts via the `PASS` command is enabled on the server, you can provide it there, e.g., by sending `alice@phone:hunter2` as the server password
@@ -423,19 +422,19 @@ On most Linux and POSIX systems, it's straightforward to set up MySQL (or MariaD
423 422
 1. Install the `mysql-server` package
424 423
 1. Run `mysql_secure_installation` as root; this corrects some insecure package defaults
425 424
 1. Connect to your new MySQL server as root with `mysql --user root`
426
-1. In the MySQL prompt, create a new `oragono` user (substitute a strong password of your own for `hunter2`): `CREATE USER 'oragono'@'localhost' IDENTIFIED BY 'hunter2';`
427
-1. Create the database that history will be stored in: `CREATE DATABASE oragono_history;`
428
-1. Grant privileges on the database to the new user: `GRANT ALL PRIVILEGES ON oragono_history.* to 'oragono'@'localhost';`
429
-1. Enable persistent history in your Oragono config file. At a minimum, you must set `history.persistent.enabled = true`. You may want to modify the other options under `history.persistent` and `history`.
430
-1. Configure Oragono to talk to MySQL (again, substitute the strong password you chose previously for `hunter2`):
425
+1. In the MySQL prompt, create a new `ergo` user (substitute a strong password of your own for `hunter2`): `CREATE USER 'ergo'@'localhost' IDENTIFIED BY 'hunter2';`
426
+1. Create the database that history will be stored in: `CREATE DATABASE ergo_history;`
427
+1. Grant privileges on the database to the new user: `GRANT ALL PRIVILEGES ON ergo_history.* to 'ergo'@'localhost';`
428
+1. Enable persistent history in your Ergo config file. At a minimum, you must set `history.persistent.enabled = true`. You may want to modify the other options under `history.persistent` and `history`.
429
+1. Configure Ergo to talk to MySQL (again, substitute the strong password you chose previously for `hunter2`):
431 430
 
432 431
 ```yaml
433 432
     mysql:
434 433
         enabled: true
435 434
         socket-path: "/var/run/mysqld/mysqld.sock"
436
-        user: "oragono"
435
+        user: "ergo"
437 436
         password: "hunter2"
438
-        history-database: "oragono_history"
437
+        history-database: "ergo_history"
439 438
         timeout: 3s
440 439
 ```
441 440
 
@@ -446,19 +445,19 @@ Unlike many other chat and web platforms, IRC traditionally exposes the user's I
446 445
 
447 446
 IP cloaking is a way of balancing these concerns about abuse with concerns about user privacy. With cloaking, the user's IP address is deterministically "scrambled", typically via a cryptographic [MAC](https://en.wikipedia.org/wiki/Message_authentication_code), to form a "cloaked" hostname that replaces the usual reverse-DNS-based hostname. Users cannot reverse the scrambling to learn each other's IPs, but can ban a scrambled address the same way they would ban a regular hostname.
448 447
 
449
-Oragono supports cloaking, which is enabled by default (via the `server.ip-cloaking` section of the config). However, Oragono's cloaking behavior differs from other IRC software. Rather than scrambling each of the 4 bytes of the IPv4 address (or each 2-byte pair of the 8 such pairs of the IPv6 address) separately, the server administrator configures a CIDR length (essentially, a fixed number of most-significant-bits of the address). The CIDR (i.e., only the most significant portion of the address) is then scrambled atomically to produce the cloaked hostname. This errs on the side of user privacy, since knowing the cloaked hostname for one CIDR tells you nothing about the cloaked hostnames of other CIDRs --- the scheme reveals only whether two users are coming from the same CIDR. We suggest using 32-bit CIDRs for IPv4 (i.e., the whole address) and 64-bit CIDRs for IPv6, since these are the typical assignments made by ISPs to individual customers.
448
+Ergo supports cloaking, which is enabled by default (via the `server.ip-cloaking` section of the config). However, Ergo's cloaking behavior differs from other IRC software. Rather than scrambling each of the 4 bytes of the IPv4 address (or each 2-byte pair of the 8 such pairs of the IPv6 address) separately, the server administrator configures a CIDR length (essentially, a fixed number of most-significant-bits of the address). The CIDR (i.e., only the most significant portion of the address) is then scrambled atomically to produce the cloaked hostname. This errs on the side of user privacy, since knowing the cloaked hostname for one CIDR tells you nothing about the cloaked hostnames of other CIDRs --- the scheme reveals only whether two users are coming from the same CIDR. We suggest using 32-bit CIDRs for IPv4 (i.e., the whole address) and 64-bit CIDRs for IPv6, since these are the typical assignments made by ISPs to individual customers.
450 449
 
451 450
 Setting `server.ip-cloaking.num-bits` to 0 gives users cloaks that don't depend on their IP address information at all, which is an option for deployments where privacy is a more pressing concern than abuse. Holders of registered accounts can also use the vhost system (for details, `/msg HostServ HELP`.)
452 451
 
453 452
 
454 453
 ## Moderation
455 454
 
456
-Oragono shares some server operator moderation tools with other ircds. In particular:
455
+Ergo shares some server operator moderation tools with other ircds. In particular:
457 456
 
458 457
 1. `/SAMODE` can be used to grant or remove channel privileges. For example, to create an operator in a channel that has no operators: `/SAMODE #channel +o nickname`
459 458
 2. `/SAJOIN` lets operators join channels despite restrictions, or forcibly join another user to a channel. For example, `/SAJOIN #channel` or `/SAJOIN nickname #channel`.
460 459
 
461
-However, Oragono's multiclient and always-on features mean that abuse prevention (at the server operator level) requires different techniques than a traditional IRC network. Server operators have two principal tools for abuse prevention:
460
+However, Ergo's multiclient and always-on features mean that abuse prevention (at the server operator level) requires different techniques than a traditional IRC network. Server operators have two principal tools for abuse prevention:
462 461
 
463 462
 1. `/UBAN`, which can disable user accounts and/or ban offending IPs and networks
464 463
 2. `/DEFCON`, which can impose emergency restrictions on user activity in response to attacks
@@ -486,30 +485,30 @@ Awesome! We love getting new suggestions for features, ways to improve the serve
486 485
 
487 486
 There are two ways to make suggestions, either:
488 487
 
489
-- Submit an issue on our [bug tracker](https://github.com/oragono/oragono/issues).
490
-- Talk to us in the `#oragono` channel on Freenode.
488
+- Submit an issue on our [bug tracker](https://github.com/ergochat/ergo/issues).
489
+- Talk to us in the `#ergo` channel on irc.ergo.chat or irc.libera.chat.
491 490
 
492 491
 
493 492
 ## Why can't I oper?
494 493
 
495
-If you try to oper unsuccessfully, Oragono will disconnect you from the network. If you're unable to oper, here are some things to double-check:
494
+If you try to oper unsuccessfully, Ergo will disconnect you from the network. If you're unable to oper, here are some things to double-check:
496 495
 
497
-1. Did you correctly generate the hashed password with `oragono genpasswd`?
496
+1. Did you correctly generate the hashed password with `ergo genpasswd`?
498 497
 1. Did you add the password hash to the correct config file, then save the file?
499
-1. Did you rehash or restart Oragono after saving the file?
498
+1. Did you rehash or restart Ergo after saving the file?
500 499
 
501
-The config file accepts hashed passwords, not plaintext passwords. You must run `oragono genpasswd`, type your actual password in, and then receive a hashed blob back (it will look like `$2a$04$GvCFlShLZQjId3dARzwOWu9Nvq6lndXINw2Sdm6mUcwxhtx1U/hIm`). Enter that into the relevant `opers` block in your config file, then save the file.
500
+The config file accepts hashed passwords, not plaintext passwords. You must run `ergo genpasswd`, type your actual password in, and then receive a hashed blob back (it will look like `$2a$04$GvCFlShLZQjId3dARzwOWu9Nvq6lndXINw2Sdm6mUcwxhtx1U/hIm`). Enter that into the relevant `opers` block in your config file, then save the file.
502 501
 
503
-After that, you must rehash or restart Oragono to apply the config change. If a rehash didn't accomplish the desired effects, you might want to try a restart instead.
502
+After that, you must rehash or restart Ergo to apply the config change. If a rehash didn't accomplish the desired effects, you might want to try a restart instead.
504 503
 
505 504
 
506
-## Why is Oragono ignoring my ident response / USER command?
505
+## Why is Ergo ignoring my ident response / USER command?
507 506
 
508
-The default/recommended configuration of Oragono does not query remote ident servers, and furthermore ignores any user/ident sent with the `USER` command. All user/ident fields are set to a constant `~u`. There are a few reasons for this:
507
+The default/recommended configuration of Ergo does not query remote ident servers, and furthermore ignores any user/ident sent with the `USER` command. All user/ident fields are set to a constant `~u`. There are a few reasons for this:
509 508
 
510 509
 1. Remote ident lookups slow down connection initiation and pose privacy and security concerns (since they transmit usernames over the Internet in plaintext).
511
-2. Ignoring user/ident simplifies bans; in general, a channel ban in Oragono should target either the nickname or the hostname. As a channel operator, `/msg ChanServ HOWTOBAN #channel nick` will recommend a way of banning any given user.
512
-3. Ident is commonly used to distinguish users connecting from the same trusted shell host or shared bouncer. This is less important with Oragono, which can act as a bouncer itself.
510
+2. Ignoring user/ident simplifies bans; in general, a channel ban in Ergo should target either the nickname or the hostname. As a channel operator, `/msg ChanServ HOWTOBAN #channel nick` will recommend a way of banning any given user.
511
+3. Ident is commonly used to distinguish users connecting from the same trusted shell host or shared bouncer. This is less important with Ergo, which can act as a bouncer itself.
513 512
 4. Because of limitations of the IRC protocol, every character of the user/ident field counts against the maximum size of a message that can be sent.
514 513
 
515 514
 As an operator, you can modify this behavior if desired; see the `check-ident` and `coerce-ident` settings in the config file.
@@ -517,12 +516,12 @@ As an operator, you can modify this behavior if desired; see the `check-ident` a
517 516
 
518 517
 ## Why can't I change nicknames?
519 518
 
520
-The default/recommended configuration of Oragono does not allow authenticated users to change their nicknames; an authenticated user must use their account name as their nickname. There are a few reasons for this:
519
+The default/recommended configuration of Ergo does not allow authenticated users to change their nicknames; an authenticated user must use their account name as their nickname. There are a few reasons for this:
521 520
 
522
-1. Assigning a consistent nickname prevents certain "split-brain" scenarios that break Oragono's "multiclient" functionality. In brief, if two clients are connecting to the same account/identity, but only one of them issues a `/NICK` command, and then one of them subsequently loses and regains its connection to the server, they "break apart": they will have separate identities and channel memberships on the network, and it's difficult to bring them back together again.
521
+1. Assigning a consistent nickname prevents certain "split-brain" scenarios that break Ergo's "multiclient" functionality. In brief, if two clients are connecting to the same account/identity, but only one of them issues a `/NICK` command, and then one of them subsequently loses and regains its connection to the server, they "break apart": they will have separate identities and channel memberships on the network, and it's difficult to bring them back together again.
523 522
 2. The use of a consistent nickname reduces the possibility of edge cases in history playback.
524 523
 3. The use of a consistent nickname simplifies offline messaging (which is a first-class concept for always-on clients).
525
-4. Oragono eliminates the cases in conventional IRC servers that necessitate nickname changes. In particular, you can always claim your nickname, even if the server is still waiting for an old client to time out, and you can connect arbitrarily many clients to the same nickname.
524
+4. Ergo eliminates the cases in conventional IRC servers that necessitate nickname changes. In particular, you can always claim your nickname, even if the server is still waiting for an old client to time out, and you can connect arbitrarily many clients to the same nickname.
526 525
 
527 526
 As an operator, you can disable this behavior using the `force-nick-equals-account` setting, but this is discouraged because it has no effect on always-on clients; always-on clients must use their account names as their nicknames regardless of this setting.
528 527
 
@@ -583,14 +582,14 @@ Many clients do not have this support. However, you can designate port 6667 as a
583 582
 
584 583
 ## Reverse proxies
585 584
 
586
-Oragono supports the use of reverse proxies (such as nginx, or a Kubernetes [LoadBalancer](https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer)) that sit between it and the client. In these deployments, the [PROXY protocol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) is used to pass the end user's IP through to Oragono. These proxies can be used to terminate TLS externally to Oragono, e.g., if you need to support versions of the TLS protocol that are not implemented natively by Go, or if you want to consolidate your certificate management into a single nginx instance.
585
+Ergo supports the use of reverse proxies (such as nginx, or a Kubernetes [LoadBalancer](https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer)) that sit between it and the client. In these deployments, the [PROXY protocol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) is used to pass the end user's IP through to Ergo. These proxies can be used to terminate TLS externally to Ergo, e.g., if you need to support versions of the TLS protocol that are not implemented natively by Go, or if you want to consolidate your certificate management into a single nginx instance.
587 586
 
588 587
 The first step is to add the reverse proxy's IP to `proxy-allowed-from` and `ip-limits.exempted`. (Use `localhost` to exempt all loopback IPs and Unix domain sockets.)
589 588
 
590 589
 After that, there are two possibilities:
591 590
 
592
-* If you're using a proxy like nginx or stunnel that terminates TLS, then forwards a PROXY v1 (ASCII) header ahead of a plaintext connection, no further Oragono configuration is required. You need only configure your proxy to send the PROXY header. Here's an [example nginx config](https://github.com/oragono/testnet.oragono.io/blob/master/nginx_stream.conf).
593
-* If you're using a cloud load balancer that either sends a PROXY v1 header ahead of unterminated TLS (like [DigitalOcean](https://www.digitalocean.com/docs/networking/load-balancers/#proxy-protocol)) or sends a PROXY v2 (binary) header (like the [AWS "Network Load Balancer"](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html#proxy-protocol)), Oragono must be configured to expect a PROXY header ahead of the connection. Add `proxy: true` to the listener config block, e.g.,
591
+* If you're using a proxy like nginx or stunnel that terminates TLS, then forwards a PROXY v1 (ASCII) header ahead of a plaintext connection, no further Ergo configuration is required. You need only configure your proxy to send the PROXY header. Here's an [example nginx config](https://github.com/ergochat/testnet.ergo.chat/blob/master/nginx_stream.conf).
592
+* If you're using a cloud load balancer that either sends a PROXY v1 header ahead of unterminated TLS (like [DigitalOcean](https://www.digitalocean.com/docs/networking/load-balancers/#proxy-protocol)) or sends a PROXY v2 (binary) header (like the [AWS "Network Load Balancer"](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html#proxy-protocol)), Ergo must be configured to expect a PROXY header ahead of the connection. Add `proxy: true` to the listener config block, e.g.,
594 593
 
595 594
 ```yaml
596 595
         ":6697":
@@ -603,13 +602,13 @@ After that, there are two possibilities:
603 602
 
604 603
 ## Client certificates
605 604
 
606
-Oragono supports authenticating to user accounts via TLS client certificates. The end user must enable the client certificate in their client and also enable SASL with the `EXTERNAL` method. To register an account using only a client certificate for authentication, connect with the client certificate and use `/NS REGISTER *` (or `/NS REGISTER * email@example.com` if email verification is enabled on the server). To add a client certificate to an existing account, obtain the SHA-256 fingerprint of the certificate (either by connecting with it and looking at your own `/WHOIS` response, in particular the `276 RPL_WHOISCERTFP` line, or using the openssl command `openssl x509 -noout -fingerprint -sha256 -in example_client_cert.pem`), then use the `/NS CERT` command).
605
+Ergo supports authenticating to user accounts via TLS client certificates. The end user must enable the client certificate in their client and also enable SASL with the `EXTERNAL` method. To register an account using only a client certificate for authentication, connect with the client certificate and use `/NS REGISTER *` (or `/NS REGISTER * email@example.com` if email verification is enabled on the server). To add a client certificate to an existing account, obtain the SHA-256 fingerprint of the certificate (either by connecting with it and looking at your own `/WHOIS` response, in particular the `276 RPL_WHOISCERTFP` line, or using the openssl command `openssl x509 -noout -fingerprint -sha256 -in example_client_cert.pem`), then use the `/NS CERT` command).
607 606
 
608 607
 Client certificates are not supported over websockets due to a [Chrome bug](https://bugs.chromium.org/p/chromium/issues/detail?id=329884).
609 608
 
610 609
 ## SNI
611 610
 
612
-Oragono supports [SNI](https://en.wikipedia.org/wiki/Server_Name_Indication); this is useful if you have multiple domain names for your server, with different certificates covering different domain names. Configure your TLS listener like this:
611
+Ergo supports [SNI](https://en.wikipedia.org/wiki/Server_Name_Indication); this is useful if you have multiple domain names for your server, with different certificates covering different domain names. Configure your TLS listener like this:
613 612
 
614 613
 ```yaml
615 614
         ":6697":
@@ -631,7 +630,7 @@ If multiple certificates are applicable, or the client does not send SNI, the se
631 630
 
632 631
 On IRC, you can set modes on users and on channels. Modes are basically extra information that changes how users and channels work.
633 632
 
634
-In this section, we give an overview of the modes Oragono supports.
633
+In this section, we give an overview of the modes Ergo supports.
635 634
 
636 635
 
637 636
 ## User Modes
@@ -900,9 +899,9 @@ Voiced users can speak when the channel has `+m` (moderated) mode enabled. They
900 899
 
901 900
 # Commands
902 901
 
903
-The best place to look for command help is on a running copy or Oragono itself!
902
+The best place to look for command help is on a running copy or Ergo itself!
904 903
 
905
-To see the integrated command help, simply spin up a copy of Oragono and then run this command:
904
+To see the integrated command help, simply spin up a copy of Ergo and then run this command:
906 905
 
907 906
     /HELPOP <command>
908 907
 
@@ -918,7 +917,7 @@ We may add some additional notes here for specific commands down the line, but r
918 917
 
919 918
 # Working with other software
920 919
 
921
-Oragono should interoperate with most IRC-based software, including bots. If you have problems getting your preferred software to work with Oragono, feel free to report it to us. If the root cause is a bug in Oragono, we'll fix it.
920
+Ergo should interoperate with most IRC-based software, including bots. If you have problems getting your preferred software to work with Ergo, feel free to report it to us. If the root cause is a bug in Ergo, we'll fix it.
922 921
 
923 922
 One exception is services frameworks like [Anope](https://github.com/anope/anope) or [Atheme](https://github.com/atheme/atheme); we have our own services implementations built directly into the server, and since we don't support federation, there's no place to plug in an alternative implementation. (If you are already using Anope or Atheme, we support migrating your database --- see below.)
924 923
 
@@ -926,16 +925,16 @@ If you're looking for a bot that supports modern IRCv3 features, check out [bitb
926 925
 
927 926
 ## Kiwi IRC
928 927
 
929
-[Kiwi IRC](https://github.com/kiwiirc/kiwiirc/) is a web-based IRC client with excellent IRCv3 support. In particular, it is the only major client to fully support Oragono's server-side history features. For a demonstration of these features, see the [Oragono testnet](https://testnet.oragono.io/kiwi).
928
+[Kiwi IRC](https://github.com/kiwiirc/kiwiirc/) is a web-based IRC client with excellent IRCv3 support. In particular, it is the only major client to fully support Ergo's server-side history features. For a demonstration of these features, see the [Ergo testnet](https://testnet.ergo.chat/kiwi).
930 929
 
931
-Current versions of Kiwi are 100% static files (HTML and Javascript), running entirely in the end user's browser without the need for a separate server-side backend. This frontend can connect directly to Oragono, using Oragono's support for native websockets. For best interoperability with firewalls, you should run an externally facing web server on port 443 that can serve both the static files and the websocket path, then have it reverse-proxy the websocket path to Oragono. For example, configure the following listener in ircd.yaml:
930
+Current versions of Kiwi are 100% static files (HTML and Javascript), running entirely in the end user's browser without the need for a separate server-side backend. This frontend can connect directly to Ergo, using Ergo's support for native websockets. For best interoperability with firewalls, you should run an externally facing web server on port 443 that can serve both the static files and the websocket path, then have it reverse-proxy the websocket path to Ergo. For example, configure the following listener in ircd.yaml:
932 931
 
933 932
 ```yaml
934 933
         "127.0.0.1:8067":
935 934
             websocket: true
936 935
 ```
937 936
 
938
-then the following location block in your nginx config (this proxies only `/webirc` on your server to Oragono's websocket listener):
937
+then the following location block in your nginx config (this proxies only `/webirc` on your server to Ergo's websocket listener):
939 938
 
940 939
 ```
941 940
 	location /webirc {
@@ -949,7 +948,7 @@ then the following location block in your nginx config (this proxies only `/webi
949 948
 	}
950 949
 ```
951 950
 
952
-then add the following `startupOptions` to Kiwi's `static/config.json` file (see the [Oragono testnet's config.json](https://testnet.oragono.io/kiwi/static/config.json) for a fully functional example):
951
+then add the following `startupOptions` to Kiwi's `static/config.json` file (see the [Ergo testnet's config.json](https://testnet.ergo.chat/kiwi/static/config.json) for a fully functional example):
953 952
 
954 953
 ```
955 954
     "startupOptions" : {
@@ -961,19 +960,19 @@ then add the following `startupOptions` to Kiwi's `static/config.json` file (see
961 960
 
962 961
 ## Migrating from Anope or Atheme
963 962
 
964
-You can import user and channel registrations from an Anope or Atheme database into a new Oragono database (not all features are supported). Use the following steps:
963
+You can import user and channel registrations from an Anope or Atheme database into a new Ergo database (not all features are supported). Use the following steps:
965 964
 
966
-1. Obtain the relevant migration tool from the latest stable release: [anope2json.py](https://github.com/oragono/oragono/blob/stable/distrib/anope/anope2json.py) or [atheme2json.py](https://github.com/oragono/oragono/blob/stable/distrib/atheme/atheme2json.py) respectively.
965
+1. Obtain the relevant migration tool from the latest stable release: [anope2json.py](https://github.com/ergochat/ergo/blob/stable/distrib/anope/anope2json.py) or [atheme2json.py](https://github.com/ergochat/ergo/blob/stable/distrib/atheme/atheme2json.py) respectively.
967 966
 1. Make a copy of your Anope or Atheme database file. (You may have to stop and start the services daemon to get it to commit all its changes.)
968 967
 1. Convert the database to JSON, e.g., with `python3 ./anope2json.py anope.db output.json`
969
-1. Copy your desired Oragono config to `./ircd.yaml` (make any desired edits)
970
-1. Run `oragono importdb ./output.json`
971
-1. Run `oragono mkcerts` if necessary to generate self-signed TLS certificates
972
-1. Run `oragono run` to bring up your new Oragono instance
968
+1. Copy your desired Ergo config to `./ircd.yaml` (make any desired edits)
969
+1. Run `ergo importdb ./output.json`
970
+1. Run `ergo mkcerts` if necessary to generate self-signed TLS certificates
971
+1. Run `ergo run` to bring up your new Ergo instance
973 972
 
974 973
 ## Hybrid Open Proxy Monitor (HOPM)
975 974
 
976
-[hopm](https://github.com/ircd-hybrid/hopm) can be used to monitor your server for connections from open proxies, then automatically ban them. To configure hopm to work with oragono, add operator blocks like this to your oragono config file, which grant hopm the necessary privileges:
975
+[hopm](https://github.com/ircd-hybrid/hopm) can be used to monitor your server for connections from open proxies, then automatically ban them. To configure hopm to work with Ergo, add operator blocks like this to your Ergo config file, which grant hopm the necessary privileges:
977 976
 
978 977
 ````yaml
979 978
 # operator classes
@@ -1003,28 +1002,28 @@ opers:
1003 1002
         modes: +is c
1004 1003
 
1005 1004
         # password to login with /OPER command
1006
-        # generated using  "oragono genpasswd"
1005
+        # generated using  "ergo genpasswd"
1007 1006
         password: "$2a$04$JmsYDY6kX3/wwyK3ao0L7.aGJEto0Xm4DyL6/6zOmCpzeweIb8kdO"
1008 1007
 ````
1009 1008
 
1010 1009
 Then configure hopm like this:
1011 1010
 
1012 1011
 ````
1013
-/* oragono */
1012
+/* ergo */
1014 1013
 connregex = ".+-.+CONNECT.+-.+ Client Connected \\[([^ ]+)\\] \\[u:([^ ]+)\\] \\[h:([^ ]+)\\] \\[ip:([^ ]+)\\] .+";
1015 1014
 
1016
-/* A DLINE example for oragono */
1015
+/* A DLINE example for ergo */
1017 1016
 kline = "DLINE ANDKILL 2h %i :Open proxy found on your host.";
1018 1017
 ````
1019 1018
 
1020 1019
 ## Tor
1021 1020
 
1022
-Oragono has code support for adding an .onion address to an IRC server, or operating an IRC server as a Tor onion service ("hidden service"). This is subtle, so you should be familiar with the [Tor Project](https://www.torproject.org/) and the concept of an [onion service](https://www.torproject.org/docs/tor-onion-service.html.en).
1021
+Ergo has code support for adding an .onion address to an IRC server, or operating an IRC server as a Tor onion service ("hidden service"). This is subtle, so you should be familiar with the [Tor Project](https://www.torproject.org/) and the concept of an [onion service](https://www.torproject.org/docs/tor-onion-service.html.en).
1023 1022
 
1024
-There are two possible ways to serve Oragono over Tor. One is to add a .onion address to a server that also serves non-Tor clients, and whose IP address is public information. This is relatively straightforward. Add a separate listener, for example `127.0.0.2:6668`, to Oragono's `server.listeners`, then configure it with `tor: true`. Then configure Tor like this:
1023
+There are two possible ways to serve Ergo over Tor. One is to add a .onion address to a server that also serves non-Tor clients, and whose IP address is public information. This is relatively straightforward. Add a separate listener, for example `127.0.0.2:6668`, to Ergo's `server.listeners`, then configure it with `tor: true`. Then configure Tor like this:
1025 1024
 
1026 1025
 ````
1027
-HiddenServiceDir /var/lib/tor/oragono_hidden_service
1026
+HiddenServiceDir /var/lib/tor/ergo_hidden_service
1028 1027
 HiddenServicePort 6667 127.0.0.2:6668
1029 1028
 
1030 1029
 # these are optional, but can be used to speed up the circuits in the case
@@ -1033,25 +1032,25 @@ HiddenServiceNonAnonymousMode 1
1033 1032
 HiddenServiceSingleHopMode 1
1034 1033
 ````
1035 1034
 
1036
-Tor provides end-to-end encryption for onion services, so there's no need to enable TLS in Oragono for the listener (`127.0.0.2:6668` in this example). Doing so is not recommended, given the difficulty in obtaining a TLS certificate valid for an .onion address.
1035
+Tor provides end-to-end encryption for onion services, so there's no need to enable TLS in Ergo for the listener (`127.0.0.2:6668` in this example). Doing so is not recommended, given the difficulty in obtaining a TLS certificate valid for an .onion address.
1037 1036
 
1038
-The second way is to run Oragono as a true hidden service, where the server's actual IP address is a secret. This requires hardening measures on the Oragono side:
1037
+The second way is to run Ergo as a true hidden service, where the server's actual IP address is a secret. This requires hardening measures on the Ergo side:
1039 1038
 
1040
-* Oragono should not accept any connections on its public interfaces. You should remove any listener that starts with the address of a public interface, or with `:`, which means "listen on all available interfaces". You should listen only on `127.0.0.1:6667` and a Unix domain socket such as `/hidden_service_sockets/oragono_tor_sock`.
1039
+* Ergo should not accept any connections on its public interfaces. You should remove any listener that starts with the address of a public interface, or with `:`, which means "listen on all available interfaces". You should listen only on `127.0.0.1:6667` and a Unix domain socket such as `/hidden_service_sockets/ergo_tor_sock`.
1041 1040
 * In this mode, it is especially important that all operator passwords are strong and all operators are trusted (operators have a larger attack surface to deanonymize the server).
1042
-* Onion services are at risk of being deanonymized if a client can trick the server into performing a non-Tor network request. Oragono should not perform any such requests (such as hostname resolution or ident lookups) in response to input received over a correctly configured Tor listener. However, Oragono has not been thoroughly audited against such deanonymization attacks --- therefore, Oragono should be deployed with additional sandboxing to protect against this:
1043
-  * Oragono should run with no direct network connectivity, e.g., by running in its own Linux network namespace. systemd implements this with the [PrivateNetwork](https://www.freedesktop.org/software/systemd/man/systemd.exec.html) configuration option: add `PrivateNetwork=true` to Oragono's systemd unit file.
1044
-  * Since the loopback adapters are local to a specific network namespace, and the Tor daemon will run in the root namespace, Tor will be unable to connect to Oragono over loopback TCP. Instead, Oragono must listen on a named Unix domain socket that the Tor daemon can connect to. However, distributions typically package Tor with its own hardening profiles, which restrict which sockets it can access. Below is a recipe for configuring this with the official Tor packages for Debian:
1041
+* Onion services are at risk of being deanonymized if a client can trick the server into performing a non-Tor network request. Ergo should not perform any such requests (such as hostname resolution or ident lookups) in response to input received over a correctly configured Tor listener. However, Ergo has not been thoroughly audited against such deanonymization attacks --- therefore, Ergo should be deployed with additional sandboxing to protect against this:
1042
+  * Ergo should run with no direct network connectivity, e.g., by running in its own Linux network namespace. systemd implements this with the [PrivateNetwork](https://www.freedesktop.org/software/systemd/man/systemd.exec.html) configuration option: add `PrivateNetwork=true` to Ergo's systemd unit file.
1043
+  * Since the loopback adapters are local to a specific network namespace, and the Tor daemon will run in the root namespace, Tor will be unable to connect to Ergo over loopback TCP. Instead, Ergo must listen on a named Unix domain socket that the Tor daemon can connect to. However, distributions typically package Tor with its own hardening profiles, which restrict which sockets it can access. Below is a recipe for configuring this with the official Tor packages for Debian:
1045 1044
 
1046 1045
 1. Create a directory with `0777` permissions such as `/hidden_service_sockets`.
1047
-1. Configure Oragono to listen on `/hidden_service_sockets/oragono_tor_sock`, with `tor: true`.
1048
-1. Ensure that Oragono has no direct network access as described above, e.g., with `PrivateNetwork=true`.
1046
+1. Configure Ergo to listen on `/hidden_service_sockets/ergo_tor_sock`, with `tor: true`.
1047
+1. Ensure that Ergo has no direct network access as described above, e.g., with `PrivateNetwork=true`.
1049 1048
 1. Next, modify Tor's apparmor profile so that it can connect to this socket, by adding the line `  /hidden_service_sockets/** rw,` to `/etc/apparmor.d/local/system_tor`.
1050 1049
 1. Finally, configure Tor with:
1051 1050
 
1052 1051
 ````
1053
-HiddenServiceDir /var/lib/tor/oragono_hidden_service
1054
-HiddenServicePort 6667 unix:/hidden_service_sockets/oragono_tor_sock
1052
+HiddenServiceDir /var/lib/tor/ergo_hidden_service
1053
+HiddenServicePort 6667 unix:/hidden_service_sockets/ergo_tor_sock
1055 1054
 # DO NOT enable HiddenServiceNonAnonymousMode
1056 1055
 ````
1057 1056
 
@@ -1063,13 +1062,13 @@ Instructions on how client software should connect to an .onion address are outs
1063 1062
 
1064 1063
 ## ZNC
1065 1064
 
1066
-ZNC 1.6.x (still pretty common in distros that package old versions of IRC software) has a [bug](https://github.com/znc/znc/issues/1212) where it fails to recognize certain SASL messages. Oragono supports a compatibility mode that works around this to let ZNC complete the SASL handshake: this can be enabled with `server.compatibility.send-unprefixed-sasl`.
1065
+ZNC 1.6.x (still pretty common in distros that package old versions of IRC software) has a [bug](https://github.com/znc/znc/issues/1212) where it fails to recognize certain SASL messages. Ergo supports a compatibility mode that works around this to let ZNC complete the SASL handshake: this can be enabled with `server.compatibility.send-unprefixed-sasl`.
1067 1066
 
1068
-Oragono can emulate certain capabilities of the ZNC bouncer for the benefit of clients, in particular the third-party [playback](https://wiki.znc.in/Playback) module. This enables clients with specific support for ZNC to receive selective history playback automatically. To configure this in [Textual](https://www.codeux.com/textual/), go to "Server properties", select "Vendor specific", uncheck "Do not automatically join channels on connect", and check "Only play back messages you missed". Other clients with support are listed on ZNC's wiki page.
1067
+Ergo can emulate certain capabilities of the ZNC bouncer for the benefit of clients, in particular the third-party [playback](https://wiki.znc.in/Playback) module. This enables clients with specific support for ZNC to receive selective history playback automatically. To configure this in [Textual](https://www.codeux.com/textual/), go to "Server properties", select "Vendor specific", uncheck "Do not automatically join channels on connect", and check "Only play back messages you missed". Other clients with support are listed on ZNC's wiki page.
1069 1068
 
1070 1069
 ## External authentication systems
1071 1070
 
1072
-Oragono can be configured to call arbitrary scripts to authenticate users; see the `auth-script` section of the config. The API for these scripts is as follows: Oragono will invoke the script with a configurable set of arguments, then send it the authentication data as JSON on the first line (`\n`-terminated) of stdin. The input is a JSON dictionary with the following keys:
1071
+Ergo can be configured to call arbitrary scripts to authenticate users; see the `auth-script` section of the config. The API for these scripts is as follows: Ergo will invoke the script with a configurable set of arguments, then send it the authentication data as JSON on the first line (`\n`-terminated) of stdin. The input is a JSON dictionary with the following keys:
1073 1072
 
1074 1073
 * `accountName`: during passphrase-based authentication, this is a string, otherwise omitted
1075 1074
 * `passphrase`: during passphrase-based authentication, this is a string, otherwise omitted
@@ -1098,11 +1097,11 @@ success = bool(account_name) and bool(passphrase) and account_name == passphrase
1098 1097
 print(json.dumps({"success": success}))
1099 1098
 ```
1100 1099
 
1101
-Note that after a failed script invocation, Oragono will proceed to check the credentials against its local database.
1100
+Note that after a failed script invocation, Ergo will proceed to check the credentials against its local database.
1102 1101
 
1103 1102
 ## DNSBLs and other IP checking systems
1104 1103
 
1105
-Similarly, Oragono can be configured to call arbitrary scripts to validate user IPs. These scripts can either reject the connection, or require that the user log in with SASL. In particular, we provide an [oragono-dnsbl](https://github.com/oragono/oragono-dnsbl) plugin for querying DNSBLs.
1104
+Similarly, Ergo can be configured to call arbitrary scripts to validate user IPs. These scripts can either reject the connection, or require that the user log in with SASL. In particular, we provide an [oragono-dnsbl](https://github.com/oragono/oragono-dnsbl) plugin for querying DNSBLs.
1106 1105
 
1107 1106
 The API is similar to the auth-script API described above (one line of JSON in, one line of JSON out). The input is a JSON dictionary with the following keys:
1108 1107
 
@@ -1119,11 +1118,11 @@ The output is a JSON dictionary with the following keys:
1119 1118
 
1120 1119
 # Acknowledgements
1121 1120
 
1122
-Oragono's past and present maintainers and core contributors are:
1121
+Ergo's past and present maintainers and core contributors are:
1123 1122
 
1124 1123
 * Jeremy Latt (2012-2014)
1125 1124
 * Edmund Huber (2014-2015)
1126 1125
 * Daniel Oaks (2016-present)
1127 1126
 * Shivaram Lingamneni (2017-present)
1128 1127
 
1129
-In addition, Oragono has benefited tremendously from its community of contributors, users, and translators, not to mention collaborations with the wider IRCv3 community. There are too many people to name here --- but we try to credit people for individual contributions in the changelog, please reach out to us if we forgot you :-)
1128
+In addition, Ergo has benefited tremendously from its community of contributors, users, and translators, not to mention collaborations with the wider IRCv3 community. There are too many people to name here --- but we try to credit people for individual contributions in the changelog, please reach out to us if we forgot you :-)

+ 26
- 26
docs/USERGUIDE.md View File

@@ -1,12 +1,12 @@
1
+      ___ _ __ __ _  ___  
2
+     / _ \ '__/ _` |/ _ \ 
3
+    |  __/ | | (_| | (_) |
4
+     \___|_|  \__, |\___/ 
5
+               __/ |      
6
+              |___/     
1 7
 
2
-          ▄▄▄   ▄▄▄·  ▄▄ •        ▐ ▄       
3
-    ▪     ▀▄ █·▐█ ▀█ ▐█ ▀ ▪▪     •█▌▐█▪     
4
-     ▄█▀▄ ▐▀▀▄ ▄█▀▀█ ▄█ ▀█▄ ▄█▀▄▪▐█▐▐▌ ▄█▀▄ 
5
-    ▐█▌.▐▌▐█•█▌▐█ ▪▐▌▐█▄▪▐█▐█▌ ▐▌██▐█▌▐█▌.▐▌
6
-     ▀█▄▀▪.▀  ▀ ▀  ▀ ·▀▀▀▀  ▀█▄▀ ▀▀ █▪ ▀█▄▀▪
7
-
8
-            Oragono IRCd User Guide
9
-              https://oragono.io/
8
+     Ergo IRCd User Guide
9
+      https://ergo.chat/
10 10
 
11 11
 _Copyright © Daniel Oaks <daniel@danieloaks.net>, Shivaram Lingamneni <slingamn@cs.stanford.edu>_
12 12
 
@@ -18,7 +18,7 @@ _Copyright © Daniel Oaks <daniel@danieloaks.net>, Shivaram Lingamneni <slingamn
18 18
 
19 19
 - [Introduction](#introduction)
20 20
 - [About IRC](#about-irc)
21
-- [How Oragono is different](#how-oragono-is-different)
21
+- [How Ergo is different](#how-ergo-is-different)
22 22
 - [Account registration](#account-registration)
23 23
 - [Channel registration](#channel-registration)
24 24
 - [Always-on](#always-on)
@@ -30,11 +30,11 @@ _Copyright © Daniel Oaks <daniel@danieloaks.net>, Shivaram Lingamneni <slingamn
30 30
 
31 31
 # Introduction
32 32
 
33
-Welcome to Oragono, a modern IRC server!
33
+Welcome to Ergo, a modern IRC server!
34 34
 
35
-This guide is for end users of Oragono (people using Oragono to chat). If you're installing your own Oragono instance, you should consult the official manual instead (a copy should be bundled with your release, in the `docs/` directory).
35
+This guide is for end users of Ergo (people using Ergo to chat). If you're installing your own Ergo instance, you should consult the official manual instead (a copy should be bundled with your release, in the `docs/` directory).
36 36
 
37
-This guide assumes that Oragono is in its default or recommended configuration; Oragono server administrators can change settings to make the server behave differently. If something isn't working as expected, ask your server administrator for help.
37
+This guide assumes that Ergo is in its default or recommended configuration; Ergo server administrators can change settings to make the server behave differently. If something isn't working as expected, ask your server administrator for help.
38 38
 
39 39
 # About IRC
40 40
 
@@ -47,24 +47,24 @@ Here are some guides covering the basics of IRC:
47 47
 * [Fedora Magazine: Beginner's Guide to IRC](https://fedoramagazine.org/beginners-guide-irc/)
48 48
 * [IRCHelp's IRC Tutorial](https://www.irchelp.org/faq/irctutorial.html) (in particular, section 3, "Beyond the Basics")
49 49
 
50
-# How Oragono is different
50
+# How Ergo is different
51 51
 
52
-Oragono differs in many ways from conventional IRC servers. If you're *not* familiar with other IRC servers, you may want to skip this section. Here are some of the most salient differences:
52
+Ergo differs in many ways from conventional IRC servers. If you're *not* familiar with other IRC servers, you may want to skip this section. Here are some of the most salient differences:
53 53
 
54
-* Oragono integrates a "bouncer" into the server. In particular:
55
-    * Oragono stores message history for later retrieval.
54
+* Ergo integrates a "bouncer" into the server. In particular:
55
+    * Ergo stores message history for later retrieval.
56 56
     * You can be "present" on the server (joined to channels, able to receive DMs) without having an active client connection to the server.
57 57
     * Conversely, you can use multiple clients to view / control the same presence (nickname) on the server, as long as you authenticate with SASL when connecting.
58
-* Oragono integrates "services" into the server.  In particular:
59
-    * Nicknames are strictly reserved: once you've registered your nickname, you must log in in order to use it. Consequently, SASL is more important when using Oragono than in other systems.
58
+* Ergo integrates "services" into the server.  In particular:
59
+    * Nicknames are strictly reserved: once you've registered your nickname, you must log in in order to use it. Consequently, SASL is more important when using Ergo than in other systems.
60 60
     * All properties of registered channels are protected without the need for `ChanServ` to be joined to the channel.
61
-* Oragono "cloaks", i.e., cryptographically scrambles, end user IPs so that they are not displayed publicly.
62
-* By default, the user/ident field is inoperative in Oragono: it is always set to `~u`, regardless of the `USER` command or the client's support for identd. This is because it is not in general a reliable or trustworthy way to distinguish users coming from the same IP. Oragono's integrated bouncer features should reduce the need for shared shell hosts and hosted bouncers (one of the main remaining use cases for identd).
63
-* By default, Oragono is only accessible via TLS.
61
+* Ergo "cloaks", i.e., cryptographically scrambles, end user IPs so that they are not displayed publicly.
62
+* By default, the user/ident field is inoperative in Ergo: it is always set to `~u`, regardless of the `USER` command or the client's support for identd. This is because it is not in general a reliable or trustworthy way to distinguish users coming from the same IP. Ergo's integrated bouncer features should reduce the need for shared shell hosts and hosted bouncers (one of the main remaining use cases for identd).
63
+* By default, Ergo is only accessible via TLS.
64 64
 
65 65
 # Account registration
66 66
 
67
-Although (as in other IRC systems) basic chat functionality is available without creating an account, most of Oragono's features require an account. You can create an account by sending a direct message to `NickServ`. (In IRC jargon, `NickServ` is a "network service", but if you're not familiar with the concept you can just think of it as a bot or a text user interface.) In a typical client, this will be:
67
+Although (as in other IRC systems) basic chat functionality is available without creating an account, most of Ergo's features require an account. You can create an account by sending a direct message to `NickServ`. (In IRC jargon, `NickServ` is a "network service", but if you're not familiar with the concept you can just think of it as a bot or a text user interface.) In a typical client, this will be:
68 68
 
69 69
 ```
70 70
 /msg NickServ register mySecretPassword validEmailAddress@example.com
@@ -88,7 +88,7 @@ You must already be an operator (have the `+o` channel mode --- your client may
88 88
 
89 89
 # Always-on
90 90
 
91
-By default, if you lose your connection to the IRC server, you are no longer present on the server; other users will see that you have "quit", you will no longer appear in channel lists, and you will not be able to receive direct messages. Oragono supports "always-on clients", where you remain on the server even when you are disconnected. To enable this, you can send a message to `NickServ`:
91
+By default, if you lose your connection to the IRC server, you are no longer present on the server; other users will see that you have "quit", you will no longer appear in channel lists, and you will not be able to receive direct messages. Ergo supports "always-on clients", where you remain on the server even when you are disconnected. To enable this, you can send a message to `NickServ`:
92 92
 
93 93
 ```
94 94
 /msg NickServ set always-on true
@@ -96,15 +96,15 @@ By default, if you lose your connection to the IRC server, you are no longer pre
96 96
 
97 97
 # Multiclient
98 98
 
99
-Oragono natively supports attaching multiple clients to the same nickname (this normally requires the use of an external bouncer, like ZNC or WeeChat's "relay" functionality). To use this feature, simply authenticate with SASL (or the PASS workaround, if necessary) when connecting. In the recommended configuration of Oragono, you will receive the nickname associated with your account, even if you have other clients already using it.
99
+Ergo natively supports attaching multiple clients to the same nickname (this normally requires the use of an external bouncer, like ZNC or WeeChat's "relay" functionality). To use this feature, simply authenticate with SASL (or the PASS workaround, if necessary) when connecting. In the recommended configuration of Ergo, you will receive the nickname associated with your account, even if you have other clients already using it.
100 100
 
101 101
 # History
102 102
 
103
-Oragono stores message history on the server side (typically not an unlimited amount --- consult your server's FAQ, or your server administrator, to find out how much is being stored and how long it's being retained).
103
+Ergo stores message history on the server side (typically not an unlimited amount --- consult your server's FAQ, or your server administrator, to find out how much is being stored and how long it's being retained).
104 104
 
105 105
 1. The [IRCv3 chathistory specification](https://ircv3.net/specs/extensions/chathistory) offers the most fine-grained control over history replay. It is supported by [Kiwi IRC](https://github.com/kiwiirc/kiwiirc), and hopefully other clients soon.
106 106
 1. We emulate the [ZNC playback module](https://wiki.znc.in/Playback) for clients that support it. You may need to enable support for it explicitly in your client. For example, in [Textual](https://www.codeux.com/textual/), go to "Server properties", select "Vendor specific", uncheck "Do not automatically join channels on connect", and check "Only play back messages you missed". ZNC's wiki page covers other common clients (although if the feature is only supported via a script or third-party extension, the following option may be easier).
107
-1. If you set your client to always-on (see the previous section for details), you can set a "device ID" for each device you use. Oragono will then remember the last time your device was present on the server, and each time you sign on, it will attempt to replay exactly those messages you missed. There are a few ways to set your device ID when connecting:
107
+1. If you set your client to always-on (see the previous section for details), you can set a "device ID" for each device you use. Ergo will then remember the last time your device was present on the server, and each time you sign on, it will attempt to replay exactly those messages you missed. There are a few ways to set your device ID when connecting:
108 108
     - You can add it to your SASL username with an `@`, e.g., if your SASL username is `alice` you can send `alice@phone`
109 109
     - You can add it in a similar way to your IRC protocol username ("ident"), e.g., `alice@phone`
110 110
     - If login to user accounts via the `PASS` command is enabled on the server, you can provide it there, e.g., by sending `alice@phone:hunter2` as the server password

+ 2
- 1
irc/server.go View File

@@ -1061,8 +1061,9 @@ var (
1061 1061
 		"            __/ |      ",
1062 1062
 		"           |___/       ",
1063 1063
 		"",
1064
-		"    https://ergo.chat/",
1064
+		"https://ergo.chat/ ",
1065 1065
 		"https://github.com/ergochat/ergo ",
1066
+		"",
1066 1067
 	}
1067 1068
 	infoString2 = strings.Split(`    Daniel Oakley,          DanielOaks,    <daniel@danieloaks.net>
1068 1069
     Shivaram Lingamneni,    slingamn,      <slingamn@cs.stanford.edu>

Loading…
Cancel
Save