Exemple #1
0
        public static ConfigurationObjectType GetConfigurationObjectType(UnifiedPolicyStorageBase policyStorageObject)
        {
            ArgumentValidator.ThrowIfNull("policyStorageObject", policyStorageObject);
            PolicyConfigConverterBase policyConfigConverterBase = PolicyConfigConverterTable.policyConverters.FirstOrDefault((PolicyConfigConverterBase entry) => policyStorageObject.GetType().Equals(entry.StorageType));

            if (policyConfigConverterBase == null)
            {
                throw new InvalidOperationException(string.Format("Type {0} has no converter.", policyStorageObject.GetType()));
            }
            return(policyConfigConverterBase.ConfigurationObjectType);
        }
Exemple #2
0
        public static PolicyConfigConverterBase GetConverterByType(Type type, bool throwException = true)
        {
            PolicyConfigConverterBase policyConfigConverterBase = PolicyConfigConverterTable.policyConverters.FirstOrDefault(delegate(PolicyConfigConverterBase entry)
            {
                if (typeof(UnifiedPolicyStorageBase).IsAssignableFrom(type))
                {
                    return(type.Equals(entry.StorageType));
                }
                return(typeof(PolicyConfigBase).IsAssignableFrom(type) && type.Equals(entry.PolicyConfigType));
            });

            if (policyConfigConverterBase == null && throwException)
            {
                throw new InvalidOperationException(string.Format("Type {0} has no converter.", type.FullName));
            }
            return(policyConfigConverterBase);
        }
Exemple #3
0
        private static void LoadAuditableOperationsInternal(OrganizationId orgId, Workload workload, out PolicyLoadStatus loadStatus, out PolicyAuditOperations operations)
        {
            loadStatus = PolicyLoadStatus.Unknown;
            operations = null;
            Guid guid;

            if (!AuditPolicyUtility.GetRuleGuidFromWorkload(workload, out guid))
            {
                return;
            }
            using (PolicyConfigProvider policyConfigProvider = PolicyConfigProviderManager <ExPolicyConfigProviderManager> .Instance.CreateForProcessingEngine(orgId))
            {
                if (policyConfigProvider != null)
                {
                    PolicyConfigConverterBase converterByType = PolicyConfigConverterTable.GetConverterByType(typeof(PolicyRuleConfig), true);
                    IConfigurable[]           array           = converterByType.GetFindStorageObjectsDelegate((ExPolicyConfigProvider)policyConfigProvider)(new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.Name, guid.ToString()), ((ExPolicyConfigProvider)policyConfigProvider).GetPolicyConfigContainer(null), true, null);
                    if (array != null)
                    {
                        if (!array.Any <IConfigurable>())
                        {
                            loadStatus = PolicyLoadStatus.NotExist;
                        }
                        else
                        {
                            loadStatus = PolicyLoadStatus.FailedToLoad;
                            AuditConfigurationRule auditConfigurationRule = new AuditConfigurationRule((RuleStorage)array[0]);
                            auditConfigurationRule.PopulateTaskProperties();
                            loadStatus = PolicyLoadStatus.Loaded;
                            operations = new PolicyAuditOperations
                            {
                                AuditOperationsDelegate = auditConfigurationRule.AuditOperation
                            };
                        }
                    }
                }
            }
        }
