Exemple #1
0
        private void HandleUnknownPacket(LoginConnection connection, uint type, PacketStream stream)
        {
            var dump = new StringBuilder();

            for (var i = stream.Pos; i < stream.Count; i++)
            {
                dump.AppendFormat("{0:x2} ", stream.Buffer[i]);
            }
            _log.Error("Unknown packet 0x{0:x2} from {1}:\n{2}", type, connection.Ip, dump);
        }
Exemple #2
0
        /// <summary>
        ///     Called when [login message received].
        /// </summary>
        /// <param name="result">The result.</param>
        private void OnLoginMessageReceived(IAsyncResult result)
        {
            LoginConnection connection = new LoginConnection(Xtea.Create());

            connection.Authenticate     += OnAuthenticate;
            connection.RequestLoginData += OnRequestedLoginData;
            connection.OnMessageReceived(result);
            _loginConnections.Add(connection);

            _loginListener.BeginAcceptSocket(OnLoginMessageReceived, _loginListener);
        }
Exemple #3
0
        private async void CheckLoggedInAsync()
        {
            var res = UserAccess.LoadUserAndIP(App.DatabaseLocation);

            if (res)
            {
                var User             = Helpers.Constants.User;
                var functionResponse = UserValidator.CheckUser(User);
                if (functionResponse.status == "error")
                {
                    DependencyService.Get <IMessage>().ShortAlert(functionResponse.Message);
                }
                else
                {
                    functionResponse = await LoginConnection.UserVerficationAsync(User);

                    if (functionResponse.status == "ok")
                    {
                        var user = JsonConvert.DeserializeObject <User>(functionResponse.result.ToString());
                        user.Password                   = User.Password;
                        user.ip1                        = User.ip1;
                        user.ip2                        = User.ip2;
                        user.ip3                        = User.ip3;
                        user.ip4                        = User.ip4;
                        user.Port                       = User.Port;
                        GlobalClass.Session             = user.Session;
                        GlobalClass.CompanyName         = user.CompanyName;
                        GlobalClass.CompanyAddress      = user.CompanyAddress;
                        GlobalClass.MemberBarcodePrefix = user.MemberBarcodePrefix;

                        Helpers.Constants.User = user;
                        GlobalClass.User       = user;
                        Helpers.Constants.SetMainURL(user);
                        UserAccess.SetUserAndIP(App.DatabaseLocation, user);

                        DependencyService.Get <IMessage>().ShortAlert("Logged In Successfully");
                        App.Current.MainPage = new NavigationPage(new ParkingMainTabbedPage());
                    }
                    else
                    {
                        DependencyService.Get <IMessage>().ShortAlert(functionResponse.Message);
                        MainPage = new LoginPage();
                    }

                    //MainPage = new LoginPage();
                }
            }
            else
            {
                MainPage = new LoginPage();
            }
        }
Exemple #4
0
 public HttpResponseMessage Register(LoginModel Model)
 {
     try
     {
         LoginConnection LoginCOnnection = new LoginConnection();
         string          Result          = LoginCOnnection.InsertUser(Model);
         return(Request.CreateResponse(HttpStatusCode.OK, Result));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message));
     }
 }
        public void RequestEnterWorld(LoginConnection connection, byte gsId)
        {
            if (!_gameServers.ContainsKey(gsId))
            {
                return;
            }
            var gs = _gameServers[gsId];

            if (!gs.Active)
            {
                return;
            }
            gs.SendPacket(new LGPlayerEnterPacket(connection.AccountId, connection.Id));
        }
        /// <summary>
        /// Логин сервер передал Гейм серверу пакет с информацией об подключаемом аккаунте
        /// </summary>
        /// <param name="net"></param>
        /// <param name="reader"></param>
        private static void Handle_AccountInfoReceived(LoginConnection net, PacketReader reader)
        {
            /*
             *  5400 0100
             *  1AC7000000000000 61617465737400 616174657374616100 333165333466326237326439336262323564356632376265386139346334373800 01 01 3132372E302E302E3100 4329871565010000 02 2810B47A
             */
            //Set Account Info
            Account account = new Account
            {
                AccountId = reader.ReadLEInt64(),
                Name      = reader.ReadDynamicString(),
                //Password = reader.ReadDynamicString(),
                Token           = reader.ReadDynamicString(),
                AccessLevel     = reader.ReadByte(),
                Membership      = reader.ReadByte(),
                LastIp          = reader.ReadDynamicString(),
                LastEnteredTime = reader.ReadLEInt64(),
                Characters      = reader.ReadByte(),
                Session         = reader.ReadLEInt32()
            };

            Logger.Trace("Prepare login account ID: {0}, Session(cookie): {1}", account.AccountId, account.Session);
            //Check if the account is online and force it to disconnect online
            Account m_Authorized = ClientConnection.CurrentAccounts.FirstOrDefault(kv => kv.Value.Session == account.Session && kv.Value.AccountId == account.AccountId).Value;

            if (m_Authorized != null)
            {
                //Already
                Account acc = ClientConnection.CurrentAccounts[m_Authorized.Session];
                if (acc.Connection != null)
                {
                    acc.Connection.Dispose(); //Disconenct
                    Logger.Trace("Account Name: {0} log in twice, old connection is forcibly disconnected", acc.Name);
                }
                else
                {
                    //Исправление входа второго пользователя, вторичный логин
                    ClientConnection.CurrentAccounts.Remove(m_Authorized.Session);
                    Logger.Trace("Account Name: {0} double connection is forcibly disconnected", acc.Name);
                    ClientConnection.CurrentAccounts.Add(account.Session, account);
                    Logger.Trace("Account Name: {0}, Session(cookie): {1} authorized", account.Name, account.Session);
                }
            }
            else
            {
                ClientConnection.CurrentAccounts.Add(account.Session, account);
                Logger.Trace("Account Name: {0}, Session(cookie): {1} authorized", account.Name, account.Session);
            }
        }
