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); }
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); }