Exemple #4
0
 static PolicyConfigConverterTable()
 {
     PolicyConfigConverterBase[] array = new PolicyConfigConverterBase[4];
     array[0] = new PolicyConfigConverter <PolicyDefinitionConfig, PolicyStorage>(ExPolicyConfigProvider.IsFFOOnline ? ADObjectSchema.Id : UnifiedPolicyStorageBaseSchema.MasterIdentity, ConfigurationObjectType.Policy, delegate(PolicyStorage storage, PolicyDefinitionConfig policyConfig)
     {
         policyConfig.Mode     = storage.Mode;
         policyConfig.Scenario = storage.Scenario;
         policyConfig.DefaultPolicyRuleConfigId = storage.DefaultRuleId;
         policyConfig.Comment        = storage.Comments;
         policyConfig.Description    = storage.Description;
         policyConfig.Enabled        = storage.IsEnabled;
         policyConfig.CreatedBy      = storage.CreatedBy;
         policyConfig.LastModifiedBy = storage.LastModifiedBy;
     }, delegate(PolicyDefinitionConfig policyConfig, PolicyStorage storage)
     {
         if (policyConfig.Mode != storage.Mode)
         {
             storage.Mode = policyConfig.Mode;
         }
         storage.Scenario       = policyConfig.Scenario;
         storage.DefaultRuleId  = policyConfig.DefaultPolicyRuleConfigId;
         storage.Comments       = policyConfig.Comment;
         storage.Description    = policyConfig.Description;
         storage.IsEnabled      = policyConfig.Enabled;
         storage.CreatedBy      = policyConfig.CreatedBy;
         storage.LastModifiedBy = policyConfig.LastModifiedBy;
     });
     array[1] = new PolicyConfigConverter <PolicyRuleConfig, RuleStorage>(RuleStorageSchema.ParentPolicyId, ConfigurationObjectType.Rule, delegate(RuleStorage storage, PolicyRuleConfig policyConfig)
     {
         policyConfig.Mode = storage.Mode;
         policyConfig.PolicyDefinitionConfigId = storage.ParentPolicyId;
         policyConfig.Priority       = storage.Priority;
         policyConfig.RuleBlob       = storage.RuleBlob;
         policyConfig.Comment        = storage.Comments;
         policyConfig.Description    = storage.Description;
         policyConfig.Enabled        = storage.IsEnabled;
         policyConfig.CreatedBy      = storage.CreatedBy;
         policyConfig.LastModifiedBy = storage.LastModifiedBy;
         policyConfig.Scenario       = storage.Scenario;
     }, delegate(PolicyRuleConfig policyConfig, RuleStorage storage)
     {
         if (policyConfig.Mode != storage.Mode)
         {
             storage.Mode = policyConfig.Mode;
         }
         storage.ParentPolicyId = policyConfig.PolicyDefinitionConfigId;
         storage.Priority       = policyConfig.Priority;
         storage.RuleBlob       = policyConfig.RuleBlob;
         storage.Comments       = policyConfig.Comment;
         storage.Description    = policyConfig.Description;
         storage.IsEnabled      = policyConfig.Enabled;
         storage.CreatedBy      = policyConfig.CreatedBy;
         storage.LastModifiedBy = policyConfig.LastModifiedBy;
         storage.Scenario       = policyConfig.Scenario;
     });
     array[2] = new PolicyConfigConverter <PolicyBindingSetConfig, BindingStorage>(BindingStorageSchema.PolicyId, ConfigurationObjectType.Binding, delegate(BindingStorage storage, PolicyBindingSetConfig policyConfig)
     {
         policyConfig.PolicyDefinitionConfigId = storage.PolicyId;
         List <PolicyBindingConfig> list       = new List <PolicyBindingConfig>(storage.AppliedScopes.Count);
         foreach (ScopeStorage storageScope in storage.AppliedScopes)
         {
             PolicyBindingConfig policyBindingConfig      = PolicyConfigConverterTable.ToBindingScope(storageScope);
             policyBindingConfig.PolicyDefinitionConfigId = storage.PolicyId;
             list.Add(policyBindingConfig);
         }
         policyConfig.AppliedScopes = list;
     }, delegate(PolicyBindingSetConfig policyConfig, BindingStorage storage)
     {
         PolicyConfigConverterTable.< > c__DisplayClass12 CS$ < > 8__locals1 = new PolicyConfigConverterTable.< > c__DisplayClass12();
         CS$ < > 8__locals1.storage                   = storage;
         CS$ < > 8__locals1.storage.PolicyId          = policyConfig.PolicyDefinitionConfigId;
         IEnumerable <PolicyBindingConfig> enumerable = policyConfig.AppliedScopes ?? ((IEnumerable <PolicyBindingConfig>)Array <PolicyBindingConfig> .Empty);
         int index;
         for (index = CS$ < > 8__locals1.storage.AppliedScopes.Count - 1; index >= 0; index--)
         {
             if (!enumerable.Any((PolicyBindingConfig bindingScope) => PolicyConfigConverterTable.IsSameScope(bindingScope, CS$ < > 8__locals1.storage.AppliedScopes[index])))
             {
                 CS$ < > 8__locals1.storage.AppliedScopes.RemoveAt(index);
             }
         }
         using (IEnumerator <PolicyBindingConfig> enumerator = enumerable.GetEnumerator())
         {
             while (enumerator.MoveNext())
             {
                 PolicyBindingConfig bindingScope = enumerator.Current;
                 ScopeStorage scopeStorage        = CS$ < > 8__locals1.storage.AppliedScopes.FirstOrDefault((ScopeStorage scope) => PolicyConfigConverterTable.IsSameScope(bindingScope, scope));
                 if (scopeStorage == null)
                 {
                     CS$ < > 8__locals1.storage.AppliedScopes.Add(PolicyConfigConverterTable.ToStorageScope(bindingScope, CS$ < > 8__locals1.storage.OrganizationalUnitRoot));
                 }
                 else
                 {
                     PolicyConfigConverterTable.UpdateStorageScope(scopeStorage, bindingScope);
                 }
             }
         }
     });
     array[3] = new PolicyConfigConverter <PolicyAssociationConfig, AssociationStorage>(AssociationStorageSchema.PolicyIds, ConfigurationObjectType.Association, delegate(AssociationStorage storage, PolicyAssociationConfig policyConfig)
     {
         throw new NotImplementedException("Not in v1 of unified policy.");
     }, delegate(PolicyAssociationConfig policyConfig, AssociationStorage storage)
     {
         throw new NotImplementedException("Not in v1 of unified policy.");
     });
     PolicyConfigConverterTable.policyConverters = array;
 }