public void RunExpiration() { long num = 0L; checked { switch (ExpirationType) { case ExpirationType.TIMING: num = unchecked ((long)ExpirationTime) - (long)Math.Round(DateAndTime.Now.Subtract(LastLoginTime).TotalMilliseconds / 1000.0); break; case ExpirationType.PERIOD: num = (long)Math.Round(ExpirationPeriod.Subtract(DateAndTime.Now).TotalMilliseconds / 1000.0); break; } if (num <= 0) { ExpirationService.GetInstance().Remove(_accountId); GameService.KickAccountFromGameServer(_accountId); return; } switch (num) { case 1L: case 2L: case 3L: case 4L: case 5L: case 15L: case 30L: case 60L: case 300L: case 600L: case 900L: case 1800L: GameService.SendExpiration(_accountId, num); break; } } }
internal static AionAuthResponse Login(string userName, string password, AionConnection client) { Account account = LoadAccount(userName); if (Information.IsNothing(account) & LoginConfig.ACCOUNT_AUTO_CREATION) { account = CreateAccount(userName, password); } if (Information.IsNothing(account)) { return(AionAuthResponse.INVALID_PASSWORD); } if (!account.Password.Equals(RuntimeHelpers.GetObjectValue(EncodePassword(password)))) { if (LoginConfig.PASSWORD_CHECK_ENABLE) { BruteForceProtector.AddFailedLogin(userName, client.IP); } return(AionAuthResponse.INVALID_PASSWORD); } if (account.Activated != 1) { return(AionAuthResponse.BAN_ACCOUNT); } string text = client.IP.Split(':')[0]; if (BannedIpController.IsBannedIp(text)) { return(AionAuthResponse.BAN_IP); } if (!GameService.HahServerOnline()) { return(AionAuthResponse.NOT_SERVER_ONLINE); } object @lock = _lock; ObjectFlowControl.CheckForSyncLockOnValueType(@lock); bool lockTaken = false; try { Monitor.Enter(@lock, ref lockTaken); if (GameService.ContainsAccount(account.Id)) { GameService.KickAccountFromGameServer(account.Id); return(AionAuthResponse.ALREADY_LOGGED_IN); } if (accountOnLS.ContainsKey(account.Id)) { accountOnLS[account.Id].Disconnect(); accountOnLS.Remove(account.Id); return(AionAuthResponse.ALREADY_LOGGED_IN); } client.Account = account; accountOnLS.Add(account.Id, client); } finally { if (lockTaken) { Monitor.Exit(@lock); } } account.LastIp = text; account.AccountTime.LastLoginTime = DateAndTime.Now; AccountTimeController.UpDataLoginTime(account); return(AionAuthResponse.AUTHED); }