Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
 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);
     }
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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;
            }
        }