public void SaveClients() { try { ProfileLinkSettings settings = new ProfileLinkSettings(); foreach (var item in _clientList) { var client = (ProfileLink)item.AdditionalProperties[Consts.KEY_CLIENT]; if (client.DefaultUserProfile == Guid.Empty.ToString()) { client.DefaultUserProfile = null; } settings.Links.Add(client); } IServerSettingsClient serverSettings = ServiceRegistration.Get <IServerSettingsClient>(); serverSettings.Save(settings); } catch (NotConnectedException) { DisconnectedError(); } catch (Exception e) { ServiceRegistration.Get <ILogger>().Error("ClientConfigModel: Problems saving clients", e); } }
public static void SaveProfileLinks() { try { ISettingsManager settingsManager = ServiceRegistration.Get <ISettingsManager>(); ProfileLinkSettings profileLinks = settingsManager.Load <ProfileLinkSettings>(); foreach (var pair in ProfileLinks) { ProfileLink link = profileLinks.Links.FirstOrDefault(l => l.ClientName == pair.Key.ToString()); if (link == null && pair.Value != null) { link = new ProfileLink { ClientName = pair.Key.ToString(), ClientId = pair.Value.ClientId.ToString(), Profile = pair.Value.AutoProfile ? AUTO_PROFILE : pair.Value.Profile.ID }; profileLinks.Links.Add(link); } else if (link == null) { link = new ProfileLink { ClientName = pair.Key.ToString(), ClientId = pair.Value.ClientId.ToString(), Profile = AUTO_PROFILE }; profileLinks.Links.Add(link); } else if (pair.Value != null) { if (pair.Value.AutoProfile == true) { link.Profile = AUTO_PROFILE; } } } settingsManager.Save(profileLinks); } catch (Exception e) { Logger.Info("DlnaMediaServer: Exception saving profile links (Text: '{0}')", e.Message); } }
public static Task LoadProfileLinksAsync() { try { IUserProfileDataManagement userManager = ServiceRegistration.Get <IUserProfileDataManagement>(); ISettingsManager settingsManager = ServiceRegistration.Get <ISettingsManager>(); ProfileLinkSettings profileLinks = settingsManager.Load <ProfileLinkSettings>(); //Remove deleted profiles var deletedProfiles = ProfileLinks.Where(p => !profileLinks.Links.Any(lp => lp.ClientName == p.Key)).Select(p => p.Key).ToList(); foreach (var profile in deletedProfiles) { ProfileLinks.TryRemove(profile, out _); } //Add and update profiles foreach (ProfileLink link in profileLinks.Links) { EndPointSettings settings = null; if (!ProfileLinks.TryGetValue(link.ClientName, out settings)) { settings = new EndPointSettings(); ProfileLinks.TryAdd(link.ClientName, settings); } settings.AutoProfile = false; if (Profiles.ContainsKey(link.Profile) == true) { settings.Profile = Profiles[link.Profile]; } else if (link.Profile == NO_PROFILE) { settings.Profile = null; } else if (link.Profile == AUTO_PROFILE) { //settings.Profile = null; settings.AutoProfile = true; } else if (Profiles.ContainsKey(DLNA_DEFAULT_PROFILE_ID) == true) { settings.Profile = Profiles[DLNA_DEFAULT_PROFILE_ID]; } //settings.ClientId = await userManager.CreateProfileAsync($"DLNA ({ip.ToString()})", UserProfileType.ClientProfile, ""); settings.UserId = Guid.TryParse(link.DefaultUserProfile, out Guid g) ? g : (Guid?)null; if (settings.Profile == null) { Logger.Info("DlnaMediaServer: Client: {0}, using profile: {1}", link.ClientName, NO_PROFILE); } else { Logger.Info("DlnaMediaServer: Client: {0}, using profile: {1}", link.ClientName, settings.Profile.ID); } } } catch (Exception e) { Logger.Info("DlnaMediaServer: Exception reading profile links (Text: '{0}')", e.Message); } return(Task.CompletedTask); }
protected internal void UpdateClientLists_NoLock(bool create, string selectedClientName = null) { lock (_syncObj) { if (_updatingProperties) { return; } _updatingProperties = true; if (create) { _clientList = new ItemsList(); _profileList = new ItemsList(); } } try { IServerConnectionManager scm = ServiceRegistration.Get <IServerConnectionManager>(); if (scm == null || scm.ContentDirectory == null) { return; } SystemName homeServerSystem = scm.LastHomeServerSystem; IsHomeServerConnected = homeServerSystem != null; IServerSettingsClient serverSettings = ServiceRegistration.Get <IServerSettingsClient>(); ProfileLinkSettings settings = serverSettings.Load <ProfileLinkSettings>(); ListItem item = null; _clientList.Clear(); foreach (ProfileLink client in settings.Links) { item = new ListItem(); item.SetLabel(Consts.KEY_NAME, client.ClientName); item.AdditionalProperties[Consts.KEY_CLIENT] = client; item.SelectedProperty.Attach(OnClientItemSelectionChanged); lock (_syncObj) _clientList.Add(item); } _clientList.FireChange(); _profileList.Clear(); item = new ListItem(); item.SetLabel(Consts.KEY_NAME, LocalizationHelper.Translate(Consts.RES_AUTO)); item.AdditionalProperties[Consts.KEY_PROFILE] = "Auto"; lock (_syncObj) _profileList.Add(item); foreach (var profile in ProfileLinkSettings.Profiles) { item = new ListItem(); item.SetLabel(Consts.KEY_NAME, profile.Value); item.AdditionalProperties[Consts.KEY_PROFILE] = profile.Key; lock (_syncObj) _profileList.Add(item); } _profileList.FireChange(); } catch (NotConnectedException) { throw; } catch (Exception e) { ServiceRegistration.Get <ILogger>().Warn("ClientConfigModel: Problems updating clients", e); } finally { lock (_syncObj) _updatingProperties = false; } }