1
0
Fork 0
forked from External/ergo
* Defer account login snomask until after connection registration is complete
* Don't send account-notify for pre-registration clients
This commit is contained in:
Shivaram Lingamneni 2020-11-29 20:20:26 -05:00
parent 0e470763a2
commit c62956f708
2 changed files with 17 additions and 9 deletions

View file

@ -102,21 +102,26 @@ func sendSuccessfulAccountAuth(service *ircService, client *Client, rb *Response
}
}
// dispatch account-notify
for friend := range client.Friends(caps.AccountNotify) {
if friend != rb.session {
friend.Send(nil, details.nickMask, "ACCOUNT", details.accountName)
if client.Registered() {
// dispatch account-notify
for friend := range client.Friends(caps.AccountNotify) {
if friend != rb.session {
friend.Send(nil, details.nickMask, "ACCOUNT", details.accountName)
}
}
if rb.session.capabilities.Has(caps.AccountNotify) {
rb.Add(nil, details.nickMask, "ACCOUNT", details.accountName)
}
client.server.sendLoginSnomask(details.nickMask, details.accountName)
}
if rb.session.capabilities.Has(caps.AccountNotify) {
rb.Add(nil, details.nickMask, "ACCOUNT", details.accountName)
}
client.server.snomasks.Send(sno.LocalAccounts, fmt.Sprintf(ircfmt.Unescape("Client $c[grey][$r%s$c[grey]] logged into account $c[grey][$r%s$c[grey]]"), details.nickMask, details.accountName))
client.server.logger.Info("accounts", "client", details.nick, "logged into account", details.accountName)
}
func (server *Server) sendLoginSnomask(nickMask, accountName string) {
server.snomasks.Send(sno.LocalAccounts, fmt.Sprintf(ircfmt.Unescape("Client $c[grey][$r%s$c[grey]] logged into account $c[grey][$r%s$c[grey]]"), nickMask, accountName))
}
// AUTHENTICATE [<mechanism>|<data>|*]
func authenticateHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *ResponseBuffer) bool {
session := rb.session