Exemple #7
0
 public override void OnConnect(Session session)
 {
     _log.Info("Connect from {0} established, session id: {1}", session.Ip.ToString(), session.Id.ToString());
     try
     {
         var con = new LoginConnection(session);
         con.OnConnect();
         LoginConnectionTable.Instance.AddConnection(con);
     }
     catch (Exception e)
     {
         session.Close();
         _log.Error(e);
     }
 }
Exemple #8
0
        private static void Handle_GameRegisterResult(LoginConnection con, PacketReader reader)
        {
            bool result = reader.ReadBoolean();

            if (result)
            {
                Logger.Trace("成功安装登陆服务器");
            }
            else
            {
                Logger.Trace("有些问题是在安装登录服务器出现");
            }
            if (result)
            {
                m_CurrentLoginServer = con;
            }
        }
Exemple #9
0
        private static void Handle_GameRegisterResult(LoginConnection con, PacketReader reader)
        {
            bool result = reader.ReadBoolean();

            if (result)
            {
                Logger.Trace("Login Server Successfully Installed");
            }
            else
            {
                Logger.Trace("Some Problems are Appear while Installing Login Server");
            }
            if (result)
            {
                m_CurrentLoginServer = con;
            }
        }
        private static void Handle_GameRegisterResult(LoginConnection con, PacketReader reader)
        {
            bool result = reader.ReadBoolean();

            if (result)
            {
                Logger.Trace("Successfully install the login server");
            }
            else
            {
                Logger.Trace("Some problems arise when installing the login server");
            }
            if (result)
            {
                m_CurrentLoginServer = con;
            }
        }
 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 ...
     }
 }
Exemple #12
0
        private static void Handle_AccountInfoReceived(LoginConnection net, PacketReader reader)
        {
            //Set Account Info
            Account account = new Account();

            account.AccountId   = reader.ReadInt32();
            account.AccessLevel = reader.ReadByte();
            account.Membership  = reader.ReadByte();
            account.Name        = reader.ReadDynamicString();
            //account.Password = reader.ReadDynamicString();
            account.Session         = reader.ReadInt32();
            account.LastEnteredTime = reader.ReadInt64();
            account.LastIp          = reader.ReadDynamicString();

            Console.WriteLine("准备登陆的账号:<" + account.AccountId + ">;");
            //检查账户是否在线,若在线则强制断开
            Account m_Authorized = ClientConnection.CurrentAccounts.FirstOrDefault(kv => kv.Value.AccountId == account.AccountId).Value;

            if (m_Authorized != null)
            {
                //Already
                Account acc = ClientConnection.CurrentAccounts[m_Authorized.Session];
                if (acc.Connection != null)
                {
                    acc.Connection.Dispose(); //Disconenct
                    Logger.Trace("账户《 " + acc.Name + "》 二次登陆,旧连接被强行断开");
                }
                else
                {
                    ClientConnection.CurrentAccounts.Remove(account.Session);
                }
            }
            else
            {
                Logger.Trace("账户《 {0}》: 授权", account.Name);
                ClientConnection.CurrentAccounts.Add(account.Session, account);
            }
        }
