mirror of
https://github.com/projectdiscovery/nuclei.git
synced 2025-12-29 22:23:02 +00:00
* spelling: addresses Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: asynchronous Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: basic Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: brute force Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: constant Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: disables Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: engine Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: every time Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: execution Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: false positives Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: from Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: further Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: github Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: gitlab Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: highlight Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: hygiene Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: ignore Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: input Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: item Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: itself Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: latestxxx Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: navigation Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: negative Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: nonexistent Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: occurred Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: override Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: overrides Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: payload Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: performed Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: respective Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: retrieve Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: scanlist Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: separated Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: separator Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: severity Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: source Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: strategy Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: string Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: templates Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: terminal Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: timeout Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: trailing slash Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: trailing Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: websocket Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --------- Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
81 lines
2.1 KiB
Go
81 lines
2.1 KiB
Go
package customtemplates
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/projectdiscovery/nuclei/v2/pkg/types"
|
|
errorutil "github.com/projectdiscovery/utils/errors"
|
|
)
|
|
|
|
type Provider interface {
|
|
Download(ctx context.Context)
|
|
Update(ctx context.Context)
|
|
}
|
|
|
|
// CustomTemplatesManager is a manager for custom templates
|
|
type CustomTemplatesManager struct {
|
|
providers []Provider
|
|
}
|
|
|
|
// Download downloads the custom templates
|
|
func (c *CustomTemplatesManager) Download(ctx context.Context) {
|
|
for _, provider := range c.providers {
|
|
provider.Download(ctx)
|
|
}
|
|
}
|
|
|
|
// Update updates the custom templates
|
|
func (c *CustomTemplatesManager) Update(ctx context.Context) {
|
|
for _, provider := range c.providers {
|
|
provider.Update(ctx)
|
|
}
|
|
}
|
|
|
|
// NewCustomTemplatesManager returns a new instance of a custom templates manager
|
|
func NewCustomTemplatesManager(options *types.Options) (*CustomTemplatesManager, error) {
|
|
ctm := &CustomTemplatesManager{providers: []Provider{}}
|
|
|
|
if options.Cloud {
|
|
// if cloud is enabled, custom templates are Nop
|
|
return ctm, nil
|
|
}
|
|
|
|
// Add GitHub providers
|
|
githubProviders, err := NewGitHubProviders(options)
|
|
if err != nil {
|
|
return nil, errorutil.NewWithErr(err).Msgf("could not create github providers for custom templates")
|
|
}
|
|
for _, v := range githubProviders {
|
|
ctm.providers = append(ctm.providers, v)
|
|
}
|
|
|
|
// Add AWS S3 providers
|
|
s3Providers, err := NewS3Providers(options)
|
|
if err != nil {
|
|
return nil, errorutil.NewWithErr(err).Msgf("could not create s3 providers for custom templates")
|
|
}
|
|
for _, v := range s3Providers {
|
|
ctm.providers = append(ctm.providers, v)
|
|
}
|
|
|
|
// Add Azure providers
|
|
azureProviders, err := NewAzureProviders(options)
|
|
if err != nil {
|
|
return nil, errorutil.NewWithErr(err).Msgf("could not create azure providers for custom templates")
|
|
}
|
|
for _, v := range azureProviders {
|
|
ctm.providers = append(ctm.providers, v)
|
|
}
|
|
|
|
// Add GitLab providers
|
|
gitlabProviders, err := NewGitLabProviders(options)
|
|
if err != nil {
|
|
return nil, errorutil.NewWithErr(err).Msgf("could not create gitlab providers for custom templates")
|
|
}
|
|
for _, v := range gitlabProviders {
|
|
ctm.providers = append(ctm.providers, v)
|
|
}
|
|
|
|
return ctm, nil
|
|
}
|