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(); } }
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); } } }
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()); }
public void Stop(Server server) { lock (_proccesses) { if (!_proccesses.ContainsKey(server.Id)) return; try { _proccesses[server.Id].Kill(); } catch { } _proccesses.Remove(server.Id); } }
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; } }
private void detach_Servers(Server entity) { this.SendPropertyChanging(); entity.Game = null; }
private void attach_Servers(Server entity) { this.SendPropertyChanging(); entity.Game = this; }
partial void DeleteServer(Server instance);
partial void UpdateServer(Server instance);
partial void InsertServer(Server instance);