private void HandleConnectionApproval(NetIncomingMessage message)
        {
            if (!ConfigData.AllowConnections || DateTime.UtcNow > blockConnectionsAfter)
            {
                message.SenderConnection.Deny();
                return;
            }

            string authKey = message.ReadString();

            if (authKey == ConfigData.AuthKey)
            {
                message.SenderConnection.Approve();

                int    worldServerIdentifier = message.ReadInt32();
                string worldServerName       = message.ReadString();
                string worldServerAddress    = message.ReadString();
                int    worldServerPort       = message.ReadInt32();

                WorldServerManager.OnWorldServerConnected(message.SenderConnection, worldServerIdentifier, worldServerName, worldServerAddress, worldServerPort);
            }
            else
            {
                message.SenderConnection.Deny();
            }
        }
        public override void Tick(double deltaTime)
        {
            NetIncomingMessage message;

            while ((message = Server.ReadMessage()) != null)
            {
                switch (message.MessageType)
                {
                case NetIncomingMessageType.ConnectionApproval: HandleConnectionApproval(message); break;

                case NetIncomingMessageType.Data: HandleIncomingMessage(message); break;

                case NetIncomingMessageType.StatusChanged:
                {
                    switch ((NetConnectionStatus)message.PeekByte())
                    {
                    case NetConnectionStatus.Disconnected: WorldServerManager.OnWorldServerDisconnected(message.SenderConnection); break;
                    }
                }
                break;
                }
            }
        }
Пример #3
0
 internal BaseGameListener(WorldServerManager world)
 {
     World = world;
 }