Beispiel #1
0
        public static void Init()
        {
            Configurations = new Config();
            if (!File.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\AppData\\Config.xml"))
            {
                Configurations.Compiler                 = new List <Compiler>();
                Configurations.EnvironmentValues        = string.Empty;
                Configurations.AllowRequestDataSet      = true;
                Configurations.MutiThreading            = 0;
                Configurations.IpAddress                = "::";
                Configurations.AllowCompetitorMessaging = true;
                Configurations.RegisterMode             = 0;
                File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + "\\AppData\\Config.xml",
                                  SerializeToXmlString(Configurations), Encoding.UTF8);
            }
            var xmlDeserializer = new XmlSerializer(Configurations.GetType());
            var rdr             =
                new StringReader(
                    File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "\\AppData\\Config.xml", Encoding.UTF8));

            Configurations = (Config)xmlDeserializer.Deserialize(rdr);
            var pathlist = Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Process);

            Environment.SetEnvironmentVariable("PATH", Configurations.EnvironmentValues + ";" + pathlist,
                                               EnvironmentVariableTarget.Process);
            if (Configurations.Compiler == null)
            {
                Configurations.Compiler = new List <Compiler>();
            }
        }
        private void LoadConfig()
        {
            var jsonData      = API.LoadResourceFile(API.GetCurrentResourceName(), "config.json");
            var defaultConfig = new Config();

            if (jsonData == null)
            {
                _config = defaultConfig;
                SaveConfig();
                return;
            }

            _config = JsonConvert.DeserializeObject <Config>(jsonData);
            var save = false;

            foreach (var field in _config.GetType().GetFields().Where(field => field.GetValue(_config) == null))
            {
                field.SetValue(_config, field.GetValue(defaultConfig));
                save = true;
            }

            if (!save)
            {
                return;
            }
            SaveConfig();
        }
        /// <summary>
        /// Starts the Login Server listeners, and begins accepting new connections
        /// </summary>
        public static void StartServers()
        {
            // Make sure we arent already running!
            if (isRunning)
            {
                return;
            }

            try
            {
                // Start the DB Connection
                Console.Write("Connecting to Mysql... ");
                using (GamespyDatabase Database = new GamespyDatabase())
                {
                    Console.Write("Success!" + Environment.NewLine);

                    // Reset game sessions
                    if (Config.GetType <bool>("Settings", "ResetGameSessionsOnStartup"))
                    {
                        Console.Write("Resetting all game sessions... ");
                        Database.Execute("UPDATE web_users SET game_session=0 WHERE id > 0");
                        Console.Write("Success!" + Environment.NewLine);
                    }
                }

                // Create our end point to bind to
                int       port    = Config.GetType <int>("Settings", "LoginServerPort");
                IPAddress address = IPAddress.Parse(Config.GetValue("Settings", "ServerBindIp"));

                // Start the Client Manager Server
                Console.Write("<GPCM> Binding to TCP port {0}... ", port);
                CmServer = new GpcmServer(new IPEndPoint(address, port));
                Console.Write("Success!" + Environment.NewLine);

                // Start Search Provider Server
                Console.Write("<GPSP> Binding to TCP port {0}... ", ++port);
                SpServer = new GpspServer(new IPEndPoint(address, port));
                Console.Write("Success!" + Environment.NewLine);
            }
            catch
            {
                Console.Write("Failed!" + Environment.NewLine);
                throw;
            }

            // Let the client know we are ready for connections
            isRunning = true;
        }