IP Library Granted Patent US 11,157,447
Granted Patent B2
US 11,157,447 · App. 16/179,723 · Granted Oct 26, 2021

File system search proxying

Inventor: Tyler Fisher (Toronto, CA)
Assignee: Rapid7, Inc.
G06F16/148G06F16/156G06F16/9024
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,157,447
App. No.
16/179,723
Granted
Oct 26, 2021
Kind
B2
Abstract

Systems and methods for concurrently performing multiple searches of a file system based on a plurality of search requests. Each search request belonging to the plurality of search requests has a search root. A common set of search roots is identified from the plurality of search roots. A first window function is generated based upon a first search root belonging to the common set of search roots. Candidates located in a plurality of directory trees are enumerated. Each of the directory trees belonging to the plurality of directory trees begins in a search root in the common set of search roots. The candidates are evaluated based upon a first search criteria and the first window function. And, the candidates that satisfy both the first search criteria and the first window function are reported as a result.

Claims (54)

1. A method for concurrent performance of multiple searches of a single file system, the method comprising:

receiving a plurality of search requests of the single file system, each search request comprising at least one search root of the single file system;

identifying, using a configured processor, a common set of search roots from the plurality of search roots;

generating, using the configured processor, a first window function based on a first search root belonging to the common set of search roots, wherein the first window function filters candidates to determine if the candidates are responsive to the plurality of search requests;

enumerating, using the configured processor, candidates located in a plurality of directory trees, each directory tree beginning in a search root in the common set of search roots;

enumerating, using the configured processor, at least one attribute associated with each of the enumerated candidates, wherein the at least one enumerated attribute is based upon criteria from the plurality of search requests;

evaluating, using the configured processor, the candidates based upon a first search criteria, the enumerated at least one attribute, and the first window function; and

reporting, using the configured processor, a result from the candidates that satisfies the first search criteria, the enumerated at least one attribute, and the first window function.

2. The method of claim 1 further comprising:

identifying, using the configured processor, a non-common search root not belonging to the common set of search roots;

enumerating, using the configured processor, non-common candidates located in a directory tree beginning in the non-common search root;

evaluating, using the configured processor, the non-common candidates based upon a second search criteria; and

reporting, using the configured processor, a second result from the non-common candidates that satisfies the second search criteria.

3. The method of claim 1 wherein the common set of search roots comprises at least one search root that shares a common ascending node or a common descending node.

4. The method of claim 1 wherein the first window function comprises a pair of directed acyclic word graphs (DAWGs).

5. The method of claim 4 wherein the pair of DAWGs comprise:

a blacklist DAWG defining excluded nodes; and

a whitelist DAWG defining a set of search roots.

6. The method of claim 5 further comprising:

evaluating, using the configured processor, the candidates against the blacklist DAWG; and

evaluating, using the configured processor, the candidates against the whitelist DAWG.

7. The method of claim 1 wherein reporting the result comprises executing at least one of a callback handler and an asymmetric coroutine.

8. The method of claim 1 , wherein each search request further comprises a set of directory exclusions, the method further comprising:

computing the intersection of the plurality of sets of directory exclusions; and

enumerating, using the configured processor, candidates located in the common set of search roots and not located in the computed intersection of the plurality of sets of directory exclusions.

9. The method of claim 1 , wherein identifying the common set of search roots comprises removing interleaving search roots.

10. The method of claim 1 , wherein each search request further comprises a set of directory exclusions, and wherein identifying the common set of search roots comprises removing search roots that are descendant nodes of a directory exclusion.

11. A system for concurrent performance of multiple searches of a single file system, the system comprising:

a configured processor configured to:

receive a plurality of search requests of the single file system, each search request comprising at least one search root of the single file system;

identify a common set of search roots from the plurality of search roots;

generate a first window function based on a first search root belonging to the common set of search roots, wherein the first window function filters candidates to determine if the candidates are responsive to the plurality of search requests;

enumerate candidates located in a plurality of directory trees, each directory tree beginning in a search root in the common set of search roots;

enumerate at least one attribute associated with each of the enumerated candidates, wherein the at least one enumerated attribute is based upon criteria from the plurality of search requests;

evaluate the candidates based upon a first search criteria, the at least one enumerated attribute,. and the first window function; and

report a result from the candidates that satisfies the first search criteria, the enumerated at least one attribute, and the first window function.

12. The system of claim 11 wherein the configured processor is further configured to:

identify a non-common search root not belonging to the common set of search roots;

enumerate the non-common candidates based upon a second search criteria; and

report a second result from the non-common candidates that satisfies the second search criteria.

13. The system of claim 11 wherein the common set of search roots comprises at least one search root that shares a common ascending node or a common descending node.

14. The system of claim 11 wherein the first window function comprises a pair of directed acyclic word graphs (DAWGs).

15. The system of claim 14 wherein the pair of DAWGs comprise:

a blacklist DAWG defining excluded nodes; and

a whitelist DAWG defining a set of search roots.

16. The system of claim 15 wherein the configured processor is further configured to:

evaluate the candidates against the blacklist DAWG; and

evaluate the candidates against the whitelist DAWG.

17. The system of claim 11 wherein the configured processor is configured to report the result in part by configurations to execute at least one of a callback handler and an asymmetric coroutine.

18. The system of claim 11 wherein each search request further comprises a set of directory exclusions; and the configured processor is further configured to:

compute the intersection of the plurality of sets of directory exclusions: and

enumerate candidates located in the common set of search roots and not located in the computed intersection of the plurality of sets of directory exclusions.

19. The system of claim 11 , wherein the configured processor is configured to identify the common set of search roots in part by configurations to remove interleaving search roots.

20. The system of claim 11 , wherein each search request further comprises a set of directory exclusions; and wherein the configured processor is configured to identify the common set of search roots in part by configurations to remove search roots that are descendant nodes of a directory exclusion from the common set of search roots.

Assignments (4)
SECURITY INTEREST Recorded Jun 26, 2025
From: RAPID7, INC.; RAPID7 LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 071743/0537 →
RELEASE OF SECURITY INTEREST Recorded Dec 27, 2024
From: KEYBANK NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: RAPID7, INC.
Reel/Frame 069785/0328 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Apr 24, 2020
From: RAPID7, INC.
To: KEYBANK NATIONAL ASSOCIATION
Reel/Frame 052489/0939 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 28, 2018
From: FISHER, TYLER
To: RAPID7, INC.
Reel/Frame 047603/0638 →
Continuity (2)
Provisional Application 62714716 · Aug 5, 2018
Related Publication 20200042614A1 · Feb 6, 2020