func userLogin(event *minegate.LoginRequestEvent) { if event.Rejected() { return } server := strings.ToLower(event.Upstream.Server) user := strings.ToLower(event.LoginPacket.Name) connID := event.GetConnID() ollock.Lock() defer ollock.Unlock() if online_list[server] == nil { online_list[server] = mapset.NewThreadUnsafeSet() } s := online_list[server] if !s.Add(user) { event.Warnf("[conntrack] User %s is already in server %s, rejected.", event.LoginPacket.Name, event.Upstream.Server) event.Reason("You are already in this server.") return } conn_in[connID] = loginInfo{ Server: server, User: user, } event.Infof("[conntrack] User %s joined server %s.", event.LoginPacket.Name, event.Upstream.Server) event.Infof("[conntrack] Upstream online user: %d. Total online user: %d.", online_list[server].Cardinality(), len(conn_in)) }