Procházet zdrojové kódy

accounts: Support account-notify capability

tags/v0.2.0
Daniel Oaks před 7 roky
rodič
revize
4fa094cea2
3 změnil soubory, kde provedl 16 přidání a 4 odebrání
  1. 1
    0
      CHANGELOG.md
  2. 13
    4
      irc/accounts.go
  3. 2
    0
      irc/capability.go

+ 1
- 0
CHANGELOG.md Zobrazit soubor

12
 ### Security
12
 ### Security
13
 
13
 
14
 ### Added
14
 ### Added
15
+* Support for IRCv3 capability [`account-notify`](http://ircv3.net/specs/extensions/account-notify-3.1.html)
15
 
16
 
16
 ### Changed
17
 ### Changed
17
 * Casemapping changed from custom unicode mapping to preliminary [rfc7700](https://github.com/ircv3/ircv3-specifications/pull/272) mapping.
18
 * Casemapping changed from custom unicode mapping to preliminary [rfc7700](https://github.com/ircv3/ircv3-specifications/pull/272) mapping.

+ 13
- 4
irc/accounts.go Zobrazit soubor

220
 		return false
220
 		return false
221
 	}
221
 	}
222
 
222
 
223
-	client.Send(nil, server.name, RPL_LOGGEDIN, client.nick, client.nickMaskString, client.account.Name, fmt.Sprintf("You are now logged in as %s", client.account.Name))
224
-	client.Send(nil, server.name, RPL_SASLSUCCESS, client.nick, "SASL authentication successful")
223
+	client.successfulSaslAuth()
225
 	return false
224
 	return false
226
 }
225
 }
227
 
226
 
268
 		return false
267
 		return false
269
 	}
268
 	}
270
 
269
 
271
-	client.Send(nil, server.name, RPL_LOGGEDIN, client.nick, client.nickMaskString, client.account.Name, fmt.Sprintf("You are now logged in as %s", client.account.Name))
272
-	client.Send(nil, server.name, RPL_SASLSUCCESS, client.nick, "SASL authentication successful")
270
+	client.successfulSaslAuth()
273
 	return false
271
 	return false
274
 }
272
 }
273
+
274
+// successfulSaslAuth means that a SASL auth attempt completed successfully, and is used to dispatch messages.
275
+func (c *Client) successfulSaslAuth() {
276
+	c.Send(nil, c.server.name, RPL_LOGGEDIN, c.nick, c.nickMaskString, c.account.Name, fmt.Sprintf("You are now logged in as %s", c.account.Name))
277
+	c.Send(nil, c.server.name, RPL_SASLSUCCESS, c.nick, "SASL authentication successful")
278
+
279
+	// dispatch account-notify
280
+	for friend := range c.Friends(AccountNotify) {
281
+		friend.Send(nil, c.nickMaskString, "ACCOUNT", c.account.Name)
282
+	}
283
+}

+ 2
- 0
irc/capability.go Zobrazit soubor

15
 
15
 
16
 const (
16
 const (
17
 	AccountTag      Capability = "account-tag"
17
 	AccountTag      Capability = "account-tag"
18
+	AccountNotify   Capability = "account-notify"
18
 	AwayNotify      Capability = "away-notify"
19
 	AwayNotify      Capability = "away-notify"
19
 	ExtendedJoin    Capability = "extended-join"
20
 	ExtendedJoin    Capability = "extended-join"
20
 	MultiPrefix     Capability = "multi-prefix"
21
 	MultiPrefix     Capability = "multi-prefix"
26
 var (
27
 var (
27
 	SupportedCapabilities = CapabilitySet{
28
 	SupportedCapabilities = CapabilitySet{
28
 		AccountTag:      true,
29
 		AccountTag:      true,
30
+		AccountNotify:   true,
29
 		AwayNotify:      true,
31
 		AwayNotify:      true,
30
 		ExtendedJoin:    true,
32
 		ExtendedJoin:    true,
31
 		MultiPrefix:     true,
33
 		MultiPrefix:     true,

Načítá se…
Zrušit
Uložit