internal static void CheckAuth(SessionKey key, GameConnection client) { AionConnection value = null; if (Conversions.ToBoolean(accountOnLS.TryGetValue(key.AccountId, out value) && Conversions.ToBoolean(value.SessionKey.CheckSessionKey(key)))) { accountOnLS.Remove(key.AccountId); GameInfo gameInfo = GameService.GameServerIndoForId(client.GameServerId); Account account = value.Account; gameInfo.AddAccount(account); account.LastServer = checked ((byte)gameInfo.ServerId); LunaInfo lunaInfo = DAOManager.LunaDAO.LoadLuna(key.AccountId); if (Information.IsNothing(lunaInfo)) { DateTime time = new DateTime(DateAndTime.Now.Year, DateAndTime.Now.Month, DateAndTime.Now.Day, 9, 0, 0); lunaInfo = new LunaInfo(key.AccountId, 0L, 0, 0, 0, time); DAOManager.LunaDAO.Store(lunaInfo); } account.LunaInfo = lunaInfo; client.SendPacket(new SM_GS_ACCOUNT_AUTH_RESPONSE(key.AccountId, ok: true, account)); DAOManager.AccountDAO.UpdateLastIpAndServer(account); if (ExpirationConfig.EXPIRATION_ENABLE) { ExpirationService.GetInstance().Add(account); } } else { client.SendPacket(new SM_GS_ACCOUNT_AUTH_RESPONSE(key.AccountId, ok: false, null)); } }
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; } } }
public static ExpirationService GetInstance() { object @lock = _lock; ObjectFlowControl.CheckForSyncLockOnValueType(@lock); bool lockTaken = false; try { Monitor.Enter(@lock, ref lockTaken); if (Information.IsNothing(instance)) { instance = new ExpirationService(); } return(instance); } finally { if (lockTaken) { Monitor.Exit(@lock); } } }