private async Task <StatusModel> GetServerStatusAsync(Configuration.Server server) { if (_cache.TryGetValue(server.Id, out StatusModel model)) { return(model); } model = new StatusModel() { Name = server.Name, Address = $"byond://{server.Host}:{server.Port}" }; var response = await ByondTopic.SendTopicCommandAsync(server.Host, server.Port.ToString(), StatusCommand); if (response == null || string.IsNullOrWhiteSpace(response)) { model.Online = false; } else { var parsedResponse = QueryHelpers.ParseQuery(response); model.Players = int.Parse(parsedResponse["players"]); model.Admins = int.Parse(parsedResponse["admins"]); model.RoundDuration = parsedResponse["roundduration"]; model.Online = true; } _cache.Set(server.Id, model, TimeSpan.FromSeconds(5)); return(model); }
void DrawAddServer() { if (GUILayout.Button(addServerText, buttonStyle)) { var server = new Configuration.Server(); config.Configuration.Servers.Add(server); config.Save(); core.Add(server.Create()); } }
public Configuration.Server ToServer() { var server = new Configuration.Server() { Url = this.Url, Name = this.Name, Path = this.Path }; int.TryParse(this.Port, out int port); server.Port = port; return(server); }
public EditServer(MainWindow mainWindow, Configuration.Server server) { window = mainWindow; id = server.Id; name = server.Name; protocol = server.Protocol; settings = new Dictionary <string, string>(server.Settings); // Get list of available addresses for drop down var interfaceAddresses = NetworkInformation.LocalIPAddresses.Select(x => x.ToString()).ToList(); interfaceAddresses.Remove(IPAddress.Loopback.ToString()); interfaceAddresses.Remove(IPAddress.Any.ToString()); availableAddresses = new List <string> (new [] { localhostText, anyText }); availableAddresses.AddRange(interfaceAddresses); availableAddresses.Add(manualText); }