public void ServerLoop()
        {
            // Aceita a conexão do servidor de login.
            Login.AcceptClient();
            // Recebe os dados.
            Login.ReceiveData();
            // Verifica o estado da conexão enviando um ping.
            Login.SendPing();

            // Aceita novas conexões.
            Server.AcceptClient();
            // Processa os dados das conexões.
            Server.ReceiveData();
            // Verifica o estado da conexão enviando um ping.
            Server.SendPing();
            // Verifica o tempo limite de cada conexão.
            Server.CheckConnectionTimeOut();

            ProcessMaps();

            // Verifica por exclusões.
            DeleteRequest.CheckForDeletedCharacters();

            IpFiltering.RemoveExpiredIpAddress();
            IpBlockList.RemoveExpiredIpAddress();

            CountUps();
        }
Beispiel #2
0
        public void InitializeScript()
        {
            using (var lua = new Lua()) {
                lua.RegisterFunction("AddIpAddress", null, typeof(IpBlockList).GetMethod("AddIpAddress"));

                IpBlockList.Clear();
                lua.DoFile("BlockList.lua");
            }
        }
Beispiel #3
0
        public void InitServer()
        {
            Configuration.Open();
            Configuration.GetGeneralConfig();
            Configuration.GetDatabaseConfig();
            Configuration.Close();

            Configuration.ShowConfigInLog();
            Configuration.CheckDatabaseConnection();

            if (GeoIpBlock.Enabled)
            {
                WriteLog(LogType.System, "Loading GeoIp data country", LogColor.Black);
                GeoIpBlock.LoadData();
            }

            IpBlockList.Initialize();

            IpFiltering = new IpFiltering()
            {
                CheckAccessTime  = Configuration.CheckAccessTime,
                IpLifetime       = Configuration.IpLifetime,
                IpMaxAccessCount = Configuration.IpMaxAccessCount,
                IpMaxAttempt     = Configuration.IpMaxAttempt
            };

            WriteLog(LogType.System, "Initializing scripts", LogColor.Blue);

            var lua = new LuaScript();

            lua.InitializeScript();

            OpCode.Initialize();

            TcpTransfer = new TcpTransfer()
            {
                GameIpAddress = Configuration.GameServerIp,
                GamePort      = Configuration.GameServerPort
            };

            TcpTransfer.InitClient();

            WriteLog(LogType.System, "Trying to connect to Game Server", LogColor.Black);

            Server = new TcpServer()
            {
                IpFiltering = IpFiltering,
                Port        = Configuration.Port
            };

            Server.InitServer();

            // Delegate
            SendGameServerPacket = SendGameServerData;

            WriteLog(LogType.System, "Login Server started", LogColor.Green);
        }
Beispiel #4
0
        public void ReloadBlockList()
        {
            using (var lua = new Lua()) {
                IpBlockList.Clear();

                lua.LoadCLRPackage();
                lua.RegisterFunction("AddIpAddress", null, typeof(IpBlockList).GetMethod("AddIpAddress"));

                lua.DoFile("BlockList.lua");
            }
        }
        public void StopServer()
        {
            Server.Stop();
            Login.Stop();

            DataManagement.ClearDatabases();
            Authentication.Clear();

            IpFiltering.Clear();
            IpBlockList.Clear();

            CloseLog();
        }
Beispiel #6
0
        public void ServerLoop()
        {
            TcpTransfer.Connect();
            TcpTransfer.SendPing();

            Server.AcceptClient();
            Server.ProcessClients();

            IpBlockList.RemoveExpiredIpAddress();
            IpFiltering.RemoveExpiredIpAddress();

            CountUps();
        }
Beispiel #7
0
        public void StopServer()
        {
            Server.Stop();

            TcpTransfer.Disconnect();
            TcpTransfer = null;

            IpFiltering.Clear();

            Checksum.Clear();
            GeoIpBlock.Clear();
            IpBlockList.Clear();

            CloseLog();
        }
        public void InitializeScript()
        {
            using (var lua = new Lua()) {
                lua.LoadCLRPackage();
                lua.RegisterFunction("AddChecksum", null, typeof(Checksum).GetMethod("Add"));
                lua.RegisterFunction("AddCountry", null, typeof(GeoIpBlock).GetMethod("AddCountry"));
                lua.RegisterFunction("AddIpAddress", null, typeof(IpBlockList).GetMethod("AddIpAddress"));

                Checksum.Clear();
                lua.DoFile("Checksum.lua");

                GeoIpBlock.Clear();
                lua.DoFile("GeoIP.lua");

                IpBlockList.Clear();
                lua.DoFile("BlockList.lua");
            }
        }
        public void InitServer()
        {
            Configuration.Open();
            Configuration.GetGeneralConfig();
            Configuration.GetDatabaseConfig();
            Configuration.Close();

            Configuration.ShowConfigInLog();
            Configuration.CheckDatabaseConnection();

            // Cria a instância e registra o delegate.
            DeleteRequest = new CharacterDeleteRequest();
            DeleteRequest.DeleteCharacter += DeleteCharacter;

            IpBlockList.Initialize();

            IpFiltering = new IpFiltering()
            {
                CheckAccessTime  = Configuration.CheckAccessTime,
                IpLifetime       = Configuration.IpLifetime,
                IpMaxAccessCount = Configuration.IpMaxAccessCount,
                IpMaxAttempt     = Configuration.IpMaxAttempt
            };

            WriteLog(LogType.System, "Initializing scripts", LogColor.Blue);
            var lua = new LuaScript();

            lua.InitializeScript();

            WriteLog(LogType.System, "Initializing prohibited names", LogColor.Blue);
            lua.LoadProhibitedNames();

            WriteLog(LogType.System, "Initializing character config", LogColor.Blue);
            lua.LoadCharacterConfiguration();
            Configuration.ShowCharacterConfigInLog();

            WriteLog(LogType.System, "Initializing game config", LogColor.Blue);
            lua.LoadGameConfiguration();

            WriteLog(LogType.System, "Initializing classes", LogColor.Blue);
            lua.LoadClasses();

            DataManagement.InitializeData();

            WriteLog(LogType.System, "Initializing map instances", LogColor.Blue);
            InitializeMaps();

            OpCode.Initialize();

            Login = new TcpLogin()
            {
                Port = Configuration.LoginPort
            };

            Login.InitServer();

            WriteLog(LogType.System, "Waiting for Login Server conenction", LogColor.Black);

            Server = new TcpServer()
            {
                Port        = Configuration.Port,
                IpFiltering = IpFiltering
            };

            Server.InitServer();
            WriteLog(LogType.System, "Game Server started", LogColor.Green);

            Initialized = true;
        }