private static QueryFilter ScopeRestrictionFlagsFilterBuilder <T>(SinglePropertyFilter filter, ScopeFlagsFormat.ConvertToMaskDelegate convertor) { if (!(filter is ComparisonFilter)) { throw new ADFilterException(DirectoryStrings.ExceptionUnsupportedFilterForProperty(filter.Property.Name, filter.GetType(), typeof(ComparisonFilter))); } ComparisonFilter comparisonFilter = (ComparisonFilter)filter; if (comparisonFilter.ComparisonOperator != ComparisonOperator.Equal && ComparisonOperator.NotEqual != comparisonFilter.ComparisonOperator) { throw new ADFilterException(DirectoryStrings.ExceptionUnsupportedOperatorForProperty(comparisonFilter.Property.Name, comparisonFilter.ComparisonOperator.ToString())); } if (!(comparisonFilter.PropertyValue is T)) { throw new ArgumentException("filter.PropertyValue"); } QueryFilter queryFilter = new BitMaskAndFilter(ManagementScopeSchema.ScopeRestrictionFlags, convertor(comparisonFilter.PropertyValue)); if (comparisonFilter.PropertyValue is bool && !(bool)comparisonFilter.PropertyValue) { if (ComparisonOperator.NotEqual != comparisonFilter.ComparisonOperator) { return(new NotFilter(queryFilter)); } return(queryFilter); } else { if (ComparisonOperator.NotEqual != comparisonFilter.ComparisonOperator) { return(queryFilter); } return(new NotFilter(queryFilter)); } }
private ADObjectId GetPolicyIdFromAD(OrganizationId key) { ExTraceGlobals.MobileDevicePolicyTracer.Information <OrganizationId>((long)this.GetHashCode(), "MobileDevicePolicyIdCacheByOrganization.GetPolicyFromAD({0})", key); ADSessionSettings settings = ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(key); IConfigurationSession session = this.GetConfigSession(settings); ADObjectId rootId = session.GetOrgContainerId(); QueryFilter filter = new BitMaskAndFilter(MobileMailboxPolicySchema.MobileFlags, 4096UL); SortBy sortBy = new SortBy(ADObjectSchema.WhenChanged, SortOrder.Descending); ADObjectId policyId = null; try { ADNotificationAdapter.RunADOperation(delegate() { MobileMailboxPolicy[] array = session.Find <MobileMailboxPolicy>(rootId, QueryScope.SubTree, filter, sortBy, 1); if (array != null && array.Length > 0) { policyId = array[0].Id; OrgIdADObjectWrapper key2 = new OrgIdADObjectWrapper(policyId, key); if (!MobileDevicePolicyCache.Instance.Contains(key2)) { MobileDevicePolicyData mobileDevicePolicyDataFromMobileMailboxPolicy = MobileDevicePolicyDataFactory.GetMobileDevicePolicyDataFromMobileMailboxPolicy(array[0]); MobileDevicePolicyCache.Instance.TryAdd(key2, ref mobileDevicePolicyDataFromMobileMailboxPolicy); } } }); } catch (LocalizedException arg) { ExTraceGlobals.MobileDevicePolicyTracer.TraceError <OrganizationId, LocalizedException>((long)this.GetHashCode(), "MobileDevicePolicyIdCacheByOrganization.GetPolicyIdFromAD({0}) threw exception: {1}", key, arg); throw; } ExTraceGlobals.MobileDevicePolicyTracer.Information <OrganizationId, ADObjectId>((long)this.GetHashCode(), "MobileDevicePolicyIdCacheByOrganization.GetPolicyFromAD({0}) returned: {1}", key, policyId); return(policyId); }
private static QueryFilter CreateUserEnabledFilter(bool enabled) { QueryFilter queryFilter = new BitMaskAndFilter(ADUserSchema.UserAccountControl, 2UL); if (!enabled) { return(queryFilter); } return(new NotFilter(queryFilter)); }
public RemoteRoutingAddressGenerator(IConfigurationSession session) { QueryFilter filter = new BitMaskAndFilter(DomainContentConfigSchema.AcceptMessageTypes, 256UL); DomainContentConfig[] array = session.Find <DomainContentConfig>(session.GetOrgContainerId(), QueryScope.SubTree, filter, null, 1); if (array.Length > 0) { this.targetDeliveryDomain = array[0].DomainName.Domain; } }
private bool TryGetServerForRoleAndVersion(ServerRole serverRole, ServerVersion version) { QueryFilter queryFilter = new BitMaskAndFilter(ServerSchema.CurrentServerRole, (ulong)((long)serverRole)); QueryFilter queryFilter2 = new ComparisonFilter(ComparisonOperator.Equal, ServerSchema.AdminDisplayVersion, version); QueryFilter filter = new AndFilter(new QueryFilter[] { queryFilter, queryFilter2 }); ITopologyConfigurationSession topologyConfigurationSession = DirectorySessionFactory.NonCacheSessionFactory.CreateTopologyConfigurationSession(ConsistencyMode.IgnoreInvalid, ADSessionSettings.FromRootOrgScopeSet(), 199, "TryGetServerForRoleAndVersion", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\Deployment\\CompleteOrganizationUpgradeTask.cs"); MiniServer[] array = topologyConfigurationSession.Find <MiniServer>(null, QueryScope.SubTree, filter, null, 1, null); return(array != null && array.Length > 0); }
protected QueryFilter SinglePropertySmartFilterToNativeFilter(QueryFilter filter, PropertyDefinition nativeProperty) { MultivaluedInstanceComparisonFilter multivaluedInstanceComparisonFilter = filter as MultivaluedInstanceComparisonFilter; if (multivaluedInstanceComparisonFilter != null) { return(new MultivaluedInstanceComparisonFilter(multivaluedInstanceComparisonFilter.ComparisonOperator, nativeProperty, multivaluedInstanceComparisonFilter.PropertyValue)); } ComparisonFilter comparisonFilter = filter as ComparisonFilter; if (comparisonFilter != null) { return(new ComparisonFilter(comparisonFilter.ComparisonOperator, nativeProperty, comparisonFilter.PropertyValue)); } ExistsFilter existsFilter = filter as ExistsFilter; if (existsFilter != null) { return(new ExistsFilter(nativeProperty)); } TextFilter textFilter = filter as TextFilter; if (textFilter != null) { return(new TextFilter(nativeProperty, textFilter.Text, textFilter.MatchOptions, textFilter.MatchFlags)); } BitMaskFilter bitMaskFilter = filter as BitMaskFilter; if (bitMaskFilter != null) { return(new BitMaskFilter(nativeProperty, bitMaskFilter.Mask, bitMaskFilter.IsNonZero)); } BitMaskAndFilter bitMaskAndFilter = filter as BitMaskAndFilter; if (bitMaskAndFilter != null) { return(new BitMaskAndFilter(nativeProperty, bitMaskAndFilter.Mask)); } BitMaskOrFilter bitMaskOrFilter = filter as BitMaskOrFilter; if (bitMaskOrFilter != null) { return(new BitMaskOrFilter(nativeProperty, bitMaskOrFilter.Mask)); } throw this.CreateInvalidFilterConversionException(filter); }
private static QueryFilter RoleAssignmentFlagsFilterBuilder <T>(SinglePropertyFilter filter, RoleAssignmentFlagsFormat.Bitfields bitfield, RoleAssignmentFlagsFormat.ConvertToUlongDelegate convertor) { if (!(filter is ComparisonFilter)) { throw new ADFilterException(DirectoryStrings.ExceptionUnsupportedFilterForProperty(filter.Property.Name, filter.GetType(), typeof(ComparisonFilter))); } ComparisonFilter comparisonFilter = (ComparisonFilter)filter; if (comparisonFilter.ComparisonOperator != ComparisonOperator.Equal && ComparisonOperator.NotEqual != comparisonFilter.ComparisonOperator) { throw new ADFilterException(DirectoryStrings.ExceptionUnsupportedOperatorForProperty(comparisonFilter.Property.Name, comparisonFilter.ComparisonOperator.ToString())); } if (!(comparisonFilter.PropertyValue is T)) { throw new ArgumentException("filter.PropertyValue"); } ulong rawUInt64Bits = RoleAssignmentFlagsFormat.GetRawUInt64Bits(convertor(comparisonFilter.PropertyValue), bitfield); ulong mask = RoleAssignmentFlagsFormat.masks[(int)bitfield] << RoleAssignmentFlagsFormat.shifts[(int)bitfield] & ~rawUInt64Bits; QueryFilter queryFilter = new BitMaskAndFilter(ExchangeRoleAssignmentSchema.ExchangeRoleAssignmentFlags, rawUInt64Bits); QueryFilter queryFilter2 = new BitMaskOrFilter(ExchangeRoleAssignmentSchema.ExchangeRoleAssignmentFlags, mask); if (comparisonFilter.PropertyValue is bool && !(bool)comparisonFilter.PropertyValue) { if (ComparisonOperator.NotEqual != comparisonFilter.ComparisonOperator) { return(new NotFilter(queryFilter)); } return(queryFilter); } else { if (ComparisonOperator.NotEqual != comparisonFilter.ComparisonOperator) { return(new AndFilter(new QueryFilter[] { queryFilter, new NotFilter(queryFilter2) })); } return(new OrFilter(new QueryFilter[] { new NotFilter(queryFilter), queryFilter2 })); } }
public AcceptedDomain GetDefaultAcceptedDomain() { BitMaskAndFilter filter = new BitMaskAndFilter(AcceptedDomainSchema.AcceptedDomainFlags, 4UL); AcceptedDomain[] array = base.Find <AcceptedDomain>(this.GetOrgContainerId(), QueryScope.SubTree, filter, null, 0); if (array == null || array.Length == 0) { return(null); } if (array.Length > 1) { Globals.LogExchangeTopologyEvent(DirectoryEventLogConstants.Tuple_DSC_EVENT_MULTIPLE_DEFAULT_ACCEPTED_DOMAIN, array[0].DistinguishedName, new object[] { array.Length.ToString() }); } return(array[0]); }
protected QueryFilter SinglePropertyNativeFilterToSmartFilter(QueryFilter filter, PropertyDefinition nativeProperty) { SinglePropertyFilter singlePropertyFilter = filter as SinglePropertyFilter; if (singlePropertyFilter != null && singlePropertyFilter.Property.Equals(nativeProperty)) { MultivaluedInstanceComparisonFilter multivaluedInstanceComparisonFilter = filter as MultivaluedInstanceComparisonFilter; if (multivaluedInstanceComparisonFilter != null) { return(new MultivaluedInstanceComparisonFilter(multivaluedInstanceComparisonFilter.ComparisonOperator, this, multivaluedInstanceComparisonFilter.PropertyValue)); } ComparisonFilter comparisonFilter = filter as ComparisonFilter; if (comparisonFilter != null) { return(new ComparisonFilter(comparisonFilter.ComparisonOperator, this, comparisonFilter.PropertyValue)); } ExistsFilter existsFilter = filter as ExistsFilter; if (existsFilter != null) { return(new ExistsFilter(this)); } TextFilter textFilter = filter as TextFilter; if (textFilter != null) { return(new TextFilter(this, textFilter.Text, textFilter.MatchOptions, textFilter.MatchFlags)); } BitMaskFilter bitMaskFilter = filter as BitMaskFilter; if (bitMaskFilter != null) { return(new BitMaskFilter(this, bitMaskFilter.Mask, bitMaskFilter.IsNonZero)); } BitMaskAndFilter bitMaskAndFilter = filter as BitMaskAndFilter; if (bitMaskAndFilter != null) { return(new BitMaskAndFilter(this, bitMaskAndFilter.Mask)); } BitMaskOrFilter bitMaskOrFilter = filter as BitMaskOrFilter; if (bitMaskOrFilter != null) { return(new BitMaskOrFilter(this, bitMaskOrFilter.Mask)); } } return(null); }
internal static QueryFilter HasLocalCopyFilterBuilder(SinglePropertyFilter filter) { LegacyDatabase.InternalAssertComparisonFilter(filter, LegacyDatabaseSchema.HasLocalCopy); ComparisonFilter comparisonFilter = filter as ComparisonFilter; ComparisonOperator comparisonOperator = comparisonFilter.ComparisonOperator; if (comparisonOperator != ComparisonOperator.Equal && ComparisonOperator.NotEqual != comparisonOperator) { throw new ADFilterException(DirectoryStrings.ExceptionInvalidBitwiseComparison(LegacyDatabaseSchema.HasLocalCopy.Name, comparisonOperator.ToString())); } bool flag = (bool)comparisonFilter.PropertyValue; bool flag2 = ComparisonOperator.Equal == comparisonOperator; QueryFilter queryFilter = new BitMaskAndFilter(LegacyDatabaseSchema.HasLocalCopyValue, 1UL); if (flag ^ flag2) { queryFilter = new NotFilter(queryFilter); } return(queryFilter); }
internal static QueryFilter ProvisioningFlagsFilterBuilder(DatabaseProvisioningFlags provisioningFlag, SinglePropertyFilter filter) { if (!(filter is ComparisonFilter)) { throw new ADFilterException(DirectoryStrings.ExceptionUnsupportedFilterForProperty(filter.Property.Name, filter.GetType(), typeof(ComparisonFilter))); } ComparisonFilter comparisonFilter = (ComparisonFilter)filter; if (comparisonFilter.ComparisonOperator != ComparisonOperator.Equal && ComparisonOperator.NotEqual != comparisonFilter.ComparisonOperator) { throw new ADFilterException(DirectoryStrings.ExceptionUnsupportedOperatorForProperty(comparisonFilter.Property.Name, comparisonFilter.ComparisonOperator.ToString())); } QueryFilter queryFilter = new BitMaskAndFilter(SharedPropertyDefinitions.ProvisioningFlags, (ulong)((long)provisioningFlag)); if ((comparisonFilter.ComparisonOperator == ComparisonOperator.Equal && (bool)comparisonFilter.PropertyValue) || (ComparisonOperator.NotEqual == comparisonFilter.ComparisonOperator && !(bool)comparisonFilter.PropertyValue)) { return(queryFilter); } return(new NotFilter(queryFilter)); }
protected override void InternalValidate() { if (this.Assembly != null) { QueryFilter queryFilter = new ComparisonFilter(ComparisonOperator.Equal, CmdletExtensionAgentSchema.Assembly, this.Assembly); if (this.InternalFilter == null) { this.internalFilter = queryFilter; } else { this.internalFilter = new AndFilter(new QueryFilter[] { this.InternalFilter, queryFilter }); } } if (base.Fields["Enabled"] != null) { QueryFilter queryFilter2 = new BitMaskAndFilter(CmdletExtensionAgentSchema.CmdletExtensionFlags, 1UL); if (!this.Enabled) { queryFilter2 = new NotFilter(queryFilter2); } if (this.InternalFilter == null) { this.internalFilter = queryFilter2; } else { this.internalFilter = new AndFilter(new QueryFilter[] { this.InternalFilter, queryFilter2 }); } } base.InternalValidate(); }
private ADRecipient[] FindMatchedUser(MailboxStatistics storeMailbox, bool?accountEnabled) { int num = storeMailbox.LegacyDN.ToUpperInvariant().LastIndexOf("/CN="); string propertyValue = storeMailbox.LegacyDN.Substring(num + "/CN=".Length); QueryFilter queryFilter = new ComparisonFilter(ComparisonOperator.Equal, ADMailboxRecipientSchema.SamAccountName, propertyValue); QueryFilter queryFilter2 = new ComparisonFilter(ComparisonOperator.Equal, ADMailboxRecipientSchema.SamAccountName, storeMailbox.DisplayName); QueryFilter queryFilter3 = new ComparisonFilter(ComparisonOperator.Equal, ADRecipientSchema.DisplayName, propertyValue); QueryFilter queryFilter4 = new ComparisonFilter(ComparisonOperator.Equal, ADRecipientSchema.DisplayName, storeMailbox.DisplayName); QueryFilter queryFilter5 = new ComparisonFilter(ComparisonOperator.Equal, ADRecipientSchema.RecipientType, RecipientType.User); AndFilter andFilter = new AndFilter(new QueryFilter[] { queryFilter5, new OrFilter(new QueryFilter[] { queryFilter, queryFilter2, queryFilter3, queryFilter4 }) }); if (accountEnabled != null && storeMailbox.MailboxType == StoreMailboxType.Private) { QueryFilter queryFilter6 = new BitMaskAndFilter(ADUserSchema.UserAccountControl, 2UL); if (accountEnabled.Value) { queryFilter6 = new NotFilter(queryFilter6); } andFilter = new AndFilter(new QueryFilter[] { andFilter, queryFilter6 }); } return(this.GlobalCatalogSession.Find(null, QueryScope.SubTree, andFilter, null, 0)); }