示例#1
0
        protected override bool ProcessInternal(PropertyBag propertyBag)
        {
            ADObjectId id         = (ADObjectId)propertyBag[ADObjectSchema.Id];
            ADRawEntry properties = this.objectPropertyLookup.GetProperties(id);

            if (properties == null)
            {
                ExTraceGlobals.BackSyncTracer.TraceDebug((long)SyncConfiguration.TraceId, "MissingPropertyResolver:: - Skipping object {0}. Cannot read missing properties. Object was removed. Next incremantal sync will pick up deletion.", new object[]
                {
                    propertyBag[ADObjectSchema.Id]
                });
                return(false);
            }
            foreach (object obj in properties.propertyBag.Keys)
            {
                ProviderPropertyDefinition providerPropertyDefinition = (ProviderPropertyDefinition)obj;
                if (!propertyBag.Contains(providerPropertyDefinition))
                {
                    propertyBag.SetField(providerPropertyDefinition, properties[providerPropertyDefinition]);
                }
            }
            if (ProcessorHelper.IsObjectOrganizationUnit(propertyBag) && !propertyBag.Contains(SyncCompanySchema.DirSyncStatusAck) && propertyBag.Contains(ExtendedOrganizationalUnitSchema.DirSyncStatusAck) && propertyBag[ExtendedOrganizationalUnitSchema.DirSyncStatusAck] != null && ((MultiValuedProperty <string>)propertyBag[ExtendedOrganizationalUnitSchema.DirSyncStatusAck]).Count > 0)
            {
                propertyBag.SetField(SyncCompanySchema.DirSyncStatusAck, propertyBag[ExtendedOrganizationalUnitSchema.DirSyncStatusAck]);
            }
            this.LastProcessedEntry = properties;
            return(true);
        }
示例#2
0
        public override void ReportExcludedObject(PropertyBag propertyBag, DirectoryObjectErrorCode errorCode, ProcessingStage processingStage)
        {
            SyncObjectId syncObjectId = FullSyncObjectErrorReporter.GetSyncObjectId(propertyBag);

            if (syncObjectId != null)
            {
                this.ReportExcludedObject(syncObjectId, errorCode, processingStage);
                return;
            }
            base.ReportExcludedObject(propertyBag, errorCode, processingStage);
            DirectoryObjectError directoryObjectError = new DirectoryObjectError();

            directoryObjectError.ErrorCode = errorCode;
            directoryObjectError.ObjectId  = (string)propertyBag[SyncObjectSchema.ObjectId];
            if (propertyBag.Contains(ADObjectSchema.ObjectClass))
            {
                directoryObjectError.ObjectClass = SyncRecipient.GetRecipientType(propertyBag);
            }
            if (propertyBag.Contains(SyncObjectSchema.ContextId))
            {
                directoryObjectError.ContextId = (string)propertyBag[SyncObjectSchema.ContextId];
            }
            this.errors.Add(directoryObjectError);
            if (this.performanceCounterSession != null)
            {
                this.performanceCounterSession.IncrementUserError();
            }
        }
