예제 #1
0
        static bool StartLoginServer()
        {
            Console.Write("Loading DB...");
            try
            {
                DataServer.Database.LoadDatabaseTables();
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: " + e.Message);
                return(false);
            }
            Console.WriteLine("Done");

            LoginServerConfig config = new LoginServerConfig(m_configDir + "loginserver.config");

            if (config.Document["LoginServerConfig"] == null)
            {
                config.SetDefaultValues();
            }

            XmlNodeList list = config.Document["LoginServerConfig"].SelectNodes("descendant::RealmList");

            Console.WriteLine("Parsing realmlists...");
            if (ParseRealmLists(list) == false)
            {
                return(false);
            }

            list = config.Document["LoginServerConfig"].SelectNodes("descendant::WorldServer");
            Console.WriteLine("Parsing worldservers...");
            if (ParseWorldServers(list) == false)
            {
                return(false);
            }

            list = config.Document["LoginServerConfig"].SelectNodes("descendant::ScriptReference");
            foreach (XmlNode node in list)
            {
                LoginServer.AddScriptReference(node.InnerText);
            }

            LoginServer.ServerName = config.ServerName;
            if (!LoginServer.LoadScripts(config.Scripts))
            {
                return(false);
            }
            IPAddress address = GetAddress(config.Address);

            if (address == null)
            {
                return(false);
            }
            IPEndPoint iep = new IPEndPoint(address, config.Port);

            if (!LoginServer.Start(iep, config.RedirectPort))
            {
                Console.WriteLine("Failed to start Loginserver.");
                return(false);
            }
            Console.WriteLine("Loginserver started on " + LoginServer.EndPoint);
            Console.WriteLine("Redirectserver started on " + RedirectServer.LocalEndPoint);
            if (localRealmListServerStarted)
            {
                Console.WriteLine("Realmlist server started on " + RealmListServer.Instance.LocalEndPoint);
            }
            return(true);
        }
예제 #2
0
        static bool StartLoginServer()
        {
            Console.WriteLine("Welcome to WoWDaemon.");
            Console.WriteLine("Loading server...");
            try
            {
                DataServer.Database.LoadDatabaseTables();
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: " + e.Message);
                return(false);
            }
            Console.WriteLine("Loaded " + DataServer.Database.GetObjectCount(typeof(DBAccount)) + " accounts");
            Console.WriteLine("Loaded " + DataServer.Database.GetObjectCount(typeof(DBCharacter)) + " characters");
            Console.WriteLine("Loaded " + DataServer.Database.GetObjectCount(typeof(DBItemTemplate)) + " items");
            Console.WriteLine("Loaded " + DataServer.Database.GetObjectCount(typeof(DBSpawn)) + " spawns");
            Console.WriteLine("Loaded " + DataServer.Database.GetObjectCount(typeof(DBGuild)) + " guilds");
            Console.WriteLine("Loaded " + DataServer.Database.GetObjectCount(typeof(DBTabard)) + " tabards");
            Console.WriteLine("Loaded " + DataServer.Database.GetObjectCount(typeof(DBWorldMap)) + " World Maps");

            Console.WriteLine("Done");

            LoginServerConfig config = new LoginServerConfig(m_configDir + "loginserver.config");

            if (config.Document["LoginServerConfig"] == null)
            {
                config.SetDefaultValues();
            }

            XmlNodeList list = config.Document["LoginServerConfig"].SelectNodes("descendant::RealmList");

            Console.WriteLine("Parsing realmlists...");
            if (ParseRealmLists(list) == false)
            {
                return(false);
            }

            list = config.Document["LoginServerConfig"].SelectNodes("descendant::WorldServer");
            Console.WriteLine("Parsing worldservers...");
            if (ParseWorldServers(list) == false)
            {
                return(false);
            }

            list = config.Document["LoginServerConfig"].SelectNodes("descendant::ScriptReference");
            foreach (XmlNode node in list)
            {
                LoginServer.AddScriptReference(node.InnerText);
            }

            LoginServer.ServerName = config.ServerName;
            if (!LoginServer.LoadScripts(config.Scripts))
            {
                return(false);
            }
            IPAddress address = GetAddress(config.Address);

            if (address == null)
            {
                return(false);
            }
            IPEndPoint iep        = new IPEndPoint(address, config.Port);
            string     ExternalIP = GetAddress(config.ExternalHost).ToString();

            if (!LoginServer.Start(iep, config.RedirectPort, ExternalIP))
            {
                Console.WriteLine("Failed to start Loginserver.");
                return(false);
            }
            Console.WriteLine("Loginserver started on " + LoginServer.EndPoint);
            Console.WriteLine("Redirectserver started on " + RedirectServer.LocalEndPoint);
            if (localRealmListServerStarted)
            {
                Console.WriteLine("Realmlist server started on " + RealmListServer.Instance.LocalEndPoint);
            }
            return(true);
        }