Browse Source

Merge pull request #1957 from slingamn/saregister_responses

fix #1905
tags/v2.10.0-rc1
Shivaram Lingamneni 2 years ago
parent
commit
e48c3fa687
No account linked to committer's email address
1 changed files with 15 additions and 1 deletions
  1. 15
    1
      irc/nickserv.go

+ 15
- 1
irc/nickserv.go View File

@@ -13,6 +13,7 @@ import (
13 13
 
14 14
 	"github.com/ergochat/irc-go/ircfmt"
15 15
 
16
+	"github.com/ergochat/ergo/irc/caps"
16 17
 	"github.com/ergochat/ergo/irc/custime"
17 18
 	"github.com/ergochat/ergo/irc/passwd"
18 19
 	"github.com/ergochat/ergo/irc/sno"
@@ -1028,6 +1029,8 @@ func nsRegisterHandler(service *ircService, server *Server, client *Client, comm
1028 1029
 }
1029 1030
 
1030 1031
 func nsSaregisterHandler(service *ircService, server *Server, client *Client, command string, params []string, rb *ResponseBuffer) {
1032
+	registerCap := rb.session.capabilities.Has(caps.AccountRegistration)
1033
+
1031 1034
 	var account, passphrase string
1032 1035
 	account = params[0]
1033 1036
 	if 1 < len(params) && params[1] != "*" {
@@ -1037,19 +1040,30 @@ func nsSaregisterHandler(service *ircService, server *Server, client *Client, co
1037 1040
 
1038 1041
 	if err != nil {
1039 1042
 		var errMsg string
1043
+		var failCode string
1040 1044
 		if err == errAccountAlreadyRegistered || err == errAccountAlreadyVerified {
1041 1045
 			errMsg = client.t("Account already exists")
1046
+			failCode = "USERNAME_EXISTS"
1042 1047
 		} else if err == errNameReserved {
1043 1048
 			errMsg = client.t(err.Error())
1049
+			failCode = "USERNAME_EXISTS"
1044 1050
 		} else if err == errAccountBadPassphrase {
1045 1051
 			errMsg = client.t("Passphrase contains forbidden characters or is otherwise invalid")
1052
+			failCode = "INVALID_PASSWORD"
1046 1053
 		} else {
1047 1054
 			server.logger.Error("services", "unknown error from saregister", err.Error())
1048
-			errMsg = client.t("Could not register")
1055
+			errMsg = fmt.Sprintf(client.t("Could not register: %v"), err)
1056
+			failCode = "UNKNOWN_ERROR"
1049 1057
 		}
1050 1058
 		service.Notice(rb, errMsg)
1059
+		if registerCap {
1060
+			rb.Add(nil, server.name, "FAIL", "REGISTER", failCode, utils.SafeErrorParam(account), err.Error())
1061
+		}
1051 1062
 	} else {
1052 1063
 		service.Notice(rb, fmt.Sprintf(client.t("Successfully registered account %s"), account))
1064
+		if registerCap {
1065
+			rb.Add(nil, server.name, "REGISTER", "SUCCESS", account, client.t("Account successfully registered"))
1066
+		}
1053 1067
 		server.snomasks.Send(sno.LocalAccounts, fmt.Sprintf(ircfmt.Unescape("Operator $c[grey][$r%s$c[grey]] registered account $c[grey][$r%s$c[grey]] with SAREGISTER"), client.Oper().Name, account))
1054 1068
 	}
1055 1069
 }

Loading…
Cancel
Save