示例#3
0
 internal static bool ContainsProperty(PropertyBag propertyBag, ProviderPropertyDefinition property)
 {
     if (property.IsCalculated)
     {
         foreach (ProviderPropertyDefinition key in property.SupportingProperties)
         {
             if (!propertyBag.Contains(key))
             {
                 return(false);
             }
         }
         return(true);
     }
     return(propertyBag.Contains(property));
 }
        private bool ShouldIgnoreOrganizationUnit(PropertyBag propertyBag)
        {
            ExTraceGlobals.BackSyncTracer.TraceDebug((long)SyncConfiguration.TraceId, "<OrganizationFilter.ShouldIgnoreOrganizationUnit> entering");
            bool       result     = true;
            ADObjectId adobjectId = (ADObjectId)propertyBag[ADObjectSchema.Id];

            ExTraceGlobals.BackSyncTracer.TraceDebug <string>((long)SyncConfiguration.TraceId, "<OrganizationFilter.ShouldIgnoreOrganizationUnit> check tenant {0}", adobjectId.ToString());
            if (propertyBag.Contains(SyncCompanySchema.DirSyncStatusAck))
            {
                MultiValuedProperty <string> multiValuedProperty = (MultiValuedProperty <string>)propertyBag[SyncCompanySchema.DirSyncStatusAck];
                ExTraceGlobals.BackSyncTracer.TraceDebug <int>((long)SyncConfiguration.TraceId, "<OrganizationFilter.ShouldIgnoreOrganizationUnit> DirSyncStatusAck.count = {0}", multiValuedProperty.Count);
                if (multiValuedProperty.Count > 0)
                {
                    ExTraceGlobals.BackSyncTracer.TraceDebug((long)SyncConfiguration.TraceId, "<OrganizationFilter.ShouldIgnoreOrganizationUnit> tenant SyncCompanySchema.DirSyncStatusAck is not NULL");
                    result = false;
                }
            }
            else if (this.relocationEnabled && !ProcessorHelper.IsDeletedObject(propertyBag) && OrganizationFilter.IsRelocationCompletedSignal(propertyBag))
            {
                ExTraceGlobals.BackSyncTracer.TraceDebug((long)SyncConfiguration.TraceId, "<OrganizationFilter.ShouldIgnoreOrganizationUnit> tenant SyncCompanySchema.RelocationInProgress is changed to false");
                result = false;
            }
            else
            {
                ExTraceGlobals.BackSyncTracer.TraceDebug((long)SyncConfiguration.TraceId, "<OrganizationFilter.ShouldIgnoreOrganizationUnit> no BPOS interested attributes found on tenant. Skip tenant");
                result = true;
            }
            ExTraceGlobals.BackSyncTracer.TraceDebug <string>((long)SyncConfiguration.TraceId, "<OrganizationFilter.ShouldIgnoreOrganizationUnit> leaving ({0})", result.ToString());
            return(result);
        }
示例#5
0
 private static string GetId(PropertyBag propertyBag)
 {
     if (propertyBag.Contains(ADObjectSchema.Id))
     {
         return(((ADObjectId)propertyBag[ADObjectSchema.Id]).DistinguishedName);
     }
     if (propertyBag.Contains(ADObjectSchema.DistinguishedName))
     {
         return((string)propertyBag[ADObjectSchema.DistinguishedName]);
     }
     if (propertyBag.Contains(SyncObjectSchema.ObjectId))
     {
         return((string)propertyBag[SyncObjectSchema.ObjectId]);
     }
     return(string.Empty);
 }
示例#6
0
 // Token: 0x06001612 RID: 5650 RVA: 0x00052AB6 File Offset: 0x00050CB6
 public static void AppendForceToProxyCmdlet(PropertyBag parameters)
 {
     if (parameters.Contains("Force"))
     {
         parameters.Remove("Force");
     }
     parameters.Add("Force", true);
 }
示例#7
0
        private static void AssertAreEqual(PropertyBag expected, PropertyBag actual)
        {
            Assert.AreEqual(expected.Count, actual.Count);

            foreach (KeyValuePair <string, IList <string> > entry in expected)
            {
                Assert.IsTrue(actual.Contains(entry));
            }
        }
示例#8
0
 internal static void FaultInjection_Identity(PropertyBag parameters)
 {
     if (parameters.Contains("Identity"))
     {
         string value = parameters["Identity"].ToString();
         ExTraceGlobals.FaultInjectionTracer.TraceTest <string>(3519425853U, ref value);
         parameters.Remove("Identity");
         parameters.Add("Identity", value);
     }
 }
示例#9
0
        internal static bool IsUserObject(PropertyBag propertyBag)
        {
            DirectoryObjectClass directoryObjectClass = DirectoryObjectClass.Account;

            if (propertyBag.Contains(ADObjectSchema.ObjectClass))
            {
                directoryObjectClass = SyncRecipient.GetRecipientType(propertyBag);
            }
            return(directoryObjectClass == DirectoryObjectClass.User);
        }
 protected override bool ProcessInternal(PropertyBag propertyBag)
 {
     if (propertyBag.Contains(SyncUserSchema.ServiceOriginatedResource))
     {
         MultiValuedProperty <Capability> multiValuedProperty = (MultiValuedProperty <Capability>)propertyBag[SyncUserSchema.ServiceOriginatedResource];
         if (!multiValuedProperty.Contains(Capability.ExcludedFromBackSync) && propertyBag.Count == 6)
         {
             propertyBag.SetField(SyncObjectSchema.FaultInServiceInstance, this.serviceInstanceId);
         }
     }
     return(true);
 }
