Esempio n. 1
0
        /// <summary>
        /// Logins the user hashed.
        /// </summary>
        /// <returns>The user hashed.</returns>
        /// <param name="userNick">User nick.</param>
        /// <param name="userPassword">User hashed password.</param>
        public static ServerPacketUserLogin LoginUserHashed(String userNick, String userPassword)
        {
            //new user login packet
            ClientPacketUserLogin clientPacketUserLogin = new ClientPacketUserLogin(userNick, userPassword);

            //send login to server
            ServerPacketUserLogin serverPacketUserLogin = TCPClient.SendPacket(clientPacketUserLogin) as ServerPacketUserLogin;

            //if no answer
            if (serverPacketUserLogin == null)
            {
                return(new ServerPacketUserLogin(NetworkError.SERVER_UNAVAILABLE, null, false, null));
            }

            return(serverPacketUserLogin);
        }
        public override Packet OnPacketReceive(Packet receivedPacket)
        {
            ClientPacketUserLogin clientPacketUserLogin = receivedPacket as ClientPacketUserLogin;

            ConsoleHelper.Write("Receive - ClientPacketUserLogin");

            String userNick     = clientPacketUserLogin.UserName.ToSQL();
            String userPassword = clientPacketUserLogin.UserPassword.ToSQL();

            //login user db command
            MySqlCommand loginUserCommand = new MySqlCommand();

            loginUserCommand.Connection  = Program.mySQLManager.MySQLConnection.MysqlConnection;
            loginUserCommand.CommandText =
                $"SELECT * FROM `T_User` WHERE userNick='{userNick}' AND userPassword='******'";

            MySqlDataReader mysqlDataReader = null;

            ServerPacketUserLogin serverPacketUserLogin;

            Boolean userAccountActive = false;

            try
            {
                mysqlDataReader = loginUserCommand.ExecuteReader();

                PLFUser user = null;

                //open reader
                while (mysqlDataReader.Read())
                {
                    user = new PLFUser(mysqlDataReader.GetInt32(0), mysqlDataReader.GetString(2), mysqlDataReader.GetString(3), mysqlDataReader.GetString(4), mysqlDataReader.GetString(5));
                    userAccountActive = mysqlDataReader.GetBoolean(6);
                }

                mysqlDataReader.Close();

                if (user != null)
                {
                    //login user db command
                    MySqlCommand getUserDAuthKeyCommand = new MySqlCommand();
                    getUserDAuthKeyCommand.Connection  = Program.mySQLManager.MySQLConnection.MysqlConnection;
                    getUserDAuthKeyCommand.CommandText =
                        $"SELECT * FROM `T_DoubleAuth` WHERE `daUserID`='{user.ID}'";

                    mysqlDataReader = getUserDAuthKeyCommand.ExecuteReader();

                    String userKey = "null";

                    while (mysqlDataReader.Read())
                    {
                        userKey = mysqlDataReader.GetString(1);
                    }


                    serverPacketUserLogin = new ServerPacketUserLogin(NetworkError.NONE, user, userAccountActive, userKey == null ? null: JsonConvert.DeserializeObject <byte[]>(userKey));
                }
                else
                {
                    serverPacketUserLogin = new ServerPacketUserLogin(NetworkError.SQL_USER_UNKNOWN, null, false, null);
                }
            }
            catch (Exception e)
            {
                serverPacketUserLogin = new ServerPacketUserLogin(NetworkError.GLOBAL_UNKNOWN, null, false, null);
                Console.WriteLine(e.Message);
            }

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

            ConsoleHelper.Write("Send - ServerPacketUserLogin");



            return(serverPacketUserLogin);
        }