Ejemplo n.º 1
0
        internal static uint GetDiscoveryMaxSearchQueueDepth(IRecipientSession recipientSession)
        {
            Unlimited <uint> discoveryMaxSearchQueueDepth = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoveryMaxSearchQueueDepth;
            uint             result = discoveryMaxSearchQueueDepth.IsUnlimited ? uint.MaxValue : discoveryMaxSearchQueueDepth.Value;

            ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(2802199869U, ref result);
            return(result);
        }
Ejemplo n.º 2
0
        internal static uint GetDiscoverySearchTimeoutPeriod(IRecipientSession recipientSession)
        {
            Unlimited <uint> discoverySearchTimeoutPeriod = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoverySearchTimeoutPeriod;
            uint             result = discoverySearchTimeoutPeriod.IsUnlimited ? uint.MaxValue : discoverySearchTimeoutPeriod.Value;

            ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(3573951805U, ref result);
            return(result);
        }
Ejemplo n.º 3
0
        internal static uint GetDiscoveryMaxKeywordsPerPage(IRecipientSession recipientSession)
        {
            Unlimited <uint> discoveryMaxKeywordsPerPage = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoveryMaxKeywordsPerPage;
            uint             result = discoveryMaxKeywordsPerPage.IsUnlimited ? uint.MaxValue : discoveryMaxKeywordsPerPage.Value;

            ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(2516987197U, ref result);
            return(result);
        }
Ejemplo n.º 4
0
        internal static uint GetDiscoveryMaxRefinerResults(IRecipientSession recipientSession)
        {
            Unlimited <uint> discoveryMaxRefinerResults = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoveryMaxRefinerResults;
            uint             result = discoveryMaxRefinerResults.IsUnlimited ? uint.MaxValue : discoveryMaxRefinerResults.Value;

            ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(4127599933U, ref result);
            return(result);
        }
Ejemplo n.º 5
0
        internal static uint GetDiscoveryMaxConcurrency(IRecipientSession recipientSession)
        {
            Unlimited <uint> discoveryMaxConcurrency = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoveryMaxConcurrency;
            uint             result = discoveryMaxConcurrency.IsUnlimited ? uint.MaxValue : discoveryMaxConcurrency.Value;

            ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(4047908157U, ref result);
            return(result);
        }
Ejemplo n.º 6
0
        internal static uint GetDiscoveryPreviewSearchResultsPageSize(IRecipientSession recipientSession)
        {
            Unlimited <uint> discoveryPreviewSearchResultsPageSize = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoveryPreviewSearchResultsPageSize;
            uint             result = discoveryPreviewSearchResultsPageSize.IsUnlimited ? uint.MaxValue : discoveryPreviewSearchResultsPageSize.Value;

            ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(3590729021U, ref result);
            return(result);
        }
Ejemplo n.º 7
0
        internal static uint GetDiscoveryMaxMailboxesForStatsSearch(IRecipientSession recipientSession)
        {
            Unlimited <uint> discoveryMaxStatsSearchMailboxes = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoveryMaxStatsSearchMailboxes;
            uint             result = discoveryMaxStatsSearchMailboxes.IsUnlimited ? uint.MaxValue : discoveryMaxStatsSearchMailboxes.Value;

            ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(2500209981U, ref result);
            return(result);
        }
Ejemplo n.º 8
0
        internal static uint GetDiscoveryMaxKeywords(IRecipientSession recipientSession)
        {
            Unlimited <uint> discoveryMaxKeywords = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoveryMaxKeywords;
            uint             result = discoveryMaxKeywords.IsUnlimited ? uint.MaxValue : discoveryMaxKeywords.Value;

            ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(3511037245U, ref result);
            return(result);
        }
Ejemplo n.º 9
0
        internal static uint GetDiscoveryMaxMailboxes(IRecipientSession recipientSession)
        {
            Unlimited <uint> unlimited = SearchUtils.GetDiscoveryThrottlingPolicy(recipientSession).DiscoveryMaxMailboxes.Value;
            uint             result    = unlimited.IsUnlimited ? uint.MaxValue : unlimited.Value;

            ExTraceGlobals.FaultInjectionTracer.TraceTest <uint>(2437295421U, ref result);
            return(result);
        }
Ejemplo n.º 10
0
        internal void UpdateResults(MailboxSession targetMailbox, StoreId targetFolder)
        {
            int num = 0;
            ByteQuantifiedSize zero = ByteQuantifiedSize.Zero;

            SearchUtils.GetFolderItemsCountAndSize(targetMailbox, targetFolder, out num, out zero);
            this.OverallResultItems = (long)num;
            this.OverallResultSize  = zero;
        }
Ejemplo n.º 11
0
        internal static HashSet <StoreId> GetBccItemIds(MailboxSession mailbox, StoreId folderId)
        {
            HashSet <StoreId> bccItemIds;

            using (Folder folder = Folder.Bind(mailbox, folderId))
            {
                bccItemIds = SearchUtils.GetBccItemIds(folder);
            }
            return(bccItemIds);
        }
Ejemplo n.º 12
0
        internal StoreId[] GetFolderScope(MailboxSession mailbox)
        {
            StoreId defaultFolderId  = mailbox.GetDefaultFolderId(DefaultFolderType.Root);
            StoreId defaultFolderId2 = mailbox.GetDefaultFolderId(DefaultFolderType.RecoverableItemsRoot);

            StoreId[] array;
            if (!this.SearchDumpsterOnly)
            {
                array = new StoreId[]
                {
                    defaultFolderId
                };
            }
            else
            {
                array = new StoreId[0];
            }
            if ((this.SearchDumpsterOnly || this.SearchDumpster) && defaultFolderId2 != null)
            {
                QueryFilter queryFilter = DumpsterFolderHelper.ExcludeAuditFoldersFilter;
                if (this.excludePurgesFromDumpster && SearchUtils.LegalHoldEnabled(mailbox))
                {
                    queryFilter = new AndFilter(new QueryFilter[]
                    {
                        queryFilter,
                        new ComparisonFilter(ComparisonOperator.NotEqual, StoreObjectSchema.DisplayName, "DiscoveryHolds")
                    });
                    if (mailbox.COWSettings.HoldEnabled() && !mailbox.COWSettings.IsOnlyInPlaceHoldEnabled())
                    {
                        queryFilter = new AndFilter(new QueryFilter[]
                        {
                            queryFilter,
                            new ComparisonFilter(ComparisonOperator.NotEqual, StoreObjectSchema.DisplayName, "Purges")
                        });
                    }
                }
                using (Folder folder = Folder.Bind(mailbox, defaultFolderId2))
                {
                    using (QueryResult queryResult = folder.FolderQuery(FolderQueryFlags.None, queryFilter, null, new PropertyDefinition[]
                    {
                        FolderSchema.Id
                    }))
                    {
                        array = array.Concat(queryResult.Enumerator <StoreId>()).ToArray <StoreId>();
                    }
                }
            }
            return(array);
        }
Ejemplo n.º 13
0
        internal static MailboxSession OpenMailboxSession(ADUser adUser, GenericIdentity actualExecutingIdentity)
        {
            ExchangePrincipal principal = ExchangePrincipal.FromADUser(adUser.OrganizationId.ToADSessionSettings(), adUser, RemotingOptions.AllowCrossSite);

            return(SearchUtils.OpenMailboxSession(principal, actualExecutingIdentity));
        }
Ejemplo n.º 14
0
        internal static void CheckDiscoveryBudget(ADUser arbitrationMailbox, IRecipientSession recipientSession)
        {
            uint discoveryMaxConcurrency = SearchUtils.GetDiscoveryMaxConcurrency(recipientSession);

            if (discoveryMaxConcurrency == 0U)
            {
                throw new SearchDisabledException();
            }
            MailboxDataProvider        mailboxDataProvider = new MailboxDataProvider(arbitrationMailbox, recipientSession);
            IEnumerable <SearchObject> enumerable          = mailboxDataProvider.FindPaged <SearchObject>(null, null, false, null, 0);

            if (enumerable != null)
            {
                Dictionary <ADObjectId, ADUser> dictionary  = new Dictionary <ADObjectId, ADUser>();
                Dictionary <ADObjectId, string> dictionary2 = new Dictionary <ADObjectId, string>();
                ADUser       aduser       = null;
                string       text         = null;
                SearchStatus searchStatus = null;
                uint         num          = 0U;
                try
                {
                    foreach (SearchObject searchObject in from so in enumerable
                             where (so.SearchStatus != null && so.SearchStatus.Status == SearchState.InProgress) || (so.SearchStatus != null && so.SearchStatus.Status == SearchState.EstimateInProgress)
                             select so)
                    {
                        if (!dictionary.TryGetValue(searchObject.TargetMailbox, out aduser))
                        {
                            aduser = (ADUser)recipientSession.Read(searchObject.TargetMailbox);
                            if (aduser != null)
                            {
                                dictionary.Add(searchObject.TargetMailbox, aduser);
                            }
                        }
                        if (aduser != null && !dictionary2.TryGetValue(searchObject.TargetMailbox, out text))
                        {
                            text = ExchangePrincipal.FromADUser(recipientSession.SessionSettings, aduser, RemotingOptions.AllowCrossSite).MailboxInfo.Location.ServerFqdn;
                            if (!string.IsNullOrEmpty(text))
                            {
                                dictionary2.Add(searchObject.TargetMailbox, text);
                            }
                        }
                        if (aduser != null && !string.IsNullOrEmpty(text))
                        {
                            SearchId searchId = new SearchId(mailboxDataProvider.ADUser.Id.DistinguishedName, mailboxDataProvider.ADUser.Id.ObjectGuid, searchObject.Id.Guid.ToString());
                            try
                            {
                                using (MailboxSearchClient mailboxSearchClient = new MailboxSearchClient(text))
                                {
                                    searchStatus = mailboxSearchClient.GetStatus(searchId);
                                }
                            }
                            catch (RpcConnectionException arg)
                            {
                                SearchUtils.Tracer.TraceError <RpcConnectionException>(0L, "SearchUtils.CheckDiscoveryBudget error querying for status: {0}", arg);
                                continue;
                            }
                            catch (RpcException arg2)
                            {
                                SearchUtils.Tracer.TraceError <RpcException>(0L, "SearchUtils.CheckDiscoveryBudget error querying for status: {0}", arg2);
                                continue;
                            }
                            catch (SearchServerException arg3)
                            {
                                SearchUtils.Tracer.TraceError <SearchServerException>(0L, "SearchUtils.CheckDiscoveryBudget error querying for status: {0}", arg3);
                                continue;
                            }
                            if (searchStatus != null && (searchStatus.Status == 0 || searchStatus.Status == 6))
                            {
                                num += 1U;
                            }
                        }
                        if (num >= discoveryMaxConcurrency)
                        {
                            throw new SearchOverBudgetException((int)discoveryMaxConcurrency);
                        }
                    }
                }
                finally
                {
                    dictionary.Clear();
                    dictionary2.Clear();
                }
            }
        }
Ejemplo n.º 15
0
 internal static bool DiscoveryEnabled(IRecipientSession recipientSession)
 {
     return(SearchUtils.GetDiscoveryMaxConcurrency(recipientSession) > 0U);
 }