Browse Source

update nick reservation docs

tags/v2.5.0-rc1
Shivaram Lingamneni 3 years ago
parent
commit
45471138d2
2 changed files with 37 additions and 19 deletions
  1. 33
    19
      docs/MANUAL.md
  2. 4
    0
      irc/config.go

+ 33
- 19
docs/MANUAL.md View File

@@ -31,10 +31,11 @@ _Copyright © Daniel Oaks <daniel@danieloaks.net>, Shivaram Lingamneni <slingamn
31 31
 - [Features](#features)
32 32
     - [User Accounts](#user-accounts)
33 33
     - [Account/Nick Modes](#accountnick-modes)
34
-        - [Traditional / lenient mode](#tradiotional--lenient-mode)
35
-        - [Nick ownership](#nick-ownership)
34
+        - [Nick equals account](#nick-equals-account)
35
+        - [Lenient nick reservation](#lenient-nick-reservation)
36
+        - [No nick reservation](#no-nick-reservation)
36 37
         - [SASL-only mode](#sasl-only-mode)
37
-        - [Email verification](#email-verification)
38
+    - [Email verification](#email-verification)
38 39
     - [Channel Registration](#channel-registration)
39 40
     - [Language](#language)
40 41
     - [Multiclient ("Bouncer")](#multiclient-bouncer)
@@ -251,30 +252,47 @@ Once you've registered, you'll need to setup SASL to login (or use NickServ IDEN
251 252
 
252 253
 Oragono supports several different modes of operation with respect to accounts and nicknames.
253 254
 
254
-### Traditional / lenient mode
255
+### Nick equals account
255 256
 
256
-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.
257
+In this mode (the default), registering an account gives you privileges over the use of the account name as a nickname. The server will then enforce several invariants with regard to your nickname:
257 258
 
258
-To enable this mode, set the following configs:
259
+1. Only you can use your nickname, i.e., clients cannot use your nickname unless they are logged into your account
260
+1. You must use your nickname, i.e., if you are logged into your account, then the server will require you to use your account name as your nickname
261
+1. If you unregister your account, your nickname will be permanently unreclaimable (thus preventing people from impersonating you)
262
+
263
+As an end user, if you want to change your nickname, you can register a new account and transfer any channel ownerships to it using `/msg ChanServ transfer`.
264
+
265
+To enable this mode as the server operator, set the following configs (note that they are already set in `default.yaml`):
259 266
 
260 267
 * `accounts.registration.enabled = true`
261 268
 * `accounts.authentication-enabled = true`
262
-* `accounts.nick-reservation.enabled = false`
269
+* `accounts.nick-reservation.enabled = true`
270
+* `accounts.nick-reservation.method = strict`
271
+* `accounts.nick-reservation.allow-custom-enforcement = false`
272
+* `accounts.nick-reservation.force-nick-equals-account = true`
263 273
 
264
-### Nick ownership
274
+### Lenient nick reservation
265 275
 
266
-In this mode (the default), registering an account gives you privileges over the use of that account as a nickname. The server will then help you to enforce control over your nickname(s). No one will be able to use your nickname unless they are logged into your account.
276
+In this mode (implemented in the `traditional.yaml` config file example), nickname reservation is available, but end users must opt into it using `/msg NickServ set enforce strict`. Moreover, you need not use your nickname; even while logged in to your account, you can change nicknames to anything that is not reserved by another user. You can reserve some of your alternate nicknames using `/msg NickServ group`.
267 277
 
268
-To enable this mode, set the following configs:
278
+To enable this mode as the server operator, set the following configs (they are set in `traditional.yaml`):
269 279
 
270 280
 * `accounts.registration.enabled = true`
271 281
 * `accounts.authentication-enabled = true`
272 282
 * `accounts.nick-reservation.enabled = true`
273
-* `accounts.nick-reservation.method = strict`
283
+* `accounts.nick-reservation.method = optional`
284
+* `accounts.nick-reservation.allow-custom-enforcement = true`
285
+* `accounts.nick-reservation.force-nick-equals-account = false`
286
+
287
+### No nick reservation
274 288
 
275
-The following additional configs may be of interest:
289
+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.
290
+
291
+To enable this mode, set the following configs:
276 292
 
277
-* `accounts.nick-reservation.force-nick-equals-account = true` ; this allows nicknames to be treated as account names for most purposes, including for controlling access to channels (see the discussion of private channels below)
293
+* `accounts.registration.enabled = true`
294
+* `accounts.authentication-enabled = true`
295
+* `accounts.nick-reservation.enabled = false`
278 296
 
279 297
 ### SASL-only mode
280 298
 
@@ -282,16 +300,12 @@ This mode is comparable to Slack, Mattermost, or similar products intended as in
282 300
 
283 301
 In this mode, clients must have a valid account to connect, so they cannot register their own accounts. 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.
284 302
 
285
-To enable this mode, set the following configs:
303
+To enable this mode, use the configs from the "nick equals account" section (i.e., start from `default.yaml`) and make these modifications:
286 304
 
287 305
 * `accounts.registration.enabled = false`
288
-* `accounts.authentication-enabled = true`
289 306
 * `accounts.require-sasl.enabled = true`
290
-* `accounts.nick-reservation.enabled = true`
291
-* `accounts.nick-reservation.method = strict`
292
-* `accounts.nick-reservation.force-nick-equals-account = true`
293 307
 
294
-### Email verification
308
+## Email verification
295 309
 
296 310
 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:
297 311
 

+ 4
- 0
irc/config.go View File

@@ -1118,6 +1118,10 @@ func LoadConfig(filename string) (config *Config, err error) {
1118 1118
 		config.Accounts.Multiclient.AllowedByDefault = true
1119 1119
 	}
1120 1120
 
1121
+	if !config.Accounts.NickReservation.Enabled {
1122
+		config.Accounts.NickReservation.ForceNickEqualsAccount = false
1123
+	}
1124
+
1121 1125
 	if config.Accounts.NickReservation.ForceNickEqualsAccount && !config.Accounts.Multiclient.Enabled {
1122 1126
 		return nil, errors.New("force-nick-equals-account requires enabling multiclient as well")
1123 1127
 	}

Loading…
Cancel
Save