Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 void DrawAddServer()
 {
     if (GUILayout.Button(addServerText, buttonStyle))
     {
         var server = new Configuration.Server();
         config.Configuration.Servers.Add(server);
         config.Save();
         core.Add(server.Create());
     }
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }