Example #1
0
 private static QueryFilter CreateComparisonFilter(ADPropertyDefinition schemaProperty, string searchFilter)
 {
     if (SearchRecipient.IsWildcard(searchFilter))
     {
         string text = searchFilter.Substring(0, searchFilter.Length - 1);
         return(new TextFilter(schemaProperty, text, MatchOptions.Prefix, MatchFlags.IgnoreCase));
     }
     return(new ComparisonFilter(ComparisonOperator.Equal, schemaProperty, searchFilter));
 }
Example #2
0
        public static QueryFilter GetRecipientTypeSearchFilter(string searchFilter, bool includeGroups = false)
        {
            List <QueryFilter> list = new List <QueryFilter>();

            if (!string.IsNullOrEmpty(searchFilter) && (!searchFilter.StartsWith("*") || !searchFilter.EndsWith("*") || searchFilter.Length > 2))
            {
                Guid empty = Guid.Empty;
                if (Guid.TryParse(searchFilter, out empty))
                {
                    list.Add(new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.Guid, empty));
                }
                else
                {
                    SmtpAddress smtpAddress = new SmtpAddress(searchFilter);
                    if (smtpAddress.IsValidAddress)
                    {
                        list.Add(new ComparisonFilter(ComparisonOperator.Equal, ADRecipientSchema.EmailAddresses, "SMTP:" + smtpAddress.ToString()));
                        list.Add(new ComparisonFilter(ComparisonOperator.Equal, ADRecipientSchema.ExternalEmailAddress, "SMTP:" + smtpAddress.ToString()));
                    }
                    else
                    {
                        list.Add(SearchRecipient.CreateComparisonFilter(ADUserSchema.UserPrincipalName, searchFilter));
                        list.Add(SearchRecipient.CreateComparisonFilter(ADRecipientSchema.Alias, searchFilter));
                        list.Add(SearchRecipient.CreateComparisonFilter(ADUserSchema.FirstName, searchFilter));
                        list.Add(SearchRecipient.CreateComparisonFilter(ADUserSchema.LastName, searchFilter));
                        list.Add(SearchRecipient.CreateComparisonFilter(ADRecipientSchema.DisplayName, searchFilter));
                    }
                }
            }
            QueryFilter queryFilter = SearchRecipient.CombineFilters(SearchRecipient.GetRecipientTypeFilter(includeGroups));

            if (list.Count > 0)
            {
                queryFilter = QueryFilter.AndTogether(new QueryFilter[]
                {
                    queryFilter,
                    SearchRecipient.CombineFilters(list)
                });
            }
            return(queryFilter);
        }
Example #3
0
        public static bool IsMembershipGroup(ADRawEntry recipient)
        {
            RecipientTypeDetails typeDetails = (RecipientTypeDetails)recipient[ADRecipientSchema.RecipientTypeDetails];

            return(SearchRecipient.IsMembershipGroupTypeDetail(typeDetails));
        }