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); }
/// <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); }
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(); } }
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); } }
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); } }
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; } }
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 ... } }
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); } }
/// <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); //} }
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); } }
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; }