示例#1
0
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))
}