示例#1
0
        public BindingStorage ToBindingStorage(ExPolicyConfigProvider policyConfigProvider)
        {
            ArgumentValidator.ThrowIfNull("policyConfigProvider", policyConfigProvider);
            BindingStorage bindingStorage = new BindingStorage();

            bindingStorage.SetId(PolicyStorage.PoliciesContainer.GetChildId(this.Name));
            bindingStorage.Name           = this.Name;
            bindingStorage.MasterIdentity = this.MasterIdentity;
            bindingStorage.PolicyId       = this.PolicyId;
            bindingStorage.Workload       = this.Workload;
            bindingStorage.PolicyVersion  = this.PolicyVersion;
            foreach (string scopeStorageString in this.RawAppliedScopes)
            {
                ScopeStorage scopeStorage = ExBindingStoreObject.ScopeStorageFromString(scopeStorageString, policyConfigProvider);
                if (scopeStorage != null)
                {
                    bindingStorage.AppliedScopes.Add(scopeStorage);
                }
            }
            if (this.WhenChanged != null)
            {
                bindingStorage.propertyBag.SetField(ADObjectSchema.WhenChangedRaw, ADValueConvertor.ConvertValueToString(this.WhenChanged.Value, null));
            }
            if (this.WhenCreated != null)
            {
                bindingStorage.propertyBag.SetField(ADObjectSchema.WhenCreatedRaw, ADValueConvertor.ConvertValueToString(this.WhenCreated.Value, null));
            }
            bindingStorage.ResetChangeTracking(true);
            bindingStorage.RawObject = this;
            return(bindingStorage);
        }
示例#2
0
        public override PolicyConfigBase ConvertFromStorage(ExPolicyConfigProvider provider, UnifiedPolicyStorageBase storageObject)
        {
            ArgumentValidator.ThrowIfNull("provider", provider);
            ArgumentValidator.ThrowIfNull("storageObject", storageObject);
            PolicyConfigBase policyConfigBase = provider.NewBlankConfigInstance <TPolicyConfig>();

            if (!provider.ReadOnly)
            {
                policyConfigBase.RawObject = storageObject;
            }
            Guid identity = storageObject.Guid;

            if (!ExPolicyConfigProvider.IsFFOOnline)
            {
                identity = storageObject.MasterIdentity;
            }
            policyConfigBase.Identity       = identity;
            policyConfigBase.Name           = storageObject.Name;
            policyConfigBase.Version        = PolicyVersion.Create(storageObject.PolicyVersion);
            policyConfigBase.Workload       = storageObject.Workload;
            policyConfigBase.WhenChangedUTC = storageObject.WhenChangedUTC;
            policyConfigBase.WhenCreatedUTC = storageObject.WhenChangedUTC;
            this.copyPropertiesToPolicyConfigDelegate((TPolicyStorage)((object)storageObject), (TPolicyConfig)((object)policyConfigBase));
            policyConfigBase.ResetChangeTracking();
            return(policyConfigBase);
        }
示例#3
0
        internal static ObjectId GetRootId(IConfigDataProvider dataSession)
        {
            ExPolicyConfigProvider exPolicyConfigProvider = dataSession as ExPolicyConfigProvider;

            if (exPolicyConfigProvider != null)
            {
                return(exPolicyConfigProvider.GetPolicyConfigContainer(null));
            }
            return(null);
        }
        public PolicyConfigProvider GetPolicyStore(OrganizationId organizationId)
        {
            if (organizationId == null)
            {
                throw new ArgumentNullException("organizationId");
            }
            ExPolicyConfigProvider exPolicyConfigProvider = (ExPolicyConfigProvider)PolicyConfigProviderManager <ExPolicyConfigProviderManager> .Instance.CreateForProcessingEngine(organizationId, this.logger, this.PreferredDomainController);

            this.PreferredDomainController = exPolicyConfigProvider.LastUsedDc;
            return(exPolicyConfigProvider);
        }
示例#5
0
 public override PolicyConfigProvider CreateForSyncEngine(Guid externalDirectoryOrganizationId, string auxiliaryStore, bool enablePolicyApplication = true, ExecutionLog logProvider = null)
 {
     return(this.WrapKnownException(delegate
     {
         ExPolicyConfigProvider exPolicyConfigProvider = new ExPolicyConfigProvider(externalDirectoryOrganizationId, false, string.Empty, logProvider);
         if (enablePolicyApplication)
         {
             exPolicyConfigProvider.PolicyConfigChanged += ExPolicyConfigChangeHandler.Current.EventHandler;
         }
         return exPolicyConfigProvider;
     }));
 }
示例#6
0
 public void FromBindingStorage(BindingStorage bindingStorage, ExPolicyConfigProvider policyConfigProvider)
 {
     ArgumentValidator.ThrowIfNull("bindingStorage", bindingStorage);
     ArgumentValidator.ThrowIfNull("policyConfigProvider", policyConfigProvider);
     this.Name           = bindingStorage.Name;
     this.MasterIdentity = bindingStorage.MasterIdentity;
     this.PolicyId       = bindingStorage.PolicyId;
     this.Workload       = bindingStorage.Workload;
     this.PolicyVersion  = bindingStorage.PolicyVersion;
     this.RawAppliedScopes.Clear();
     foreach (ScopeStorage scopeStorage in bindingStorage.AppliedScopes)
     {
         string item = ExBindingStoreObject.ScopeStorageToString(scopeStorage);
         this.RawAppliedScopes.Add(item);
     }
 }
