private string GetStorageObjectName(UnifiedPolicyStorageBase storage)
        {
            if (storage is PolicyStorage)
            {
                return(Strings.DisplayPolicyName(storage.Name));
            }
            if (storage is RuleStorage)
            {
                return(Strings.DisplayRuleName(storage.Name));
            }
            if (storage is BindingStorage)
            {
                return(Strings.DisplayBindingName(storage.Workload.ToString()));
            }
            if (!(storage is ScopeStorage))
            {
                return(string.Empty);
            }
            BindingMetadata bindingMetadata = BindingMetadata.FromStorage(((ScopeStorage)storage).Scope);

            if (bindingMetadata != null)
            {
                return(bindingMetadata.Name);
            }
            return(string.Empty);
        }
Example #2
0
        private static PolicyBindingConfig ToBindingScope(ScopeStorage storageScope)
        {
            PolicyBindingConfig policyBindingConfig = new PolicyBindingConfig();

            policyBindingConfig.Identity = (ExPolicyConfigProvider.IsFFOOnline ? storageScope.Guid : storageScope.MasterIdentity);
            policyBindingConfig.Name     = storageScope.Name;
            policyBindingConfig.Mode     = storageScope.Mode;
            policyBindingConfig.Scope    = BindingMetadata.FromStorage(storageScope.Scope);
            policyBindingConfig.Version  = PolicyVersion.Create(storageScope.PolicyVersion);
            policyBindingConfig.ResetChangeTracking();
            return(policyBindingConfig);
        }
Example #3
0
        internal static MultiValuedProperty <BindingMetadata> GetScopesFromStorage(BindingStorage bindingStorage)
        {
            ArgumentValidator.ThrowIfNull("bindingStorage", bindingStorage);
            MultiValuedProperty <BindingMetadata> multiValuedProperty = new MultiValuedProperty <BindingMetadata>();

            if (bindingStorage.AppliedScopes.Any <ScopeStorage>())
            {
                foreach (ScopeStorage scopeStorage in bindingStorage.AppliedScopes)
                {
                    if (scopeStorage.Mode == Mode.Enforce)
                    {
                        multiValuedProperty.TryAdd(BindingMetadata.FromStorage(scopeStorage.Scope));
                    }
                }
            }
            multiValuedProperty.ResetChangeTracking();
            return(multiValuedProperty);
        }
Example #4
0
        private BindingStorage GetBindingStorageForSubWorkload(IEnumerable <BindingStorage> bindingContainers, Workload subWorkload, Guid universalIdentity, bool createNewIfNotFound)
        {
            IEnumerable <BindingStorage> enumerable = from s in bindingContainers
                                                      where s.Workload == Workload.SharePoint
                                                      select s;
            BindingStorage bindingStorage3 = (from bindingStorage in enumerable
                                              where bindingStorage.Scopes.Any <string>()
                                              select bindingStorage).FirstOrDefault((BindingStorage bindingStorage) => BindingMetadata.FromStorage(bindingStorage.Scopes.First <string>()).Workload == subWorkload);

            if (bindingStorage3 != null)
            {
                return(bindingStorage3);
            }
            foreach (BindingStorage bindingStorage2 in enumerable)
            {
                if (!bindingStorage2.Scopes.Any <string>())
                {
                    bindingStorage3 = bindingStorage2;
                    return(bindingStorage3);
                }
            }
            if (createNewIfNotFound)
            {
                bindingStorage3 = Utils.CreateNewBindingStorage(base.OrganizationalUnitRoot, Workload.SharePoint, universalIdentity);
                this.StorageBindings.Add(bindingStorage3);
            }
            return(bindingStorage3);
        }
Example #5
0
 internal static void PopulateScopeStorages(BindingStorage bindingStorage, MultiValuedProperty <BindingMetadata> scopes)
 {
     ArgumentValidator.ThrowIfNull("bindingStorage", bindingStorage);
     ArgumentValidator.ThrowIfNull("scopes", scopes);
     if (scopes.Changed)
     {
         object[] removed = scopes.Removed;
         for (int i = 0; i < removed.Length; i++)
         {
             BindingMetadata removedScope = (BindingMetadata)removed[i];
             ScopeStorage    scopeStorage = bindingStorage.AppliedScopes.Find((ScopeStorage item) => string.Equals(BindingMetadata.FromStorage(item.Scope).ImmutableIdentity, removedScope.ImmutableIdentity, StringComparison.OrdinalIgnoreCase));
             scopeStorage.Mode          = Mode.PendingDeletion;
             scopeStorage.PolicyVersion = CombGuidGenerator.NewGuid();
         }
         object[] added = scopes.Added;
         for (int j = 0; j < added.Length; j++)
         {
             BindingMetadata addedScope    = (BindingMetadata)added[j];
             ScopeStorage    scopeStorage2 = bindingStorage.AppliedScopes.Find((ScopeStorage item) => string.Equals(BindingMetadata.FromStorage(item.Scope).ImmutableIdentity, addedScope.ImmutableIdentity, StringComparison.OrdinalIgnoreCase));
             if (scopeStorage2 == null)
             {
                 Guid objectGuid = Guid.NewGuid();
                 scopeStorage2 = new ScopeStorage();
                 scopeStorage2[ADObjectSchema.OrganizationalUnitRoot] = bindingStorage.OrganizationalUnitRoot;
                 scopeStorage2.Name = objectGuid.ToString();
                 scopeStorage2.SetId(new ADObjectId(PolicyStorage.PoliciesContainer.GetChildId(scopeStorage2.Name).DistinguishedName, objectGuid));
                 bindingStorage.AppliedScopes.Add(scopeStorage2);
             }
             scopeStorage2.Mode          = Mode.Enforce;
             scopeStorage2.Scope         = BindingMetadata.ToStorage(addedScope);
             scopeStorage2.PolicyVersion = CombGuidGenerator.NewGuid();
         }
         bindingStorage.PolicyVersion = CombGuidGenerator.NewGuid();
         scopes.ResetChangeTracking();
     }
 }