mirror of
https://github.com/projectdiscovery/nuclei.git
synced 2025-12-21 09:55:28 +00:00
* add flow logic * progress * working POC * fix string slice normalization issue in variables * update * fix nil panic * remove poll() * load file with sandbox and more * fix failing integration tests * JS: log: print in vardump format * fix missing id in protocols * fix proto prefix in template context * flow: add unit tests * conditional flow support using flow * fix proto callbacks + more unit tests * adds integration test * conditional flow: check if req has any matchers * fix lint error * deprecate iterate-all+ missing multi-proto implementation * fix ip input in raw request * JS: feat dedupe object+ more builtin funcs * feat: hide protocol result using hide * feat: async execution * complete async execution support * fix condition-flow without any matchers * refactor: template executer package (tmplexec) * flow executor working * fix data race in templateCtx * templateCtx redesign * fix failing unit test * add multiprotocol support to deprecated syntax * fix race condition in utils & tlsx * add documentation in flow package * remove regions.txt file * fix minor issue with self contained templates * fix typos of copilot * dep + misc update * fix reqID: use req.Type instead of template.Type --------- Co-authored-by: sandeep <8293321+ehsandeep@users.noreply.github.com>
72 lines
2.1 KiB
Go
72 lines
2.1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/projectdiscovery/nuclei/v2/pkg/catalog/config"
|
|
"github.com/projectdiscovery/nuclei/v2/pkg/testutils"
|
|
)
|
|
|
|
func getTemplatePath() string {
|
|
return config.DefaultConfig.TemplatesDirectory
|
|
}
|
|
|
|
var templatesPathTestCases = []TestCaseInfo{
|
|
//template folder path issue
|
|
{Path: "protocols/http/get.yaml", TestCase: &folderPathTemplateTest{}},
|
|
//cwd
|
|
{Path: "./protocols/dns/cname-fingerprint.yaml", TestCase: &cwdTemplateTest{}},
|
|
//relative path
|
|
{Path: "dns/dns-saas-service-detection.yaml", TestCase: &relativePathTemplateTest{}},
|
|
//absolute path
|
|
{Path: fmt.Sprintf("%v/dns/dns-saas-service-detection.yaml", getTemplatePath()), TestCase: &absolutePathTemplateTest{}},
|
|
}
|
|
|
|
type cwdTemplateTest struct{}
|
|
|
|
// Execute executes a test case and returns an error if occurred
|
|
func (h *cwdTemplateTest) Execute(filePath string) error {
|
|
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "8x8exch02.8x8.com", debug)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return expectResultsCount(results, 1)
|
|
}
|
|
|
|
type relativePathTemplateTest struct{}
|
|
|
|
// Execute executes a test case and returns an error if occurred
|
|
func (h *relativePathTemplateTest) Execute(filePath string) error {
|
|
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "8x8exch02.8x8.com", debug)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return expectResultsCount(results, 1)
|
|
}
|
|
|
|
type absolutePathTemplateTest struct{}
|
|
|
|
// Execute executes a test case and returns an error if occurred
|
|
func (h *absolutePathTemplateTest) Execute(filePath string) error {
|
|
results, err := testutils.RunNucleiTemplateAndGetResults(filePath, "8x8exch02.8x8.com", debug)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return expectResultsCount(results, 1)
|
|
}
|
|
|
|
type folderPathTemplateTest struct{}
|
|
|
|
// Execute executes a test case and returns an error if occurred
|
|
func (h *folderPathTemplateTest) Execute(filePath string) error {
|
|
results, err := testutils.RunNucleiBinaryAndGetCombinedOutput(debug, []string{"-t", filePath, "-target", "http://example.com"})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if strings.Contains(results, "installing") {
|
|
return fmt.Errorf("couldn't find template path,re-installing")
|
|
}
|
|
return nil
|
|
}
|