diff --git a/irc/handlers.go b/irc/handlers.go index 67ce5c89..faba925a 100644 --- a/irc/handlers.go +++ b/irc/handlers.go @@ -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 [||*] func authenticateHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *ResponseBuffer) bool { session := rb.session diff --git a/irc/server.go b/irc/server.go index 95d5c10f..1f11c122 100644 --- a/irc/server.go +++ b/irc/server.go @@ -344,6 +344,9 @@ func (server *Server) playRegistrationBurst(session *Session) { d := c.Details() server.logger.Info("connect", fmt.Sprintf("Client connected [%s] [u:%s] [r:%s]", d.nick, d.username, d.realname)) server.snomasks.Send(sno.LocalConnects, fmt.Sprintf("Client connected [%s] [u:%s] [h:%s] [ip:%s] [r:%s]", d.nick, d.username, session.rawHostname, session.IP().String(), d.realname)) + if d.account != "" { + server.sendLoginSnomask(d.nickMask, d.accountName) + } // send welcome text //NOTE(dan): we specifically use the NICK here instead of the nickmask