Browse Source

server: Add away-notify capability

tags/v0.1.0
Daniel Oaks 7 years ago
parent
commit
3321243486
3 changed files with 13 additions and 1 deletions
  1. 1
    1
      CHANGELOG.md
  2. 2
    0
      irc/capability.go
  3. 10
    0
      irc/server.go

+ 1
- 1
CHANGELOG.md View File

@@ -21,7 +21,7 @@ Initial release of Oragono!
21 21
 * Added ability to parse complex mode change syntax commonly used these days (i.e. `+h-ov dan dan dan`).
22 22
 * Added user mode for clients connected via TLS (`+Z`).
23 23
 * Added ability to register and login to accounts (with passphrase or certfp).
24
-* Added support for IRCv3 capabilities [`account-tag`](http://ircv3.net/specs/extensions/account-tag-3.2.html), [`extended-join`](http://ircv3.net/specs/extensions/extended-join-3.1.html), [`sasl`](http://ircv3.net/specs/extensions/sasl-3.1.html), [`server-time`](http://ircv3.net/specs/extensions/server-time-3.2.html), and [`userhost-in-names`](http://ircv3.net/specs/extensions/userhost-in-names-3.2.html).
24
+* Added support for IRCv3 capabilities [`account-tag`](http://ircv3.net/specs/extensions/account-tag-3.2.html), [`away-notify`](http://ircv3.net/specs/extensions/away-notify-3.1.html), [`extended-join`](http://ircv3.net/specs/extensions/extended-join-3.1.html), [`sasl`](http://ircv3.net/specs/extensions/sasl-3.1.html), [`server-time`](http://ircv3.net/specs/extensions/server-time-3.2.html), and [`userhost-in-names`](http://ircv3.net/specs/extensions/userhost-in-names-3.2.html).
25 25
 
26 26
 ### Changed
27 27
 * Changed channel creator (`O`) privilege to founder/admin/halfops (`qah`) privileges.

+ 2
- 0
irc/capability.go View File

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

+ 10
- 0
irc/server.go View File

@@ -830,6 +830,16 @@ func awayHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool {
830 830
 		op:   op,
831 831
 	}}
832 832
 	client.Send(nil, server.nameString, "MODE", client.nickString, client.nickString, modech.String())
833
+
834
+	// dispatch away-notify
835
+	for friend := range client.Friends() {
836
+		if client.flags[Away] {
837
+			friend.SendFromClient(client, nil, client.nickMaskString, "AWAY", client.awayMessage)
838
+		} else {
839
+			friend.SendFromClient(client, nil, client.nickMaskString, "AWAY")
840
+		}
841
+	}
842
+
833 843
 	return false
834 844
 }
835 845
 

Loading…
Cancel
Save