Exemple #13
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"));
                        //TODO: Fix this shit

                        /*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));
                    }
                }
            }
        }
        private void login_Click(object sender, RoutedEventArgs e)
        {
            LoginConnection lgConn = new LoginConnection();

            /* Temporarily disabling the following two lines to make our life easier during testing: */
            //username=userNameTB.Text;
            //password=passwordTB.Password;
            username = "******";
            password = "******";
            /* end of modification */

            loginCheck = lgConn.compare(username, password);
            if (loginCheck)
            {
                MainMenu menu = new MainMenu();
                menu.Activate();
                this.Close();
                menu.Show();
            }
            else
            {
                MessageBox.Show("Username or password wrong!");
            }
        }
        /// <summary>
        /// Логин сервер передал Гейм серверу пакет с информацией об подключаемом аккаунте
        /// </summary>
        /// <param name="net"></param>
        /// <param name="reader"></param>
        private static void Handle_AccountInfoReceived(LoginConnection net, PacketReader reader)
        {
            /*
             *  5400 0100
             *  1AC7000000000000 61617465737400 616174657374616100 333165333466326237326439336262323564356632376265386139346334373800 01 01 3132372E302E302E3100 4329871565010000 02 2810B47A
             */
            //Set Account Info
            Account account = new Account
            {
                //reader.Offset += 2; //Undefined Random Byte
                AccountId = reader.ReadLEInt64(),
                Name      = reader.ReadDynamicString(),
                //Password = reader.ReadDynamicString(),
                Token           = reader.ReadDynamicString(),
                AccessLevel     = reader.ReadByte(),
                Membership      = reader.ReadByte(),
                LastIp          = reader.ReadDynamicString(),
                LastEnteredTime = reader.ReadLEInt64(),
                Characters      = reader.ReadByte(),
                Session         = reader.ReadLEInt32()
            };

            Logger.Trace("Prepare login account ID: " + account.AccountId);
            //Check if the account is online and force it to disconnect online
            //Account m_Authorized = ClientConnection.CurrentAccounts.FirstOrDefault(kv => kv.Value.AccountId == account.AccountId).Value;
            //Account m_Authorized = ClientConnection.CurrentAccounts.FirstOrDefault(kv => kv.Value.Session == account.Session && kv.Value.AccountId == account.AccountId).Value;
            Account m_Authorized = ClientConnection.CurrentAccounts.FirstOrDefault(kv => kv.Value.Session == account.Session).Value;

            if (m_Authorized != null)
            {
                //Already
                Account acc = ClientConnection.CurrentAccounts[m_Authorized.Session];
                if (acc.Connection != null)
                {
                    acc.Connection.Dispose(); //Disconenct
                    Logger.Trace("Account Name: " + acc.Name + " log in twice, old connection is forcibly disconnected");
                }
                else
                {
                    ClientConnection.CurrentAccounts.Remove(m_Authorized.Session);
                    Logger.Trace("Account Name: " + acc.Name + " double connection is forcibly disconnected");
                }
            }
            else
            {
                ClientConnection.CurrentAccounts.Add(account.Session, account);
                Logger.Trace("Account Name: {0}, Session(cookie): {1} authorized", account.Name, account.Session);
            }
            //if (ClientConnection.CurrentAccounts.ContainsKey(account.Session))
            //{
            //    //Already
            //    Account acc = ClientConnection.CurrentAccounts[account.Session];
            //    if (acc.Connection != null)
            //    {
            //        acc.Connection.Dispose(); //Disconenct
            //        Logger.Trace("Account " + acc.Name + " Was Forcibly Disconnected");
            //    }
            //    else
            //    {
            //        Logger.Trace("Account " + account.Name + " was forcibly disconnected");
            //        ClientConnection.CurrentAccounts.Remove(account.Session);
            //    }
            //}
            //else
            //{
            //    Logger.Trace("Account {0}: Authorized", account.Name);
            //    ClientConnection.CurrentAccounts.Add(account.Session, account);
            //}
        }