示例#7
0
        public override UnifiedPolicyStorageBase ConvertToStorage(ExPolicyConfigProvider provider, PolicyConfigBase policyConfig)
        {
            ArgumentValidator.ThrowIfNull("provider", provider);
            ArgumentValidator.ThrowIfNull("storageObject", policyConfig);
            UnifiedPolicyStorageBase unifiedPolicyStorageBase = policyConfig.RawObject as TPolicyStorage;

            if (unifiedPolicyStorageBase == null)
            {
                unifiedPolicyStorageBase = Activator.CreateInstance <TPolicyStorage>();
                unifiedPolicyStorageBase.OrganizationId = provider.GetOrganizationId();
                if (ExPolicyConfigProvider.IsFFOOnline)
                {
                    unifiedPolicyStorageBase.SetId(new ADObjectId(PolicyStorage.PoliciesContainer.GetChildId(policyConfig.Name).DistinguishedName, policyConfig.Identity));
                }
                else
                {
                    PolicyRuleConfig policyRuleConfig      = policyConfig as PolicyRuleConfig;
                    ADObjectId       policyConfigContainer = provider.GetPolicyConfigContainer((policyRuleConfig == null) ? null : new Guid?(policyRuleConfig.PolicyDefinitionConfigId));
                    unifiedPolicyStorageBase.SetId(policyConfigContainer.GetChildId(policyConfig.Name));
                    unifiedPolicyStorageBase.MasterIdentity = policyConfig.Identity;
                }
            }
            else if ((ExPolicyConfigProvider.IsFFOOnline && policyConfig.Identity != unifiedPolicyStorageBase.Guid) || (!ExPolicyConfigProvider.IsFFOOnline && policyConfig.Identity != unifiedPolicyStorageBase.MasterIdentity))
            {
                throw new PolicyConfigProviderPermanentException(ServerStrings.ErrorCouldNotUpdateMasterIdentityProperty(policyConfig.Name));
            }
            if (policyConfig.Version != null)
            {
                unifiedPolicyStorageBase.PolicyVersion = policyConfig.Version.InternalStorage;
            }
            unifiedPolicyStorageBase.Name = policyConfig.Name;
            if (unifiedPolicyStorageBase.Workload != policyConfig.Workload)
            {
                unifiedPolicyStorageBase.Workload = policyConfig.Workload;
            }
            this.copyPropertiesToStorageDelegate((TPolicyConfig)((object)policyConfig), (TPolicyStorage)((object)unifiedPolicyStorageBase));
            return(unifiedPolicyStorageBase);
        }
 public ExBindingStoreObjectProvider(ExPolicyConfigProvider policyConfigProvider) : base(policyConfigProvider.GetOrganizationId())
 {
     ArgumentValidator.ThrowIfNull("policyConfigProvider", policyConfigProvider);
     this.policyConfigProvider = policyConfigProvider;
 }
示例#9
0
 public abstract UnifiedPolicyStorageBase ConvertToStorage(ExPolicyConfigProvider provider, PolicyConfigBase policyConfig);
示例#10
0
 public abstract PolicyConfigBase ConvertFromStorage(ExPolicyConfigProvider provider, UnifiedPolicyStorageBase storageObject);
示例#11
0
 public abstract Func <QueryFilter, ObjectId, bool, SortBy, IConfigurable[]> GetFindStorageObjectsDelegate(ExPolicyConfigProvider provider);
示例#12
0
 public override Func <QueryFilter, ObjectId, bool, SortBy, IConfigurable[]> GetFindStorageObjectsDelegate(ExPolicyConfigProvider provider)
 {
     return(new Func <QueryFilter, ObjectId, bool, SortBy, IConfigurable[]>(provider.Find <TPolicyStorage>));
 }
示例#13
0
 private static ScopeStorage ScopeStorageFromString(string scopeStorageString, ExPolicyConfigProvider policyConfigProvider)
 {
     if (!string.IsNullOrEmpty(scopeStorageString))
     {
         Guid     empty  = Guid.Empty;
         Mode     mode   = Mode.Enforce;
         Guid     empty2 = Guid.Empty;
         string[] array  = scopeStorageString.Split(new char[]
         {
             ','
         }, 5);
         if (array.Length == 5 && Guid.TryParse(array[0], out empty) && Enum.TryParse <Mode>(array[1], out mode) && Guid.TryParse(array[2], out empty2) && !string.IsNullOrEmpty(array[3]) && !string.IsNullOrEmpty(array[4]))
         {
             ScopeStorage scopeStorage = new ScopeStorage();
             scopeStorage.SetId(PolicyStorage.PoliciesContainer.GetChildId(empty.ToString()));
             scopeStorage.Name           = array[3];
             scopeStorage.MasterIdentity = empty;
             scopeStorage.PolicyVersion  = empty2;
             scopeStorage.Mode           = mode;
             scopeStorage.Scope          = array[4];
             scopeStorage.ResetChangeTracking(true);
             return(scopeStorage);
         }
     }
     policyConfigProvider.LogOneEntry(ExecutionLog.EventType.CriticalError, "Convert string to scope storage", new FormatException(string.Format("'{0}' is not valid for scope storage.", scopeStorageString)));
     return(null);
 }