コード例 #1
0
        /// <summary>
        /// Itère à travers toutes les couches de sécurité savant gérer la commande passée en paramètres.
        /// </summary>
        /// <returns></returns>
        static bool SecurityCheck(int connectionID, NetworkCommandMessage commandMessage)
        {
            bool passed = true; // Par défaut à true au cas où il n'y aurait aucune couche ne supportant cette commande.
            int  i      = 0;

            while (++i < SecurityLayers.Count && passed)
            {
                if (SecurityLayers[i].CanCheckCommand(commandMessage.Command))
                {
                    passed = SecurityLayers[i].DoSecurityCheck(commandMessage.Command, commandMessage.Args);
                }
            }

            return(passed);
        }
コード例 #2
0
        static void NetworkCommandReceiver(NetworkMessageInfo info, NetworkMessage message)
        {
            NetworkCommandMessage commandMessage = (NetworkCommandMessage)message;

            if (SecurityCheck(info.ConnectionID, commandMessage)) // Sécurité
            {
                // On a passé la sécurité ! Exécuter la commande.
                if (commandMessage.Args == null || commandMessage.Args.Length == 0)
                {
                    InputManager.SendCommand(commandMessage.Command);
                }
                else
                {
                    InputManager.SendCommand(commandMessage.Command, commandMessage.Args);
                }
            }
        }