From 4b9c3b8d16ceca39f9892550467bca2fa1a68635 Mon Sep 17 00:00:00 2001 From: scottdharvey Date: Tue, 23 Apr 2024 06:41:12 -0700 Subject: [PATCH] Feat 5059 (#5060) * change catalog * add usesuppliedcatalog option * add catalog nil check * Update config.go --- lib/config.go | 9 +++++++++ lib/sdk.go | 4 ++-- lib/sdk_private.go | 4 +++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/config.go b/lib/config.go index ddcf3b88b..a453fb74c 100644 --- a/lib/config.go +++ b/lib/config.go @@ -10,6 +10,7 @@ import ( "github.com/projectdiscovery/ratelimit" "github.com/projectdiscovery/nuclei/v3/pkg/authprovider" + "github.com/projectdiscovery/nuclei/v3/pkg/catalog" "github.com/projectdiscovery/nuclei/v3/pkg/model/types/severity" "github.com/projectdiscovery/nuclei/v3/pkg/output" "github.com/projectdiscovery/nuclei/v3/pkg/progress" @@ -425,3 +426,11 @@ func SignedTemplatesOnly() NucleiSDKOptions { return nil } } + +// WithCatalog uses a supplied catalog +func WithCatalog(cat catalog.Catalog) NucleiSDKOptions { + return func(e *NucleiEngine) error { + e.catalog = cat + return nil + } +} diff --git a/lib/sdk.go b/lib/sdk.go index 4bee921c3..c80abb061 100644 --- a/lib/sdk.go +++ b/lib/sdk.go @@ -6,7 +6,7 @@ import ( "io" "github.com/projectdiscovery/nuclei/v3/pkg/authprovider" - "github.com/projectdiscovery/nuclei/v3/pkg/catalog/disk" + "github.com/projectdiscovery/nuclei/v3/pkg/catalog" "github.com/projectdiscovery/nuclei/v3/pkg/catalog/loader" "github.com/projectdiscovery/nuclei/v3/pkg/core" "github.com/projectdiscovery/nuclei/v3/pkg/input/provider" @@ -63,7 +63,7 @@ type NucleiEngine struct { // unexported core fields interactshClient *interactsh.Client - catalog *disk.DiskCatalog + catalog catalog.Catalog rateLimiter *ratelimit.Limiter store *loader.Store httpxClient providerTypes.InputLivenessProbe diff --git a/lib/sdk_private.go b/lib/sdk_private.go index c76970c91..89628cc93 100644 --- a/lib/sdk_private.go +++ b/lib/sdk_private.go @@ -146,7 +146,9 @@ func (e *NucleiEngine) init() error { return err } - e.catalog = disk.NewCatalog(config.DefaultConfig.TemplatesDirectory) + if e.catalog == nil { + e.catalog = disk.NewCatalog(config.DefaultConfig.TemplatesDirectory) + } e.executerOpts = protocols.ExecutorOptions{ Output: e.customWriter,