Ejemplo n.º 1
0
        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));
            }
        }
Ejemplo n.º 2
0
        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;
                }
            }
        }
Ejemplo n.º 3
0
        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);
                }
            }
        }