Explorar el Código

Merge pull request #1852 from slingamn/fail_authenticate

add FAIL AUTHENTICATE VERIFICATION_REQUIRED
tags/v2.9.0-rc1
Shivaram Lingamneni hace 2 años
padre
commit
72959eb1cf
No account linked to committer's email address
Se han modificado 1 ficheros con 10 adiciones y 4 borrados
  1. 10
    4
      irc/handlers.go

+ 10
- 4
irc/handlers.go Ver fichero

@@ -269,8 +269,7 @@ func authPlainHandler(server *Server, client *Client, session *Session, value []
269 269
 	password := string(splitValue[2])
270 270
 	err := server.accounts.AuthenticateByPassphrase(client, authcid, password)
271 271
 	if err != nil {
272
-		msg := authErrorToMessage(server, err)
273
-		rb.Add(nil, server.name, ERR_SASLFAIL, client.Nick(), fmt.Sprintf("%s: %s", client.t("SASL authentication failed"), client.t(msg)))
272
+		sendAuthErrorResponse(client, rb, err)
274 273
 		return false
275 274
 	} else if !fixupNickEqualsAccount(client, rb, server.Config(), "") {
276 275
 		return false
@@ -280,6 +279,14 @@ func authPlainHandler(server *Server, client *Client, session *Session, value []
280 279
 	return false
281 280
 }
282 281
 
282
+func sendAuthErrorResponse(client *Client, rb *ResponseBuffer, err error) {
283
+	msg := authErrorToMessage(client.server, err)
284
+	rb.Add(nil, client.server.name, ERR_SASLFAIL, client.nick, fmt.Sprintf("%s: %s", client.t("SASL authentication failed"), client.t(msg)))
285
+	if err == errAccountUnverified {
286
+		rb.Add(nil, client.server.name, "FAIL", "AUTHENTICATE", "VERIFICATION_REQUIRED", "*", client.t(err.Error()))
287
+	}
288
+}
289
+
283 290
 func authErrorToMessage(server *Server, err error) (msg string) {
284 291
 	if throttled, ok := err.(*ThrottleError); ok {
285 292
 		return throttled.Error()
@@ -329,8 +336,7 @@ func authExternalHandler(server *Server, client *Client, session *Session, value
329 336
 	}
330 337
 
331 338
 	if err != nil {
332
-		msg := authErrorToMessage(server, err)
333
-		rb.Add(nil, server.name, ERR_SASLFAIL, client.nick, fmt.Sprintf("%s: %s", client.t("SASL authentication failed"), client.t(msg)))
339
+		sendAuthErrorResponse(client, rb, err)
334 340
 		return false
335 341
 	} else if !fixupNickEqualsAccount(client, rb, server.Config(), "") {
336 342
 		return false

Loading…
Cancelar
Guardar