Exemple #1
0
        static void Main(string[] args)
        {
            while (true)
            {
                String typed = Console.ReadLine();
                //if ping query
                if (typed == "ping")
                {
                    long             actualTime = DateTime.UtcNow.Ticks;
                    ClientPacketPing clientPing = new ClientPacketPing(actualTime);

                    Packet answer = SendPacket(NetworkHelper.SerializePacket(clientPing));

                    Console.WriteLine("Answer:" + answer);

                    ServerPacketPing serverPing = answer as ServerPacketPing;

                    if (serverPing == null)
                    {
                        break;
                    }

                    Console.WriteLine("Packet infos: " + serverPing.PacketSendTime);
                    long answerTime = serverPing.PacketSendTime;
                    Console.WriteLine("Ping : " + ((answerTime - actualTime) / 1000) + " ticks");
                }

                if (typed == "user")
                {
                    PLFUser newUser = new PLFUser();
                    newUser.UserNickName = "UserTest";
                    newUser.UserName     = "******";
                    newUser.UserSurname  = "UserTest Surname";
                    newUser.UserEMail    = "*****@*****.**";

                    ClientPacketUserRegister clientPacketUserRegister = new ClientPacketUserRegister(newUser, "mdp");

                    Packet answer = SendPacket(NetworkHelper.SerializePacket(clientPacketUserRegister));

                    Console.WriteLine("Answer:" + answer);

                    ServerPacketUserRegister serverPacketUserRegister = answer as ServerPacketUserRegister;

                    if (serverPacketUserRegister == null)
                    {
                        break;
                    }


                    int userID = serverPacketUserRegister.UserID;
                    Console.WriteLine(
                        $"Register: {serverPacketUserRegister.RegisterSuccess} - {userID} - {serverPacketUserRegister.ErrorMessage}");
                }

                System.Threading.Thread.Sleep(1000);
                Console.ReadKey();
                Console.Clear();
            }
        }
Exemple #2
0
        /// <summary>
        /// Registers the user.
        /// </summary>
        /// <returns>The user.</returns>
        /// <param name="user">User.</param>
        /// <param name="userPassword">User password.</param>
        public static ServerPacketUserRegister RegisterUser(PLFUser user, String userPassword)
        {
            //hash user password
            String hashPassword = userPassword.HashSHA256();

            //new user register packet
            ClientPacketUserRegister clientPacketUserRegister = new ClientPacketUserRegister(user, hashPassword);

            //send packet to server
            ServerPacketUserRegister serverPacketUserRegister = TCPClient.SendPacket(clientPacketUserRegister) as ServerPacketUserRegister;

            //if no answer
            if (serverPacketUserRegister == null)
            {
                return(new ServerPacketUserRegister(false, -1, NetworkError.SERVER_UNAVAILABLE));
            }

            return(serverPacketUserRegister);
        }
Exemple #3
0
        public override Packet OnPacketReceive(Packet receivedPacket)
        {
            //get packet
            ClientPacketUserRegister clientPacketUserRegister = receivedPacket as ClientPacketUserRegister;

            ConsoleHelper.Write("Receive - ClientPacketUserRegister");

            //read packet infos
            PLFUser newUser       = clientPacketUserRegister.User;
            String  userPassword  = clientPacketUserRegister.UserPassword.ToSQL();
            String  userSecretKey = KeyHelper.CreateRandomKey();

            //insert new profile into DB command
            MySqlCommand registerNewUserCommand = new MySqlCommand();

            registerNewUserCommand.Connection  = Program.mySQLManager.MySQLConnection.MysqlConnection;
            registerNewUserCommand.CommandText =
                //register profile
                $"INSERT INTO `T_User`(`userPassword`, `userNick`, `userName`, `userSurname`, `userEmail`) VALUES " +
                $"('{userPassword}','{newUser.UserNickName.ToSQL()}','{newUser.UserName.ToSQL()}','{newUser.UserSurname.ToSQL()}','{newUser.UserEMail.ToSQL()}');" +

                //register key
                $"INSERT INTO `T_RegisterKey`(`regUserMail`, `regKey`, `regKeyDeliver`) VALUES ('{newUser.UserEMail}','{userSecretKey}','{DateTime.Now.Ticks}');" +

                //get user id
                $"SELECT LAST_INSERT_ID()";

            MySqlDataReader mysqlDataReader = null;                 //command reader

            ServerPacketUserRegister serverPacketUserRegister;      //register packet answer

            try
            {
                int userID = 0;

                //Execute reader
                mysqlDataReader = registerNewUserCommand.ExecuteReader();


                //open reader and read ID
                while (mysqlDataReader.Read())
                {
                    userID = mysqlDataReader.GetInt32(0);
                }

                //new answer, register success
                serverPacketUserRegister = new ServerPacketUserRegister(true, userID, NetworkError.NONE);

                //send confirmation mail
                MailHelper.SendRegisterConfirmationMail(newUser, userSecretKey);
            }
            catch (MySqlException e)
            {
                //write sql error
                Console.WriteLine(e.Number + " - " + e.Message);


                NetworkError networkError;

                //switch between sql errors
                switch (e.Number)
                {
                case 1062:
                    networkError = NetworkError.SQL_USER_EXIST;
                    break;

                case 1064:
                    networkError = NetworkError.GLOBAL_UNKNOWN;
                    break;

                default:
                    networkError = NetworkError.GLOBAL_UNKNOWN;
                    break;
                }

                //new answer, register fail
                serverPacketUserRegister = new ServerPacketUserRegister(false, -1, networkError);
            }
            catch (Exception e)
            {
                //new answer, register fail
                serverPacketUserRegister = new ServerPacketUserRegister(false, -1, NetworkError.GLOBAL_UNKNOWN);
                Console.WriteLine(e.Message);
            }

            //close reader
            if (mysqlDataReader != null && !mysqlDataReader.IsClosed)
            {
                mysqlDataReader.Close();
            }

            ConsoleHelper.Write("Send - ServerPacketUserRegister");

            return(serverPacketUserRegister);
        }