コード例 #1
0
        private bool IsOnlyGatewayServerRoleExist()
        {
            IConfigurationSession configurationSession = (IConfigurationSession)base.DataSession;
            QueryFilter           filter = new BitMaskOrFilter(ServerSchema.CurrentServerRole, 16439UL);

            Server[] array = configurationSession.Find <Server>(null, QueryScope.SubTree, filter, null, 1);
            return(array == null || array.Length == 0);
        }
コード例 #2
0
        private static QueryFilter CreateSecurityGroupFilter(bool securityEnabled)
        {
            QueryFilter queryFilter = new BitMaskOrFilter(ADGroupSchema.GroupType, (ulong)int.MinValue);

            if (!securityEnabled)
            {
                return(new NotFilter(queryFilter));
            }
            return(queryFilter);
        }
コード例 #3
0
        private static QueryFilter CreateUniversalGroupFilter(bool isUniversal)
        {
            QueryFilter queryFilter = new BitMaskOrFilter(ADGroupSchema.GroupType, 8UL);

            if (!isUniversal)
            {
                return(new NotFilter(queryFilter));
            }
            return(queryFilter);
        }
コード例 #4
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);
        }
コード例 #5
0
        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
                }));
            }
        }
コード例 #6
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);
        }