示例#11
0
        public override void ReportExcludedObject(PropertyBag propertyBag, DirectoryObjectErrorCode errorCode, ProcessingStage processingStage)
        {
            base.ReportExcludedObject(propertyBag, errorCode, processingStage);
            DirectoryObjectClass directoryObjectClass = DirectoryObjectClass.Account;

            if (propertyBag.Contains(ADObjectSchema.ObjectClass))
            {
                directoryObjectClass = SyncRecipient.GetRecipientType(propertyBag);
            }
            ADObjectId adObjectId = (ADObjectId)propertyBag[ADObjectSchema.Id];
            string     objectId   = (string)propertyBag[SyncObjectSchema.ObjectId];

            this.verboseLoggingDelegate(Strings.BackSyncObjectExcludedExtended(directoryObjectClass, objectId, adObjectId, errorCode, processingStage));
        }
示例#12
0
        protected override ADServerSettings GetCmdletADServerSettings()
        {
            PropertyBag             fields                  = base.CurrentTaskContext.InvocationInfo.Fields;
            SwitchParameter         switchParameter         = fields.Contains("IsDatacenter") ? ((SwitchParameter)fields["IsDatacenter"]) : new SwitchParameter(false);
            bool                    flag                    = fields.Contains("DomainController");
            OrganizationIdParameter organizationIdParameter = (OrganizationIdParameter)fields["PrimaryOrganization"];
            PartitionId             partitionId             = (organizationIdParameter != null) ? ADAccountPartitionLocator.GetPartitionIdByAcceptedDomainName(organizationIdParameter.RawIdentity) : null;
            string                  value                   = null;
            ADServerSettings        serverSettings          = ExchangePropertyContainer.GetServerSettings(base.CurrentTaskContext.SessionState);

            if (serverSettings != null && partitionId != null)
            {
                value = serverSettings.PreferredGlobalCatalog(partitionId.ForestFQDN);
            }
            if (switchParameter && organizationIdParameter != null && string.IsNullOrEmpty(value) && partitionId != null && !flag)
            {
                if (this.domainBasedADServerSettings == null)
                {
                    this.domainBasedADServerSettings = RunspaceServerSettings.CreateGcOnlyRunspaceServerSettings(organizationIdParameter.RawIdentity.ToLowerInvariant(), partitionId.ForestFQDN, false);
                }
                return(this.domainBasedADServerSettings);
            }
            return(base.GetCmdletADServerSettings());
        }
示例#13
0
        public static string ExtractIdentityParameter(PropertyBag parameters)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException("parameters");
            }
            string result = string.Empty;

            if (parameters.Contains("Identity"))
            {
                object obj = parameters["Identity"];
                if (obj != null)
                {
                    result = obj.ToString();
                }
            }
            return(result);
        }
示例#14
0
 private static bool PasswordExistsAndSet(PropertyBag bag)
 {
     return(bag.Contains(FtpSiteGlobals.VirtualDirectory_Password_Set) && ((bool)bag[FtpSiteGlobals.VirtualDirectory_Password_Set]));
 }
示例#15
0
 private static bool IsPropertyPrefilled(PropertyBag propertyBag, ProviderPropertyDefinition property)
 {
     return(propertyBag.Contains(property) && propertyBag[property] != property.DefaultValue);
 }
示例#16
0
        private static void AssertAreEqual(PropertyBag expected, PropertyBag actual)
        {
            Assert.AreEqual(expected.Count, actual.Count);

            foreach (KeyValuePair<string, IList<string>> entry in expected)
            {
                Assert.IsTrue(actual.Contains(entry));
            }
        }
