Exemple #1
0
        /// <summary>
        /// Сюда нам придет запрос на авторизацию
        /// </summary>
        /// <param name="approvalConnection">Временное не авторизированное соеденение</param>
        /// <param name="data">Массив байт, данные присланные вместе с запросом авторизации</param>
        private void OnGalaxyConnect(ApprovalConnection approvalConnection, byte[] data)
        {
            MessageAuth message = MessageAuth.Deserialize <MessageAuth>(data); //преобразовывем массив байт в читабельное сообщение

            //тут нам следовало бы провести какую либо проверку правильности логина и пароля
            //Но сейчас мы не станем этого делать, и просто разрешить соеденение всем в чьих логинах содержится test
            if (message.login.Contains("test"))
            {
                MessageApproval response = new MessageApproval(); //Создадим пакет который мы отправим клиенту вместе с разрешением коннекта
                response.name = message.login;
                int clientID = Tools.GetNewID();                  // Получаем ид

                ClientConnection connection;                      // Раз мы решили авторизировать клиента, то следует создать уже постоянное соеденение
                Client           client = new Client();           // Создаем собственную реализацию клиента
                // возвращяем данные вместе с разрешением, так же мы получим уже рабочий экземпляр авторизированного соеденения
                // так же приклепляем собственную реализацию клиента, для того что бы в бущем, можно было её оперативно получить из коннекшена
                connection = approvalConnection.Approve(response, clientID, client);
                client.Init(connection, clientID);
            }
            else
            {
                //Ну а раз test в логине не нашлось, то соеденение не разрешаем
                //Тут нам нужно отправить два оргумента
                // первый это код ошибки, вы можете указать его любым, от вернется клиенту для дайнейшей обработки
                // второй это читабельное сообщение об ошибки, впрочим это не обязательно
                approvalConnection.Deny(1, "Нам не нравится ваш логин");
            }
        }
        /// <summary>
        /// Сюда нам придет запрос на авторизацию
        /// </summary>
        /// <param name="approvalConnection">Временное не авторизированное соеденение</param>
        /// <param name="data">Массив байт, данные присланные вместе с запросом авторизации</param>
        private void OnGalaxyConnect(ApprovalConnection approvalConnection, byte[] data)
        {
            Console.WriteLine("Авторизация");

            MessageAuth message = MessageAuth.Deserialize <MessageAuth>(data); //преобразовывем массив байт в читабельное сообщение

            //тут нам следовало бы провести какую либо проверку правильности логина и пароля
            //Но сейчас мы не станем этого делать, и просто разрешить соеденение всем в чьих логинах содержится test
            if (message.login.Contains("test"))
            {
                MessageFirst response = new MessageFirst();                     //Создадим пакет который мы отправим клиенту вместе с разрешением коннекта
                response.id = DataBaseEmitator.GetNewUserID();                  // Получаем ид
                ClientConnection connection;                                    // Раз мы решили авторизировать клиента, то следует создать уже постоянное соеденение
                connection = approvalConnection.Approve(response, response.id); // возвращяем данные вместе с разрешением, так же мы получим уже рабочий экземпляр авторизированного соеденения
                Client client = new Client(connection, response.id);
                Server.clientManager.AddClient(client);
            }
            else
            {
                //Ну а раз test в логине не нашлось, то соеденение не разрешаем
                //Тут нам нужно отправить два оргумента
                // первый это код ошибки, вы можете указать его любым, от вернется клиенту для дайнейшей обработки
                // второй это читабельное сообщение об ошибки, впрочим это не обязательно
                approvalConnection.Deny(1, "Нам не нравится ваш логин");
            }
        }
Exemple #3
0
 /// <summary>
 /// Запрос регистрации
 /// </summary>
 /// <param name="approvalConnection">Неавторизированное подключение запрашивающее регистрацию</param>
 /// <param name="data">массив байт, данные приложеные к запросу</param>
 private void OnGalaxyRegistration(ApprovalConnection approvalConnection, byte[] data)
 {
     //но мы не станем пока что реализовывать регистрацию, поэтому просто её запретим для любых случаев
     approvalConnection.Deny(2, "Регистрация не активна");
     //Обратите внимание, даже вслучае успешной авторизации желательно отправить Deny пакет. а в качестве маркера успеха использовать какой либо код ответа
     // например approvalConnection.Deny(0, "Регистрация успешна");
 }