Exemple #1
0
        private PublishedServerInfoMap LoadPublishedServerInfos()
        {
            string serverFolder = Path.GetDirectoryName(_userServersFilepath);

            CleanupObsoleteFiles(serverFolder); // TODO - get rid of this later

            var    publishedServerInfos = new PublishedServerInfoMap();
            string filepath             = _localPublishedPhatServersInfoFilepath;

            if (File.Exists(filepath))
            {
                using (XmlTextReader reader = new XmlTextReader(filepath))
                {
                    var xmlDoc2 = new XmlDocument();
                    xmlDoc2.Load(reader);
                    foreach (XmlNode node in xmlDoc2.SelectNodes("//ServerItem"))
                    {
                        var info = new PublishedServerLocalInfo();
                        info.Name = GetSubvalue(node, "name");
                        Guid guid = StringToGuid(GetSubvalue(node, "id"));
                        if (guid == Guid.Empty)
                        {
                            guid = Guid.NewGuid();
                        }
                        info.Id = guid;
                        string visibilitystr = GetOptionalSubvalue(node, "visibility", "Visible"); // optional for upgrade by developers
                        info.VisibilitySetting          = ParseVisibility(visibilitystr, ServerModel.VisibilityEnum.Visible);
                        info.Alias                      = GetOptionalSubvalue(node, "alias", null);
                        publishedServerInfos[info.Name] = info;
                    }
                }
            }
            return(publishedServerInfos);
        }
Exemple #2
0
        private IEnumerable <ServerData> ReadPublishedGDLServerList(PublishedServerInfoMap publishedInfos)
        {
            var    list     = new List <ServerData>();
            string filepath = _publishedGDLServersFilepath;

            if (File.Exists(filepath))
            {
                try
                {
                    using (XmlTextReader reader = new XmlTextReader(filepath))
                    {
                        var xmlDoc2 = new XmlDocument();
                        xmlDoc2.Load(reader);
                        foreach (XmlNode node in xmlDoc2.SelectNodes("//ServerItem"))
                        {
                            ServerData si = new ServerData();

                            si.ServerName = GetSubvalue(node, "name");
                            PublishedServerLocalInfo info = null;
                            if (!publishedInfos.ContainsKey(si.ServerName))
                            {
                                info      = new PublishedServerLocalInfo();
                                info.Name = si.ServerName;
                                info.Id   = Guid.NewGuid();
                                info.VisibilitySetting        = ServerModel.VisibilityEnum.Visible;
                                info.Alias                    = null;
                                publishedInfos[si.ServerName] = info;
                            }
                            else
                            {
                                info = publishedInfos[si.ServerName];
                            }
                            si.ServerId         = info.Id;
                            si.ServerAlias      = info.Alias;
                            si.ServerDesc       = GetSubvalue(node, "description");
                            si.DiscordUrl       = GetSubvalue(node, "DiscordUrl");
                            si.LoginEnabled     = StringToBool(GetOptionalSubvalue(node, "enable_login", "true"));
                            si.ConnectionString = GetSubvalue(node, "connect_string");
                            si.EMU          = ServerModel.ServerEmuEnum.GDL;
                            si.ServerSource = ServerModel.ServerSourceEnum.Published;
                            string rodatstr = GetSubvalue(node, "default_rodat");
                            si.RodatSetting      = ParseRodat(rodatstr, defval: ServerModel.RodatEnum.Off);
                            si.VisibilitySetting = info.VisibilitySetting;

                            list.Add(si);
                        }
                    }
                }
                catch (Exception exc)
                {
                    Logger.WriteInfo("Unable to parse Published GDL Server List: " + exc.ToString());
                }
            }
            return(list);
        }