public static Account CreateAccount(string email, string password) { var account = new Account(email, password); Accounts.Add(email, account); account.SaveToDB(); return account; }
public static Account CreateAccount(string email, string password, Account.UserLevels userLevel = Account.UserLevels.User) { var account = new Account(email, password, userLevel); Accounts.Add(email, account); account.SaveToDB(); return account; }
public static bool AreFriends(Account account1, Account account2) { foreach (var friend in Friends[account1.BnetEntityId.Low]) { if (friend.Id.Low == account2.BnetEntityId.Low) return true; } return false; }
public static bool InvitationExists(Account inviter, Account invitee) { foreach (var invitation in OnGoingInvitations.Values) { if ((invitation.InviterIdentity.AccountId == inviter.BnetEntityId) && (invitation.InviteeIdentity.AccountId == invitee.BnetEntityId)) return true; } return false; }
public static Account CreateAccount(string email, string password, string battleTag, Account.UserLevels userLevel = Account.UserLevels.User) { var hashCode = AccountManager.GetUnusedHashCodeForBattleTag(battleTag); var account = new Account(email, password, battleTag, hashCode, userLevel); Accounts.Add(email, account); account.SaveToDB(); return account; }
private void SendFriends(Account account) { if (!_friends.ContainsKey(account.BnetAccountID)) return; var friends = _friends[account.BnetAccountID]; foreach (var friend in friends) { } }
public static Account GetAccountByEmail(string email) { Account account; if (Accounts.ContainsKey(email)) account = Accounts[email]; else { account = new Account(email); Accounts.Add(email, account); account.SaveToDB(); } return account; }
private static void LoadAccounts() { var query = "SELECT * from accounts"; var cmd = new SQLiteCommand(query, DBManager.Connection); var reader = cmd.ExecuteReader(); if (!reader.HasRows) return; while (reader.Read()) { var databaseId = (ulong)reader.GetInt64(0); var email = reader.GetString(1); var account = new Account(databaseId, email); Accounts.Add(email, account); } }
public static bool DeleteAccount(Account account) { if (account == null) return false; if (!Accounts.ContainsKey(account.Email)) return false; try { var query = string.Format("DELETE from accounts where id={0}", account.PersistentID); var cmd = new SQLiteCommand(query, DBManager.Connection); cmd.ExecuteNonQuery(); } catch (Exception e) { Logger.ErrorException(e, "DeleteAccount()"); return false; } Accounts.Remove(account.Email); // we should be also disconnecting the account if he's online. /raist. return true; }
public static Account CreateAccount(string email, string password, string battleTag, Account.UserLevels userLevel = Account.UserLevels.User) { if (password.Length > 16) password = password.Substring(0, 16); // make sure the password does not exceed 16 chars. var hashCode = GetRandomHashCodeForBattleTag(); var salt = SRP6a.GetRandomBytes(32); var passwordVerifier = SRP6a.CalculatePasswordVerifierForAccount(email, password, salt); var newDBAccount = new DBAccount { Email = email, Salt = salt, PasswordVerifier = passwordVerifier, BattleTagName = battleTag, UserLevel = userLevel, HashCode = hashCode }; DBSessions.AccountSession.SaveOrUpdate(newDBAccount); DBSessions.AccountSession.Flush(); return GetAccountByDBAccount(newDBAccount); }
private void SetField(Account owner) { this.Owner = owner; this.OwnerIdField.Value = owner.BnetEntityId; var bnetGameAccountHigh = ((ulong)EntityIdHelper.HighIdType.GameAccountId) + (0x6200004433); this.BnetEntityId = bnet.protocol.EntityId.CreateBuilder().SetHigh(bnetGameAccountHigh).SetLow(this.PersistentID).Build(); this.D3GameAccountId = D3.OnlineService.EntityId.CreateBuilder().SetIdHigh(bnetGameAccountHigh).SetIdLow(this.PersistentID).Build(); //TODO: Now hardcode all game account notifications to D3 this.ProgramField.Value = "D3"; this.GameAccountNameField.Value = Owner.BnetEntityId.Low.ToString() + "#1"; this.BattleTagField.Value = this.Owner.BattleTag; this.Achievements = new List<bnet.protocol.achievements.AchievementUpdateRecord>(); this.AchievementCriteria = new List<bnet.protocol.achievements.CriteriaUpdateRecord>(); }
private static void LoadAccounts() { var query = "SELECT * from accounts"; var cmd = new SQLiteCommand(query, DBManager.Connection); var reader = cmd.ExecuteReader(); if (!reader.HasRows) return; while (reader.Read()) { var accountId = (ulong)reader.GetInt64(0); var email = reader.GetString(1); var salt = new byte[32]; var readBytes = reader.GetBytes(2, 0, salt, 0, 32); var passwordVerifier = new byte[128]; readBytes = reader.GetBytes(3, 0, passwordVerifier, 0, 128); var battleTagName = reader.GetString(4); var hashCode = reader.GetInt32(5); var userLevel = reader.GetByte(6); var account = new Account(accountId, email, salt, passwordVerifier, battleTagName, hashCode, (Account.UserLevels)userLevel); Accounts.Add(email, account); } }
private void SetFields(string name, int hashCode, ToonClass @class, ToonFlags flags, byte level, Account owner,uint timePlayed) { this.ToonHandle = new ToonHandleHelper(this.PersistentID); this.D3EntityID = this.ToonHandle.ToD3EntityID(); this.BnetEntityID = this.ToonHandle.ToBnetEntityID(); this.Name = name; this.HashCode = hashCode; this.HashCodeString = HashCode.ToString("D3"); this.Class = @class; this.Flags = flags; this.Level = level; this.Owner = owner; this.TimePlayed = timePlayed; var visualItems = new[] { D3.Hero.VisualItem.CreateBuilder().SetGbid(0).SetDyeType(0).SetItemEffectType(0).SetEffectLevel(0).Build(), // Head D3.Hero.VisualItem.CreateBuilder().SetGbid(0).SetDyeType(0).SetItemEffectType(0).SetEffectLevel(0).Build(), // Chest D3.Hero.VisualItem.CreateBuilder().SetGbid(0).SetDyeType(0).SetItemEffectType(0).SetEffectLevel(0).Build(), // Feet D3.Hero.VisualItem.CreateBuilder().SetGbid(0).SetDyeType(0).SetItemEffectType(0).SetEffectLevel(0).Build(), // Hands D3.Hero.VisualItem.CreateBuilder().SetGbid(0).SetDyeType(0).SetItemEffectType(0).SetEffectLevel(0).Build(), // Weapon (1) D3.Hero.VisualItem.CreateBuilder().SetGbid(0).SetDyeType(0).SetItemEffectType(0).SetEffectLevel(0).Build(), // Weapon (2) D3.Hero.VisualItem.CreateBuilder().SetGbid(0).SetDyeType(0).SetItemEffectType(0).SetEffectLevel(0).Build(), // Shoulders D3.Hero.VisualItem.CreateBuilder().SetGbid(0).SetDyeType(0).SetItemEffectType(0).SetEffectLevel(0).Build(), // Legs }; this.Equipment = D3.Hero.VisualEquipment.CreateBuilder().AddRangeVisualItem(visualItems).Build(); }
public CommandGroupAttribute(string name, string help, Account.UserLevels minUserLevel = Account.UserLevels.User) { this.Name = name.ToLower(); this.Help = help; this.MinUserLevel = minUserLevel; }
public static Dictionary<ulong, Toon> GetToonsForAccount(Account account) { return Toons.Where(pair => pair.Value.Owner != null).Where(pair => pair.Value.Owner.PersistentID == account.PersistentID).ToDictionary(pair => pair.Key, pair => pair.Value); }
private static void LoadAccounts() { var query = "SELECT * from accounts"; var cmd = new SQLiteCommand(query, DBManager.Connection); var reader = cmd.ExecuteReader(); if (!reader.HasRows) return; while (reader.Read()) { var accountId = (ulong)reader.GetInt64(0); var email = reader.GetString(1); var salt = new byte[32]; var readBytes = reader.GetBytes(2, 0, salt, 0, 32); var passwordVerifier = new byte[128]; readBytes = reader.GetBytes(3, 0, passwordVerifier, 0, 128); var battleTagName = reader.GetString(4); var hashCode = reader.GetInt32(5); var userLevel = reader.GetByte(6); //Don't set all values in c-tor. var account = new Account(accountId, email, salt, passwordVerifier, battleTagName, hashCode, (Account.UserLevels)userLevel); if (!reader.IsDBNull(7)) { var lastSelectedHeroId = reader.GetInt64(7); account.LastSelectedHeroField.Value = D3.OnlineService.EntityId.CreateBuilder().SetIdHigh((ulong)EntityIdHelper.HighIdType.ToonId + (ulong)lastSelectedHeroId).SetIdLow((ulong)lastSelectedHeroId).Build(); } Accounts.Add(email, account); } }
public CommandAttribute(string command, string help, Account.UserLevels minUserLevel = Account.UserLevels.User) { this.Name = command.ToLower(); this.Help = help; this.MinUserLevel = minUserLevel; }
public Toon(string name, int classId, ToonFlags flags, byte level, Account account) // Toon with **newly generated** persistent ID : base(StringHashHelper.HashIdentity(name)) { this.SetFields(name, GetClassByID(classId), flags, level, account); }
private static void LoadAccounts() { var query = "SELECT * FROM accounts"; var cmd = new SQLiteCommand(query, DBManager.Connection); var reader = cmd.ExecuteReader(); if (!reader.HasRows) return; while (reader.Read()) { var accountId = Convert.ToUInt64(reader["id"]); var email = Convert.ToString(reader["email"]); var salt = new byte[32]; var readBytes = reader.GetBytes(2, 0, salt, 0, 32); var passwordVerifier = new byte[128]; readBytes = reader.GetBytes(3, 0, passwordVerifier, 0, 128); var battleTagName = Convert.ToString(reader["battletagname"]); var hashCode = Convert.ToInt32(reader["hashCode"]); var userLevel = Convert.ToByte(reader["userLevel"]); var account = new Account(accountId, email, salt, passwordVerifier, battleTagName, hashCode, (Account.UserLevels)userLevel); account.LastOnlineField.Value = Convert.ToInt64(reader["LastOnline"]); Accounts.Add(email, account); } }
private static void AddFriendshipToDB(Account inviter, Account invitee) { try { var query = string.Format("INSERT INTO friends (accountId, friendId) VALUES({0},{1}); INSERT INTO friends (accountId, friendId) VALUES({2},{3});", inviter.BnetEntityId.Low, invitee.BnetEntityId.Low, invitee.BnetEntityId.Low, inviter.BnetEntityId.Low); var cmd = new SQLiteCommand(query, DBManager.Connection); cmd.ExecuteNonQuery(); } catch (Exception e) { Logger.ErrorException(e, "FriendManager.AddFriendshipToDB()"); } }
private void NotifyFriends(Account account) { }
public static GameAccount CreateGameAccount(Account account) { var gameAccount = new GameAccount(account); GameAccounts.Add(gameAccount.PersistentID, gameAccount); gameAccount.SaveToDB(); return gameAccount; }
public static Dictionary<ulong, GameAccount> GetGameAccountsForAccountProgram(Account account, FieldKeyHelper.Program program) { return GameAccounts.Where(pair => pair.Value.Owner != null).Where(pair => (pair.Value.Owner.PersistentID == account.PersistentID) && (pair.Value.Program == program)).ToDictionary(pair => pair.Key, pair => pair.Value); }
public DefaultCommand(Account.UserLevels minUserLevel = Account.UserLevels.User) : base("", "", minUserLevel) { }
public CommandHandlerClient(Account account):base(null) { this.Account = account; }
/// <summary> /// New GameAccount /// </summary> /// <param name="account"></param> public GameAccount(Account account) : base(account.BnetEntityId.Low) { this.Owner = account; this.OwnerIdField.Value = Owner.BnetEntityId; this.SetField(); this.BannerConfiguration = D3.Account.BannerConfiguration.CreateBuilder() .SetBannerShape(189701627) .SetSigilMain(1494901005) .SetSigilAccent(3399297034) .SetPatternColor(1797588777) .SetBackgroundColor(1797588777) .SetSigilColor(2045456409) .SetSigilPlacement(1015980604) .SetPattern(4173846786) .SetUseSigilVariant(true) .Build(); }
private static void RemoveFriendshipFromDB(Account remover, Account removee) { try { var query = string.Format("DELETE FROM friends WHERE accountId = {0} AND friendId = {1}; DELETE FROM friends WHERE accountId = {1} AND friendId = {0};", remover.BnetEntityId.Low, removee.BnetEntityId.Low); var cmd = new SQLiteCommand(query, DBManager.Connection); cmd.ExecuteNonQuery(); } catch (Exception e) { Logger.ErrorException(e, "FriendManager.RemoveFriendshipFromDB()"); } }
public SRP6a(Account account) { this.Account = account; this.IdentitySalt = H.ComputeHash(Encoding.ASCII.GetBytes(this.Account.Email)).ToHexString(); // Identity salt that's hashed using account email. // calculate server's public ephemeral value. this.b = GetRandomBytes(128).ToBigInteger(); // server's secret ephemeral value. var gModb = BigInteger.ModPow(g, b, N); // pow(g, b, N) var k = H.ComputeHash(new byte[0].Concat(N.ToArray()).Concat(g.ToArray()).ToArray()).ToBigInteger(); // Multiplier parameter (k = H(N, g) in SRP-6a this.B = BigInteger.Remainder((this.Account.PasswordVerifier.ToBigInteger() * k) + gModb, N); // B = (k * v + pow(g, b, N)) % N // cook the logon challenge message this.LogonChallenge = new byte[0] .Concat(new byte[] { 0 }) // command = 0 .Concat(this.IdentitySalt.ToByteArray()) // identity-salt - generated by hashing account email. .Concat(this.Account.Salt) // account-salt - generated on account creation. .Concat(B.ToArray()) // server's public ephemeral value (B) .Concat(SecondChallenge.ToArray()) // second challenge .ToArray(); }
private void SetFields(string name, ToonClass @class, ToonFlags flags, byte level, Account owner) { this.ToonHandle = new ToonHandleHelper(this.PersistentID); this.D3EntityID = this.ToonHandle.ToD3EntityID(); this.BnetEntityID = this.ToonHandle.ToBnetEntityID(); this.Name = name; this.Class = @class; this.Flags = flags; this.Level = level; this.Owner = owner; var visualItems = new[] { // Head D3.Hero.VisualItem.CreateBuilder() .SetGbid(0) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Chest D3.Hero.VisualItem.CreateBuilder() .SetGbid(0) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Feet D3.Hero.VisualItem.CreateBuilder() .SetGbid(0) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Hands D3.Hero.VisualItem.CreateBuilder() .SetGbid(0) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Weapon (1) D3.Hero.VisualItem.CreateBuilder() .SetGbid(0) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Weapon (2) D3.Hero.VisualItem.CreateBuilder() .SetGbid(0) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Shoulders D3.Hero.VisualItem.CreateBuilder() .SetGbid(0) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), // Legs D3.Hero.VisualItem.CreateBuilder() .SetGbid(0) .SetDyeType(0) .SetItemEffectType(0) .SetEffectLevel(0) .Build(), }; this.Equipment = D3.Hero.VisualEquipment.CreateBuilder().AddRangeVisualItem(visualItems).Build(); this.Digest = D3.Hero.Digest.CreateBuilder().SetVersion(891) .SetHeroId(this.D3EntityID) .SetHeroName(this.Name) .SetGbidClass((int)this.ClassID) .SetPlayerFlags((uint)this.Flags) .SetLevel(this.Level) .SetVisualEquipment(this.Equipment) .SetLastPlayedAct(0) .SetHighestUnlockedAct(0) .SetLastPlayedDifficulty(0) .SetHighestUnlockedDifficulty(0) .SetLastPlayedQuest(-1) .SetLastPlayedQuestStep(-1) .SetTimePlayed(0) .Build(); }
public static void UpdateUserLevel(this Account account, Account.UserLevels userLevel) { account.UserLevel = userLevel; try { SaveToDB(account); } catch (Exception e) { Logger.ErrorException(e, "UpdateUserLevel()"); } }