public void Reconnect(LoginConnection connection, byte gsId, uint accountId, uint token)
        {
            if (!_tokens.ContainsKey(gsId))
            {
                var parentId = GameController.Instance.GetParentId(gsId);
                if (parentId != null)
                {
                    gsId = (byte)parentId;
                }
                else
                {
                    // TODO ...
                    return;
                }
            }

            if (!_tokens[gsId].ContainsKey(token))
            {
                // TODO ...
                return;
            }

            if (_tokens[gsId][token] == accountId)
            {
                connection.AccountId = accountId;
                connection.SendPacket(new ACJoinResponsePacket(0, 6, 0));
                connection.SendPacket(new ACAuthResponsePacket(connection.AccountId));
            }
            else
            {
                // TODO ...
            }
        }
        /// <summary>
        /// Kr Method Auth
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="username"></param>
        public static void Login(LoginConnection connection, string username)
        {
            using (var connect = MySQL.Create())
            {
                using (var command = connect.CreateCommand())
                {
                    command.CommandText = "SELECT * FROM users where username=@username";
                    command.Parameters.AddWithValue("@username", username);
                    command.Prepare();
                    using (var reader = command.ExecuteReader())
                    {
                        if (!reader.Read())
                        {
                            connection.SendPacket(new ACLoginDeniedPacket(2));
                            return;
                        }

                        // TODO ... validation password

                        connection.AccountId   = reader.GetUInt32("id");
                        connection.AccountName = username;
                        connection.LastLogin   = DateTime.Now;
                        connection.LastIp      = connection.Ip;

                        //connection.SendPacket(new ACJoinResponsePacket(0, 6, 0));
                        connection.SendPacket(new ACJoinResponsePacket(0, 0x480306, 0));
                        connection.SendPacket(new ACAuthResponsePacket(connection.AccountId));
                    }
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// Ru Method Auth
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        public static void Login(LoginConnection connection, string username, IEnumerable <byte> password)
        {
            using (var connect = MySQL.Create())
            {
                using (var command = connect.CreateCommand())
                {
                    command.CommandText = "SELECT * FROM users where username=@username";
                    command.Parameters.AddWithValue("@username", username);
                    command.Prepare();
                    using (var reader = command.ExecuteReader())
                    {
                        if (!reader.Read())
                        {
                            connection.SendPacket(new ACLoginDeniedPacket(2));
                            return;
                        }

                        var pass = Convert.FromBase64String(reader.GetString("password"));
                        if (!pass.SequenceEqual(password))
                        {
                            connection.SendPacket(new ACLoginDeniedPacket(2));
                            return;
                        }

                        connection.AccountId   = reader.GetUInt32("id");
                        connection.AccountName = username;
                        connection.LastLogin   = DateTime.Now;
                        connection.LastIp      = connection.Ip;

                        connection.SendPacket(new ACJoinResponsePacket(0, 6));
                        connection.SendPacket(new ACAuthResponsePacket(connection.AccountId));
                    }
                }
            }
        }
Exemple #4
0
        public void Reconnect(LoginConnection connection, byte gsId, uint accountId, uint token)
        {
            if (!_tokens.ContainsKey(gsId))
            {
                // TODO ...
                return;
            }

            if (!_tokens[gsId].ContainsKey(token))
            {
                // TODO ...
                return;
            }

            if (_tokens[gsId][token] == accountId)
            {
                connection.AccountId = accountId;
                connection.SendPacket(new ACJoinResponsePacket(0, 6));
                connection.SendPacket(new ACAuthResponsePacket(connection.AccountId));
            }
            else
            {
                // TODO ...
            }
        }
        public async void RequestWorldList(LoginConnection connection)
        {
            if (_gameServers.Values.Any(x => x.Active))
            {
                var gameServers = _gameServers.Values.ToList();
                var(requestIds, task) = RequestController.Instance.Create(gameServers.Count, 20000);  // TODO Request 20s
                for (var i = 0; i < gameServers.Count; i++)
                {
                    var value = gameServers[i];
                    if (!value.Active)
                    {
                        continue;
                    }
                    var chars = !connection.Characters.ContainsKey(value.Id);
                    value.SendPacket(
                        new LGRequestInfoPacket(connection.Id, requestIds[i], chars ? connection.AccountId : 0));
                }

                await task;
                connection.SendPacket(new ACWorldListPacket(gameServers, connection.GetCharacters()));
            }
            else
            {
                var gsList = new List <GameServer>(_gameServers.Values);
                connection.SendPacket(new ACWorldListPacket(gsList, connection.GetCharacters()));
            }
        }
 public void EnterWorld(LoginConnection connection, byte gsId, byte result)
 {
     if (result == 0)
     {
         if (_gameServers.ContainsKey(gsId))
         {
             connection.SendPacket(new ACWorldCookiePacket((int)connection.Id, _gameServers[gsId]));
         }
         else
         {
             // TODO ...
         }
     }
     else if (result == 1)
     {
         connection.SendPacket(new ACEnterWorldDeniedPacket(0)); // TODO change reason
     }
     else
     {
         // TODO ...
     }
 }
        public void RequestWorldList(LoginConnection connection)
        {
            var gsList = new List <GameServer>(_gameServers.Values);

            connection.SendPacket(new ACWorldListPacket(gsList, connection.GetCharacters()));
        }