示例#17
0
        private static bool PasswordExistsAndSet(PropertyBag bag)
        {
			return (bag.Contains(FtpSiteGlobals.VirtualDirectory_Password_Set) && ((bool)bag[FtpSiteGlobals.VirtualDirectory_Password_Set]));
        }
 internal static bool HasObjectId(PropertyBag propertyBag)
 {
     return(propertyBag.Contains(SyncObjectSchema.ObjectId) && !string.IsNullOrEmpty((string)propertyBag[SyncObjectSchema.ObjectId]) && RecipientTypeFilter.IsValidGuid((string)propertyBag[SyncObjectSchema.ObjectId]));
 }
 private static bool IsRelocationCompletedSignal(PropertyBag propertyBag)
 {
     return(propertyBag.Contains(ADOrganizationalUnitSchema.MServSyncConfigFlags) && propertyBag[SyncCompanySchema.RelocationInProgress] != null && !(bool)propertyBag[SyncCompanySchema.RelocationInProgress]);
 }
示例#20
0
        private static void AddPropertyToPropertyBag(ADPropertyDefinition propertyDefinition, PropertyBag propertyBag, SimpleADObject.SimpleList <SimpleADObject.SimpleADProperty> lookup)
        {
            if (propertyBag.Contains(propertyDefinition))
            {
                return;
            }
            if (propertyDefinition.IsCalculated)
            {
                foreach (ProviderPropertyDefinition providerPropertyDefinition in propertyDefinition.SupportingProperties)
                {
                    ADPropertyDefinition propertyDefinition2 = (ADPropertyDefinition)providerPropertyDefinition;
                    SimpleADObject.AddPropertyToPropertyBag(propertyDefinition2, propertyBag, lookup);
                }
                return;
            }
            if (string.IsNullOrEmpty(propertyDefinition.LdapDisplayName))
            {
                return;
            }
            SimpleADObject.SimpleADProperty simpleADProperty;
            if (!lookup.TryGetValue(propertyDefinition.LdapDisplayName, out simpleADProperty) || simpleADProperty == null)
            {
                propertyBag.SetField(propertyDefinition, null);
                return;
            }
            if (simpleADProperty.Value == null)
            {
                propertyBag.SetField(propertyDefinition, null);
                return;
            }
            object value5;

            if (propertyDefinition.IsMultivalued)
            {
                ArrayList arrayList     = new ArrayList();
                ArrayList invalidValues = new ArrayList();
                if (propertyDefinition.IsBinary)
                {
                    List <byte[]> list = simpleADProperty.Value as List <byte[]>;
                    if (list == null)
                    {
                        return;
                    }
                    using (List <byte[]> .Enumerator enumerator2 = list.GetEnumerator())
                    {
                        while (enumerator2.MoveNext())
                        {
                            byte[]          value = enumerator2.Current;
                            ValidationError validationError;
                            object          value2 = ADValueConvertor.ConvertFromADAndValidateSingleValue(value, propertyDefinition, propertyDefinition.Type == typeof(byte[]), out validationError);
                            arrayList.Add(value2);
                        }
                        goto IL_17F;
                    }
                }
                List <string> list2 = simpleADProperty.Value as List <string>;
                if (list2 == null)
                {
                    return;
                }
                foreach (string value3 in list2)
                {
                    ValidationError validationError2;
                    object          value4 = ADValueConvertor.ConvertFromADAndValidateSingleValue(value3, propertyDefinition, propertyDefinition.Type == typeof(string), out validationError2);
                    arrayList.Add(value4);
                }
IL_17F:
                MultiValuedPropertyBase multiValuedPropertyBase = ADValueConvertor.CreateGenericMultiValuedProperty(propertyDefinition, true, arrayList, invalidValues, null);
                multiValuedPropertyBase.IsCompletelyRead        = true;
                value5 = multiValuedPropertyBase;
            }
            else
            {
                ValidationError validationError3;
                value5 = ADValueConvertor.ConvertFromADAndValidateSingleValue(simpleADProperty.Value, propertyDefinition, propertyDefinition.Type == (propertyDefinition.IsBinary ? typeof(byte[]) : typeof(string)), out validationError3);
            }
            propertyBag.SetField(propertyDefinition, value5);
        }