Exemple #16
0
        public async void ExecuteLoginCheckCommand()
        {
            try
            {
                LoadingMessage = "Loading!! Please wait a while";
                IsLoading      = true;
                if (CancelingUser == null)
                {
                    return;
                }
                if (string.IsNullOrEmpty(CancelingUser.UserName))
                {
                    DependencyService.Get <IMessage>().ShortAlert("UserName is empty");
                }
                else if (string.IsNullOrEmpty(CancelingUser.Password))
                {
                    DependencyService.Get <IMessage>().ShortAlert("Password is empty");
                }
                else
                {
                    var res = await LoginConnection.CheckAccessAsync(CancelingUser);

                    if (res.ToLower() == "success")
                    {
                        double qty       = 0;
                        double decreased = 0;
                        double left      = 0;

                        if (SelectedOrderItem.Quantity > 0)
                        {
                            var items = OrderItemsList.Where(x => x.REFSNO == SelectedOrderItem.SNO).ToList();
                            foreach (var i in items)
                            {
                                qty += i.Quantity;
                                if (i.SNO > 0)
                                {
                                    decreased += i.Quantity;
                                }
                            }
                        }

                        var neg = -(SelectedOrderItem.Quantity + qty);
                        if (neg < 0)
                        {
                            var items = OrderItemsList.Where(x => x.REFSNO == SelectedOrderItem.SNO).ToList();
                            foreach (var i in items)
                            {
                                if (i.SNO == 0)
                                {
                                    i.Quantity = -(SelectedOrderItem.Quantity - decreased);
                                    i.Remarks  = CancelingUser.Remarks;
                                    RefreshOrderItemsList();
                                    CancelingUser = new User();
                                    IsCancel      = false;
                                    IsLoading     = false;
                                    return;
                                }
                            }

                            var item    = SubMenuList.Find(x => x.MCODE == SelectedOrderItem.MCODE);
                            var KOTItem = M.MenuItem.MenuItemsToKOTProd(item);
                            KOTItem.Remarks  = CancelingUser.Remarks;
                            KOTItem.Quantity = neg;
                            KOTItem.REFSNO   = SelectedOrderItem.SNO;
                            OrderItemsList.Add(KOTItem);
                        }
                    }
                    else
                    {
                        DependencyService.Get <IMessage>().ShortAlert(res);
                    }
                }
                RefreshOrderItemsList();

                CancelingUser = new User();
                IsCancel      = false;
                IsLoading     = false;
            }catch (Exception ex)
            {
                IsCancel  = false;
                IsLoading = false;
                DependencyService.Get <IMessage>().ShortAlert(ex.Message);
            }
        }
Exemple #17
0
        public void OnReceive(LoginConnection connection, byte[] buf, int bytes)
        {
            try
            {
                var stream = new PacketStream();
                if (connection.LastPacket != null)
                {
                    stream.Insert(0, connection.LastPacket);
                    connection.LastPacket = null;
                }

                stream.Insert(stream.Count, buf);
                while (stream != null && stream.Count > 0)
                {
                    ushort len;
                    try
                    {
                        len = stream.ReadUInt16();
                    }
                    catch (MarshalException)
                    {
                        //_log.Warn("Error on reading type {0}", type);
                        stream.Rollback();
                        connection.LastPacket = stream;
                        stream = null;
                        continue;
                    }

                    var packetLen = len + stream.Pos;
                    if (packetLen <= stream.Count)
                    {
                        stream.Rollback();
                        var stream2 = new PacketStream();
                        stream2.Replace(stream, 0, packetLen);
                        if (stream.Count > packetLen)
                        {
                            var stream3 = new PacketStream();
                            stream3.Replace(stream, packetLen, stream.Count - packetLen);
                            stream = stream3;
                        }
                        else
                        {
                            stream = null;
                        }

                        stream2.ReadUInt16(); //len
                        var type = stream2.ReadUInt16();
                        _packets.TryGetValue(type, out var classType);
                        if (classType == null)
                        {
                            HandleUnknownPacket(connection, type, stream2);
                        }
                        else
                        {
                            var packet = (LoginPacket)Activator.CreateInstance(classType);
                            packet.Connection = connection;
                            packet.Decode(stream2);
                        }
                    }
                    else
                    {
                        stream.Rollback();
                        connection.LastPacket = stream;
                        stream = null;
                    }
                }
            }
            catch (Exception e)
            {
                connection?.Shutdown();
                _log.Error(e);
            }
        }
        public void RequestWorldList(LoginConnection connection)
        {
            var gsList = new List <GameServer>(_gameServers.Values);

            connection.SendPacket(new ACWorldListPacket(gsList, connection.GetCharacters()));
        }
 public void SetConnection(LoginConnection con)
 {
     _connection = con;
 }