nuclei/pkg/tmplexec/interface.go

33 lines
1.2 KiB
Go
Raw Normal View History

package tmplexec
import (
"github.com/projectdiscovery/nuclei/v3/pkg/scan"
"github.com/projectdiscovery/nuclei/v3/pkg/tmplexec/flow"
"github.com/projectdiscovery/nuclei/v3/pkg/tmplexec/generic"
"github.com/projectdiscovery/nuclei/v3/pkg/tmplexec/multiproto"
)
var (
_ TemplateEngine = &generic.Generic{}
_ TemplateEngine = &flow.FlowExecutor{}
_ TemplateEngine = &multiproto.MultiProtocol{}
)
// TemplateEngine is a template executor with different functionality
// Ex:
// 1. generic => executes all protocol requests one after another (Done)
// 2. flow => executes protocol requests based on how they are defined in flow (Done)
// 3. multiprotocol => executes multiple protocols in parallel (Done)
type TemplateEngine interface {
// Note: below methods only need to implement extra / engine specific functionality
// basic request compilation , callbacks , cli output callback etc are handled by `TemplateExecuter` and no need to do it again
// Extra Compilation (if any)
Compile() error
// ExecuteWithResults executes the template and returns results
ExecuteWithResults(ctx *scan.ScanContext) error
// Name returns name of template engine
Name() string
}