Пример #1
0
        public void Start(Server server)
        {
            lock (_proccesses)
            {
                if (_proccesses.ContainsKey(server.Id))
                {
                    try
                    {
                        _proccesses[server.Id].Kill();
                    }
                    catch
                    {
                    }

                    _proccesses.Remove(server.Id);
                }

                var command = ServerUtils.BuildCommand(server);

                var process = new Process();
                process.StartInfo.FileName = command.Item1;
                process.StartInfo.Arguments = command.Item2;
                process.EnableRaisingEvents = true;
                process.Exited += new EventHandler((sender, e) =>
                {
                    log.InfoFormat("Unexpectedly closing server #{0}.", server.Id);
                    _context.Servers.Single(p => p.Id == server.Id).IsActivated = false;
                    _context.SubmitChanges();
                });

                _proccesses.Add(server.Id, process);
                process.Start();
            }
        }
Пример #2
0
        public void Restart(Server server)
        {
            Console.WriteLine("Restarts {0}", server.Id);

            lock (_proccesses)
            {
                if (_proccesses.ContainsKey(server.Id))
                {
                    _proccesses[server.Id].Kill();
                    _proccesses[server.Id].Start();
                }
                else
                {
                    Start(server);
                }
            }
        }
Пример #3
0
        public static Tuple<string, string> BuildCommand(Server server)
        {
            var executableName = string.Empty;
            var arguments = new Dictionary<string, string>();

            switch (server.ConfigurationType)
            {
                case "Valve":
                    var valveServer = (ValveServer)server;

                    switch ((Engines)server.Game.Engine)
                    {
                        case Engines.Source:
                            executableName = Path.Combine(GetServerDirectory(server.Game.Abbreviation, server.Id), "orangebox\\srcds.exe");

                            arguments.Add("+ip", server.IP);
                            arguments.Add("-port", server.Port.ToString());
                            arguments.Add("-game", server.Game.DirectoryName);
                            arguments.Add("-maxplayers", server.MaxPlayers.ToString());
                            arguments.Add("-console", null);
                            arguments.Add("+fps_max", valveServer.MaximumFPS.GetValueOrDefault(300).ToString());
                            arguments.Add("+map", valveServer.Map);
                            arguments.Add("+rcon_password", valveServer.RconPassword);
                            if (valveServer.AutoUpdate.GetValueOrDefault(false))
                                arguments.Add("-autoupdate", null);

                            break;

                        case Engines.GoldSrc:
                            executableName = "hlds.exe";

                            arguments.Add("-console", null);
                            arguments.Add("-game", server.Game.DirectoryName);
                            arguments.Add("+map", valveServer.Map);
                            arguments.Add("-port", server.Port.ToString());
                            arguments.Add("+maxplayers", server.MaxPlayers.ToString());
                            arguments.Add("+sv_lan", "0");

                            if (valveServer.AutoUpdate.GetValueOrDefault(false))
                                arguments.Add("-autoupdate", null);

                            break;
                    }

                    break;

                case "Samp":

                    break;

                case "Minecraft":
                    executableName = "java.exe";
                    arguments.Add("-Xincgc", null);
                    arguments.Add("-Xmx1G", null);
                    arguments.Add("-jar", Path.Combine(GetServerDirectory(server.Game.Abbreviation, server.Id), "craftbukkit-0.0.1-SNAPSHOT.jar"));

                    break;
            }

            var sb = new StringBuilder();

            foreach (var argument in arguments)
            {
                sb.Append(argument.Key);
                sb.Append(' ');

                if (argument.Value != null)
                {
                    sb.Append(argument.Value);
                    sb.Append(' ');
                }
            }

            return new Tuple<string, string>(executableName, sb.ToString());
        }
Пример #4
0
        public void Stop(Server server)
        {
            lock (_proccesses)
            {
                if (!_proccesses.ContainsKey(server.Id))
                    return;

                try
                {
                    _proccesses[server.Id].Kill();
                }
                catch
                {

                }

                _proccesses.Remove(server.Id);
            }
        }
Пример #5
0
        public void Update(Server server)
        {
            switch (server.ConfigurationType)
            {
                case "Valve":
                    for (int i = 0; i <= 1; i++)
                    {
                        var process = Process.Start(
                            Path.Combine(ServerUtils.GetServerDirectory(server.Game.Abbreviation, server.Id), "hldsupdatetool.exe"),
                            string.Format("-command update -game {0} -dir ."));

                        process.WaitForExit();
                    }

                    break;

                case "Minecraft":
                    new System.Net.WebClient().DownloadFile("http://ci.bukkit.org/job/dev-CraftBukkit/promotion/latest/Recommended/artifact/target/craftbukkit-0.0.1-SNAPSHOT.jar",
                       Path.Combine(ServerUtils.GetServerDirectory(server.Game.Abbreviation, server.Id), "craftbukkit-0.0.1-SNAPSHOT.jar"));

                    break;
            }
        }
Пример #6
0
		private void detach_Servers(Server entity)
		{
			this.SendPropertyChanging();
			entity.Game = null;
		}
Пример #7
0
		private void attach_Servers(Server entity)
		{
			this.SendPropertyChanging();
			entity.Game = this;
		}
Пример #8
0
 partial void DeleteServer(Server instance);
Пример #9
0
 partial void UpdateServer(Server instance);
Пример #10
0
 partial void InsertServer(Server instance);