public static string isLoginValid(string user, string pass) { Account Account = new Account(); Account = DbQuerys.GetAccountData(user, pass); if (Account == null) { return OpCode.LoginPacket_Auth_INVALID_PASSWORD.GetHashCode().ToString(); } else { Logger.WriteLine(LogState.Debug, "Checking Account: " + Account.Username); //BANN CHECK if (Account.IsBanned) { Logger.WriteLine(LogState.Debug, "Account.IsBanned: " + Account.Username); Logger.WriteLine(LogState.Debug, "Account.UnBanDate: " + Account.UnBanDate); Int64 timeStampNowValue = Convert.ToInt64(DateTime.Now.Ticks); Int64 timeStampUnbannValue = Account.UnBanDate; Logger.WriteLine(LogState.Debug, "timeStampNowValue: '" + timeStampNowValue + "' !"); Logger.WriteLine(LogState.Debug, "timeStampUnbannValue: '" + timeStampUnbannValue + "' !"); //Unban Account if Time Ok! if (timeStampUnbannValue <= timeStampNowValue) { DbQuerys.SetBanStatus(user, false, 0); return OpCode.LoginPacket_Auth_UNBANNED.GetHashCode().ToString(); } //BANNED Account = null; return OpCode.LoginPacket_Auth_BANNED.GetHashCode().ToString(); } if (Account.IsOnline) { Logger.WriteLine(LogState.Info, "Account: " + Account.Username + " already logged in!"); //DbQuerys.SetIsOnline(user, false); //this for later setting offline kicking other player maybe... for now no 2nd login possible! Account = null; return OpCode.LoginPacket_Auth_ONLINE.GetHashCode().ToString(); } //AuthorizationSuccessfull Logger.WriteLine(LogState.Info, "Account Verification for, " + Account.Username + " Ok!"); DbQuerys.SetLastOnlineUtc(Account.Username); return OpCode.LoginPacket_Auth_OK.GetHashCode().ToString(); } }
//Read AccountData for Username&Pass, return as Account() public static Account GetAccountData(string Username, string Password) { DataTable Data = new DataTable(); Account Account = new Account(); using (IQueryAdapter dbClient = LoginServer.dbManager.getQueryreactor()) { string GetAccountQuery = "SELECT * FROM accounts WHERE Username='******' AND Password='******';"; dbClient.setQuery(GetAccountQuery); Data = dbClient.getTable(); if (Data != null) { foreach (DataRow Row in Data.Rows) { Account = new Account() { AccountId = uint.Parse(Row["id"].ToString()), Username = Row["username"].ToString(), Password = Row["password"].ToString(), Email = Row["email"].ToString(), AccessLevel = uint.Parse(Row["accesslevel"].ToString()), Membership = Row["membership"].ToString(), IsGM = Convert.ToBoolean(int.Parse(Row["isgm"].ToString())), LastOnlineUtc = Convert.ToInt64((long.Parse(Row["lastonlineutc"].ToString()))), Coins = Convert.ToUInt32((Row["coins"].ToString())), Ip = Row["ip"].ToString(), Settings = Row["settings"].ToString(), IsOnline = Convert.ToBoolean(int.Parse(Row["isonline"].ToString())), IsBanned = Convert.ToBoolean(int.Parse(Row["isbanned"].ToString())), UnBanDate = Convert.ToInt64((long.Parse(Row["unbandate"].ToString()))), RegisterDate = Convert.ToInt64((long.Parse(Row["registerdate"].ToString()))), }; return Account; } } } Logger.WriteLine(LogState.Error, "Get Account Data failed, wrong pass?"); Account = null; return Account; }
public static int GetCurrentAccountCount() { DataTable Data = new DataTable(); Account Account = new Account(); using (IQueryAdapter dbClient = LoginServer.dbManager.getQueryreactor()) { string GetAccountQuery = "SELECT * FROM accounts"; dbClient.setQuery(GetAccountQuery); Data = dbClient.getTable(); if (Data != null) { foreach (DataRow Row in Data.Rows) { Account = new Account() { AccountId = uint.Parse(Row["Id"].ToString()), Username = Row["Username"].ToString(), Password = Row["Password"].ToString(), Email = Row["Email"].ToString(), AccessLevel = uint.Parse(Row["AccessLevel"].ToString()), Membership = Row["Membership"].ToString(), IsGM = bool.Parse(Row["IsGM"].ToString()), LastOnlineUtc = Convert.ToInt64((long.Parse(Row["LastOnlineUtc"].ToString()))), Coins = Convert.ToUInt32((Row["Coins"].ToString())), Ip = Row["Ip"].ToString(), Settings = Row["Settings"].ToString(), IsOnline = bool.Parse(Row["IsOnline"].ToString()), IsBanned = bool.Parse(Row["IsBanned"].ToString()), UnBanDate = Convert.ToInt64((long.Parse(Row["UnBanDate"].ToString()))), }; } return (int)Data.Rows.Count; } } Logger.WriteLine(LogState.Info, "No Users found, All Accounts free?"); return 0; }
public Account loadAccount(string accountName) { MySqlConnection SQLconnection = new MySqlConnection(MyConString); Account account = null; try { MySqlCommand cmd = SQLconnection.CreateCommand(); SQLconnection.Open(); cmd.CommandText = "SELECT Id,Username,Email,Password,AccessLevel,Membership,isGM,LastOnlineUtc,Coins,Ip,UiSettings FROM accounts WHERE Username='******'"; cmd.CommandType = CommandType.Text; MySqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { account = new Account(accountName); account.Id = reader.GetInt32("Id"); account.Username = reader.GetString("Username"); account.Email = reader.GetString("Email"); account.Password = reader.GetString("Password"); account.AccessLevel = reader.GetInt32("AccessLevel"); account.Membership = reader.GetString("Membership"); account.isGM = Convert.ToBoolean(reader.GetInt32("isGM")); account.LastOnlineUtc = reader.GetInt32("LastOnlineUtc"); account.Coins = reader.GetInt32("Coins"); account.Ip = reader.GetString("Ip"); account.UiSettings = reader.GetString("UiSettings"); } reader.Close(); SQLconnection.Close(); } catch (Exception)// ex) { SQLconnection.Close(); //MessageBox.Show(ex.ToString()); return null; } SQLconnection.Close(); return account; }
//Check if Username Exists public static bool UserExists(string Username) { DataTable Data = new DataTable(); Account Account = new Account(); using (IQueryAdapter dbClient = LoginServer.dbManager.getQueryreactor()) { string GetAccountQuery = "SELECT * FROM accounts WHERE Username='******' LIMIT 1;"; dbClient.setQuery(GetAccountQuery); Data = dbClient.getTable(); if (Data != null) { foreach (DataRow Row in Data.Rows) { Account = new Account() { AccountId = uint.Parse(Row["id"].ToString()), Username = Row["username"].ToString(), Password = Row["password"].ToString(), Email = Row["email"].ToString(), AccessLevel = uint.Parse(Row["accesslevel"].ToString()), Membership = Row["membership"].ToString(), IsGM = Convert.ToBoolean(int.Parse(Row["isgm"].ToString())), LastOnlineUtc = Convert.ToInt64((long.Parse(Row["lastonlineutc"].ToString()))), Coins = Convert.ToUInt32((Row["coins"].ToString())), Ip = Row["ip"].ToString(), Settings = Row["settings"].ToString(), IsOnline = Convert.ToBoolean(int.Parse(Row["isonline"].ToString())), IsBanned = Convert.ToBoolean(int.Parse(Row["isbanned"].ToString())), UnBanDate = Convert.ToInt64((long.Parse(Row["unbandate"].ToString()))), RegisterDate = Convert.ToInt64((long.Parse(Row["registerdate"].ToString()))), }; if (Account.Username != null || Account.Username == Username) { Logger.WriteLine(LogState.Debug, "User {0} found!!", Username); return true; } } } } Logger.WriteLine(LogState.Debug, "User {0} not found!", Username); return false; }