mirror of https://github.com/daffainfo/nuclei.git
In-lined error checks, reduced scope of error variables, introduced new error variables instead of re-using them
parent
cfbd628b55
commit
40d88d2304
|
@ -35,8 +35,7 @@ func main() {
|
||||||
if customTest != "" && !strings.Contains(file, customTest) {
|
if customTest != "" && !strings.Contains(file, customTest) {
|
||||||
continue // only run tests user asked
|
continue // only run tests user asked
|
||||||
}
|
}
|
||||||
err := test.Execute(file)
|
if err := test.Execute(file); err != nil {
|
||||||
if err != nil {
|
|
||||||
fmt.Fprintf(os.Stderr, "%s Test \"%s\" failed: %s\n", failed, file, err)
|
fmt.Fprintf(os.Stderr, "%s Test \"%s\" failed: %s\n", failed, file, err)
|
||||||
errored = true
|
errored = true
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -21,10 +21,10 @@ type workflowBasic struct{}
|
||||||
// Executes executes a test case and returns an error if occurred
|
// Executes executes a test case and returns an error if occurred
|
||||||
func (h *workflowBasic) Execute(filePath string) error {
|
func (h *workflowBasic) Execute(filePath string) error {
|
||||||
router := httprouter.New()
|
router := httprouter.New()
|
||||||
router.GET("/", httprouter.Handle(func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
|
router.GET("/", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
|
||||||
httpDebugRequestDump(r)
|
httpDebugRequestDump(r)
|
||||||
fmt.Fprintf(w, "This is test matcher text")
|
fmt.Fprintf(w, "This is test matcher text")
|
||||||
}))
|
})
|
||||||
ts := httptest.NewServer(router)
|
ts := httptest.NewServer(router)
|
||||||
defer ts.Close()
|
defer ts.Close()
|
||||||
|
|
||||||
|
@ -43,10 +43,10 @@ type workflowConditionMatched struct{}
|
||||||
// Executes executes a test case and returns an error if occurred
|
// Executes executes a test case and returns an error if occurred
|
||||||
func (h *workflowConditionMatched) Execute(filePath string) error {
|
func (h *workflowConditionMatched) Execute(filePath string) error {
|
||||||
router := httprouter.New()
|
router := httprouter.New()
|
||||||
router.GET("/", httprouter.Handle(func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
|
router.GET("/", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
|
||||||
httpDebugRequestDump(r)
|
httpDebugRequestDump(r)
|
||||||
fmt.Fprintf(w, "This is test matcher text")
|
fmt.Fprintf(w, "This is test matcher text")
|
||||||
}))
|
})
|
||||||
ts := httptest.NewServer(router)
|
ts := httptest.NewServer(router)
|
||||||
defer ts.Close()
|
defer ts.Close()
|
||||||
|
|
||||||
|
@ -65,10 +65,10 @@ type workflowConditionUnmatch struct{}
|
||||||
// Executes executes a test case and returns an error if occurred
|
// Executes executes a test case and returns an error if occurred
|
||||||
func (h *workflowConditionUnmatch) Execute(filePath string) error {
|
func (h *workflowConditionUnmatch) Execute(filePath string) error {
|
||||||
router := httprouter.New()
|
router := httprouter.New()
|
||||||
router.GET("/", httprouter.Handle(func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
|
router.GET("/", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
|
||||||
httpDebugRequestDump(r)
|
httpDebugRequestDump(r)
|
||||||
fmt.Fprintf(w, "This is test matcher text")
|
fmt.Fprintf(w, "This is test matcher text")
|
||||||
}))
|
})
|
||||||
ts := httptest.NewServer(router)
|
ts := httptest.NewServer(router)
|
||||||
defer ts.Close()
|
defer ts.Close()
|
||||||
|
|
||||||
|
@ -84,13 +84,13 @@ func (h *workflowConditionUnmatch) Execute(filePath string) error {
|
||||||
|
|
||||||
type workflowMatcherName struct{}
|
type workflowMatcherName struct{}
|
||||||
|
|
||||||
// Executes executes a test case and returns an error if occurred
|
// Execute executes a test case and returns an error if occurred
|
||||||
func (h *workflowMatcherName) Execute(filePath string) error {
|
func (h *workflowMatcherName) Execute(filePath string) error {
|
||||||
router := httprouter.New()
|
router := httprouter.New()
|
||||||
router.GET("/", httprouter.Handle(func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
|
router.GET("/", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
|
||||||
httpDebugRequestDump(r)
|
httpDebugRequestDump(r)
|
||||||
fmt.Fprintf(w, "This is test matcher text")
|
fmt.Fprintf(w, "This is test matcher text")
|
||||||
}))
|
})
|
||||||
ts := httptest.NewServer(router)
|
ts := httptest.NewServer(router)
|
||||||
defer ts.Close()
|
defer ts.Close()
|
||||||
|
|
||||||
|
|
|
@ -83,13 +83,11 @@ func validateOptions(options *types.Options) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate proxy options if provided
|
// Validate proxy options if provided
|
||||||
err := validateProxyURL(options.ProxyURL, "invalid http proxy format (It should be http://username:password@host:port)")
|
if err := validateProxyURL(options.ProxyURL, "invalid http proxy format (It should be http://username:password@host:port)"); err != nil {
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = validateProxyURL(options.ProxySocksURL, "invalid socks proxy format (It should be socks5://username:password@host:port)")
|
if err := validateProxyURL(options.ProxySocksURL, "invalid socks proxy format (It should be socks5://username:password@host:port)"); err != nil {
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -108,14 +108,12 @@ func (r *Runner) updateTemplates() error {
|
||||||
gologger.Verbose().Msgf("Downloading nuclei-templates (v%s) to %s\n", version.String(), r.templatesConfig.TemplatesDirectory)
|
gologger.Verbose().Msgf("Downloading nuclei-templates (v%s) to %s\n", version.String(), r.templatesConfig.TemplatesDirectory)
|
||||||
|
|
||||||
r.fetchLatestVersionsFromGithub() // also fetch latest versions
|
r.fetchLatestVersionsFromGithub() // also fetch latest versions
|
||||||
_, err = r.downloadReleaseAndUnzip(ctx, version.String(), asset.GetZipballURL())
|
if _, err := r.downloadReleaseAndUnzip(ctx, version.String(), asset.GetZipballURL()); err != nil {
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
r.templatesConfig.CurrentVersion = version.String()
|
r.templatesConfig.CurrentVersion = version.String()
|
||||||
|
|
||||||
err = config.WriteConfiguration(r.templatesConfig, true, checkedIgnore)
|
if err := config.WriteConfiguration(r.templatesConfig, true, checkedIgnore); err != nil {
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
gologger.Info().Msgf("Successfully downloaded nuclei-templates (v%s). GoodLuck!\n", version.String())
|
gologger.Info().Msgf("Successfully downloaded nuclei-templates (v%s). GoodLuck!\n", version.String())
|
||||||
|
@ -163,12 +161,11 @@ func (r *Runner) updateTemplates() error {
|
||||||
|
|
||||||
gologger.Verbose().Msgf("Downloading nuclei-templates (v%s) to %s\n", version.String(), r.templatesConfig.TemplatesDirectory)
|
gologger.Verbose().Msgf("Downloading nuclei-templates (v%s) to %s\n", version.String(), r.templatesConfig.TemplatesDirectory)
|
||||||
r.fetchLatestVersionsFromGithub()
|
r.fetchLatestVersionsFromGithub()
|
||||||
_, err = r.downloadReleaseAndUnzip(ctx, version.String(), asset.GetZipballURL())
|
if _, err := r.downloadReleaseAndUnzip(ctx, version.String(), asset.GetZipballURL()); err != nil {
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
err = config.WriteConfiguration(r.templatesConfig, true, checkedIgnore)
|
|
||||||
if err != nil {
|
if err := config.WriteConfiguration(r.templatesConfig, true, checkedIgnore); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
gologger.Info().Msgf("Successfully updated nuclei-templates (v%s). GoodLuck!\n", version.String())
|
gologger.Info().Msgf("Successfully updated nuclei-templates (v%s). GoodLuck!\n", version.String())
|
||||||
|
@ -294,8 +291,7 @@ func (r *Runner) downloadReleaseAndUnzip(ctx context.Context, version, downloadU
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the template folder if it doesn't exists
|
// Create the template folder if it doesn't exists
|
||||||
err = os.MkdirAll(r.templatesConfig.TemplatesDirectory, os.ModePerm)
|
if err := os.MkdirAll(r.templatesConfig.TemplatesDirectory, os.ModePerm); err != nil {
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("failed to create template base folder: %s", err)
|
return nil, fmt.Errorf("failed to create template base folder: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -308,8 +304,7 @@ func (r *Runner) downloadReleaseAndUnzip(ctx context.Context, version, downloadU
|
||||||
r.printUpdateChangelog(results, version)
|
r.printUpdateChangelog(results, version)
|
||||||
}
|
}
|
||||||
checksumFile := filepath.Join(r.templatesConfig.TemplatesDirectory, ".checksum")
|
checksumFile := filepath.Join(r.templatesConfig.TemplatesDirectory, ".checksum")
|
||||||
err = writeTemplatesChecksum(checksumFile, results.checksums)
|
if err := writeTemplatesChecksum(checksumFile, results.checksums); err != nil {
|
||||||
if err != nil {
|
|
||||||
return nil, errors.Wrap(err, "could not write checksum")
|
return nil, errors.Wrap(err, "could not write checksum")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -320,8 +315,8 @@ func (r *Runner) downloadReleaseAndUnzip(ctx context.Context, version, downloadU
|
||||||
buffer.WriteString(addition)
|
buffer.WriteString(addition)
|
||||||
buffer.WriteString("\n")
|
buffer.WriteString("\n")
|
||||||
}
|
}
|
||||||
err = ioutil.WriteFile(additionsFile, buffer.Bytes(), os.ModePerm)
|
|
||||||
if err != nil {
|
if err := ioutil.WriteFile(additionsFile, buffer.Bytes(), os.ModePerm); err != nil {
|
||||||
return nil, errors.Wrap(err, "could not write new additions file")
|
return nil, errors.Wrap(err, "could not write new additions file")
|
||||||
}
|
}
|
||||||
return results, err
|
return results, err
|
||||||
|
@ -362,8 +357,7 @@ func (r *Runner) compareAndWriteTemplates(z *zip.Reader) (*templateUpdateResults
|
||||||
}
|
}
|
||||||
results.totalCount++
|
results.totalCount++
|
||||||
templateDirectory := filepath.Join(r.templatesConfig.TemplatesDirectory, finalPath)
|
templateDirectory := filepath.Join(r.templatesConfig.TemplatesDirectory, finalPath)
|
||||||
err := os.MkdirAll(templateDirectory, os.ModePerm)
|
if err := os.MkdirAll(templateDirectory, os.ModePerm); err != nil {
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("failed to create template folder %s : %s", templateDirectory, err)
|
return nil, fmt.Errorf("failed to create template folder %s : %s", templateDirectory, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -387,8 +381,7 @@ func (r *Runner) compareAndWriteTemplates(z *zip.Reader) (*templateUpdateResults
|
||||||
hasher := md5.New()
|
hasher := md5.New()
|
||||||
|
|
||||||
// Save file and also read into hasher for md5
|
// Save file and also read into hasher for md5
|
||||||
_, err = io.Copy(f, io.TeeReader(reader, hasher))
|
if _, err := io.Copy(f, io.TeeReader(reader, hasher)); err != nil {
|
||||||
if err != nil {
|
|
||||||
f.Close()
|
f.Close()
|
||||||
return nil, fmt.Errorf("could not write template file: %s", err)
|
return nil, fmt.Errorf("could not write template file: %s", err)
|
||||||
}
|
}
|
||||||
|
@ -545,8 +538,7 @@ func (r *Runner) githubFetchLatestTagRepo(repo string) (string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var tags []githubTagData
|
var tags []githubTagData
|
||||||
err = json.Unmarshal(body, &tags)
|
if err := json.Unmarshal(body, &tags); err != nil {
|
||||||
if err != nil {
|
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
if len(tags) == 0 {
|
if len(tags) == 0 {
|
||||||
|
|
|
@ -55,8 +55,7 @@ func ReadConfiguration() (*Config, error) {
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
|
|
||||||
config := &Config{}
|
config := &Config{}
|
||||||
err = jsoniter.NewDecoder(file).Decode(config)
|
if err := jsoniter.NewDecoder(file).Decode(config); err != nil {
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return config, nil
|
return config, nil
|
||||||
|
|
|
@ -113,18 +113,14 @@ var functions = map[string]govaluate.ExpressionFunction{
|
||||||
},
|
},
|
||||||
"sha256": func(args ...interface{}) (interface{}, error) {
|
"sha256": func(args ...interface{}) (interface{}, error) {
|
||||||
h := sha256.New()
|
h := sha256.New()
|
||||||
_, err := h.Write([]byte(types.ToString(args[0])))
|
if _, err := h.Write([]byte(types.ToString(args[0]))); err != nil {
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return hex.EncodeToString(h.Sum(nil)), nil
|
return hex.EncodeToString(h.Sum(nil)), nil
|
||||||
},
|
},
|
||||||
"sha1": func(args ...interface{}) (interface{}, error) {
|
"sha1": func(args ...interface{}) (interface{}, error) {
|
||||||
h := sha1.New()
|
h := sha1.New()
|
||||||
_, err := h.Write([]byte(types.ToString(args[0])))
|
if _, err := h.Write([]byte(types.ToString(args[0]))); err != nil {
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return hex.EncodeToString(h.Sum(nil)), nil
|
return hex.EncodeToString(h.Sum(nil)), nil
|
||||||
|
|
|
@ -84,9 +84,7 @@ func (e *Extractor) ExtractJSON(corpus string) map[string]struct{} {
|
||||||
|
|
||||||
var jsonObj interface{}
|
var jsonObj interface{}
|
||||||
|
|
||||||
err := json.Unmarshal([]byte(corpus), &jsonObj)
|
if err := json.Unmarshal([]byte(corpus), &jsonObj); err != nil {
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return results
|
return results
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,11 +20,10 @@ func newFileOutputWriter(file string) (*fileWriter, error) {
|
||||||
|
|
||||||
// WriteString writes an output to the underlying file
|
// WriteString writes an output to the underlying file
|
||||||
func (w *fileWriter) Write(data []byte) error {
|
func (w *fileWriter) Write(data []byte) error {
|
||||||
_, err := w.file.Write(data)
|
if _, err := w.file.Write(data); err != nil {
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_, err = w.file.Write([]byte("\n"))
|
_, err := w.file.Write([]byte("\n"))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,8 +107,7 @@ func ParseTemplate(templatePath string) (*templates.Template, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
template := &templates.Template{}
|
template := &templates.Template{}
|
||||||
err = yaml.Unmarshal(data, template)
|
if err := yaml.Unmarshal(data, template); err != nil {
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
parsedTemplatesCache.Store(templatePath, template, nil)
|
parsedTemplatesCache.Store(templatePath, template, nil)
|
||||||
|
|
|
@ -18,8 +18,7 @@ func hash(v interface{}) (string, error) {
|
||||||
|
|
||||||
sh := sha256.New()
|
sh := sha256.New()
|
||||||
|
|
||||||
_, err = io.WriteString(sh, string(data))
|
if _, err = io.WriteString(sh, string(data)); err != nil {
|
||||||
if err != nil {
|
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
return hex.EncodeToString(sh.Sum(nil)), nil
|
return hex.EncodeToString(sh.Sum(nil)), nil
|
||||||
|
@ -28,8 +27,7 @@ func hash(v interface{}) (string, error) {
|
||||||
func marshal(data interface{}) ([]byte, error) {
|
func marshal(data interface{}) ([]byte, error) {
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
enc := gob.NewEncoder(&b)
|
enc := gob.NewEncoder(&b)
|
||||||
err := enc.Encode(data)
|
if err := enc.Encode(data); err != nil {
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,8 +36,7 @@ func marshal(data interface{}) ([]byte, error) {
|
||||||
|
|
||||||
func unmarshal(data []byte, obj interface{}) error {
|
func unmarshal(data []byte, obj interface{}) error {
|
||||||
dec := gob.NewDecoder(bytes.NewBuffer(data))
|
dec := gob.NewDecoder(bytes.NewBuffer(data))
|
||||||
err := dec.Decode(obj)
|
if err := dec.Decode(obj); err != nil {
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,8 +44,7 @@ func (pf *ProjectFile) Get(req []byte) (*http.Response, error) {
|
||||||
|
|
||||||
var httprecord HTTPRecord
|
var httprecord HTTPRecord
|
||||||
httprecord.Response = newInternalResponse()
|
httprecord.Response = newInternalResponse()
|
||||||
err = unmarshal(data, &httprecord)
|
if err := unmarshal(data, &httprecord); err != nil {
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,8 +24,7 @@ func NewExecuter(requests []protocols.Request, options *protocols.ExecuterOption
|
||||||
// Compile compiles the execution generators preparing any requests possible.
|
// Compile compiles the execution generators preparing any requests possible.
|
||||||
func (e *Executer) Compile() error {
|
func (e *Executer) Compile() error {
|
||||||
for _, request := range e.requests {
|
for _, request := range e.requests {
|
||||||
err := request.Compile(e.options)
|
if err := request.Compile(e.options); err != nil {
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,8 +71,7 @@ func (r *Request) ExecuteWithResults(input string, metadata /*TODO review unused
|
||||||
|
|
||||||
// isURL tests a string to determine if it is a well-structured url or not.
|
// isURL tests a string to determine if it is a well-structured url or not.
|
||||||
func isURL(toTest string) bool {
|
func isURL(toTest string) bool {
|
||||||
_, err := url.ParseRequestURI(toTest)
|
if _, err := url.ParseRequestURI(toTest); err != nil {
|
||||||
if err != nil {
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
u, err := url.Parse(toTest)
|
u, err := url.Parse(toTest)
|
||||||
|
|
|
@ -18,8 +18,7 @@ func (r *Request) getInputPaths(target string, callback func(string)) error {
|
||||||
|
|
||||||
// Template input includes a wildcard
|
// Template input includes a wildcard
|
||||||
if strings.Contains(target, "*") && !r.NoRecursive {
|
if strings.Contains(target, "*") && !r.NoRecursive {
|
||||||
err := r.findGlobPathMatches(target, processed, callback)
|
if err := r.findGlobPathMatches(target, processed, callback); err != nil {
|
||||||
if err != nil {
|
|
||||||
return errors.Wrap(err, "could not find glob matches")
|
return errors.Wrap(err, "could not find glob matches")
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -38,8 +37,7 @@ func (r *Request) getInputPaths(target string, callback func(string)) error {
|
||||||
}
|
}
|
||||||
// Recursively walk down the Templates directory and run all
|
// Recursively walk down the Templates directory and run all
|
||||||
// the template file checks
|
// the template file checks
|
||||||
err = r.findDirectoryMatches(target, processed, callback)
|
if err := r.findDirectoryMatches(target, processed, callback); err != nil {
|
||||||
if err != nil {
|
|
||||||
return errors.Wrap(err, "could not find directory matches")
|
return errors.Wrap(err, "could not find directory matches")
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -37,18 +37,18 @@ func (i *Instance) Run(baseURL *url.URL, actions []*Action, timeout time.Duratio
|
||||||
}
|
}
|
||||||
createdPage.router = router
|
createdPage.router = router
|
||||||
|
|
||||||
err = page.SetViewport(&proto.EmulationSetDeviceMetricsOverride{Viewport: &proto.PageViewport{
|
if err := page.SetViewport(&proto.EmulationSetDeviceMetricsOverride{Viewport: &proto.PageViewport{
|
||||||
Scale: 1,
|
Scale: 1,
|
||||||
Width: float64(1920),
|
Width: float64(1920),
|
||||||
Height: float64(1080),
|
Height: float64(1080),
|
||||||
}})
|
}}); err != nil {
|
||||||
if err != nil {
|
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
_, err = page.SetExtraHeaders([]string{"Accept-Language", "en, en-GB, en-us;"})
|
|
||||||
if err != nil {
|
if _, err := page.SetExtraHeaders([]string{"Accept-Language", "en, en-GB, en-us;"}); err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
go router.Run()
|
go router.Run()
|
||||||
data, err := createdPage.ExecuteActions(baseURL, actions)
|
data, err := createdPage.ExecuteActions(baseURL, actions)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -176,8 +176,7 @@ func (p *Page) NavigateURL(action *Action, out map[string]string, parsed *url.UR
|
||||||
values["BaseURL"] = parsedString
|
values["BaseURL"] = parsedString
|
||||||
|
|
||||||
final := fasttemplate.ExecuteStringStd(URL, "{{", "}}", values)
|
final := fasttemplate.ExecuteStringStd(URL, "{{", "}}", values)
|
||||||
err := p.page.Navigate(final)
|
if err := p.page.Navigate(final); err != nil {
|
||||||
if err != nil {
|
|
||||||
return errors.Wrap(err, "could not navigate")
|
return errors.Wrap(err, "could not navigate")
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -418,8 +418,7 @@ func (r *Request) executeRequest(reqURL string, request *generatedRequest, previ
|
||||||
|
|
||||||
// if nuclei-project is enabled store the response if not previously done
|
// if nuclei-project is enabled store the response if not previously done
|
||||||
if r.options.ProjectFile != nil && !fromcache {
|
if r.options.ProjectFile != nil && !fromcache {
|
||||||
err := r.options.ProjectFile.Set(dumpedRequest, resp, data)
|
if err := r.options.ProjectFile.Set(dumpedRequest, resp, data); err != nil {
|
||||||
if err != nil {
|
|
||||||
return errors.Wrap(err, "could not store in project file")
|
return errors.Wrap(err, "could not store in project file")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,8 +38,7 @@ func (r *Request) ExecuteWithResults(input string, metadata /*TODO review unused
|
||||||
actualAddress = net.JoinHostPort(actualAddress, kv.port)
|
actualAddress = net.JoinHostPort(actualAddress, kv.port)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = r.executeAddress(actualAddress, address, input, kv.tls, previous, callback)
|
if err := r.executeAddress(actualAddress, address, input, kv.tls, previous, callback); err != nil {
|
||||||
if err != nil {
|
|
||||||
gologger.Verbose().Label("ERR").Msgf("Could not make network request for %s: %s\n", actualAddress, err)
|
gologger.Verbose().Label("ERR").Msgf("Could not make network request for %s: %s\n", actualAddress, err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -138,8 +137,7 @@ func (r *Request) executeRequestWithPayloads(actualAddress, address, input strin
|
||||||
}
|
}
|
||||||
reqBuilder.Write(finalData)
|
reqBuilder.Write(finalData)
|
||||||
|
|
||||||
_, err = conn.Write(finalData)
|
if _, err := conn.Write(finalData); err != nil {
|
||||||
if err != nil {
|
|
||||||
r.options.Output.Request(r.options.TemplateID, address, "network", err)
|
r.options.Output.Request(r.options.TemplateID, address, "network", err)
|
||||||
r.options.Progress.IncrementFailedRequestsBy(1)
|
r.options.Progress.IncrementFailedRequestsBy(1)
|
||||||
return errors.Wrap(err, "could not write request to server")
|
return errors.Wrap(err, "could not write request to server")
|
||||||
|
|
|
@ -17,8 +17,7 @@ func (r *Request) getInputPaths(target string, callback func(string)) error {
|
||||||
|
|
||||||
// Template input includes a wildcard
|
// Template input includes a wildcard
|
||||||
if strings.Contains(target, "*") {
|
if strings.Contains(target, "*") {
|
||||||
err := r.findGlobPathMatches(target, processed, callback)
|
if err := r.findGlobPathMatches(target, processed, callback); err != nil {
|
||||||
if err != nil {
|
|
||||||
return errors.Wrap(err, "could not find glob matches")
|
return errors.Wrap(err, "could not find glob matches")
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -35,8 +34,7 @@ func (r *Request) getInputPaths(target string, callback func(string)) error {
|
||||||
|
|
||||||
// Recursively walk down the Templates directory and run all
|
// Recursively walk down the Templates directory and run all
|
||||||
// the template file checks
|
// the template file checks
|
||||||
err = r.findDirectoryMatches(target, processed, callback)
|
if err := r.findDirectoryMatches(target, processed, callback); err != nil {
|
||||||
if err != nil {
|
|
||||||
return errors.Wrap(err, "could not find directory matches")
|
return errors.Wrap(err, "could not find directory matches")
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -55,8 +55,7 @@ func (i *Exporter) Export(event *output.ResultEvent) error {
|
||||||
dataBuilder.WriteString(description)
|
dataBuilder.WriteString(description)
|
||||||
data := dataBuilder.Bytes()
|
data := dataBuilder.Bytes()
|
||||||
|
|
||||||
err := ioutil.WriteFile(filepath.Join(i.directory, finalFilename), data, 0644)
|
return ioutil.WriteFile(filepath.Join(i.directory, finalFilename), data, 0644)
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close closes the exporter after operation
|
// Close closes the exporter after operation
|
||||||
|
|
|
@ -56,8 +56,7 @@ func Parse(filePath string, preprocessor Preprocessor, options protocols.Execute
|
||||||
data = preprocessor.Process(data)
|
data = preprocessor.Process(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = yaml.UnmarshalStrict(data, template)
|
if err := yaml.UnmarshalStrict(data, template); err != nil {
|
||||||
if err != nil {
|
|
||||||
if !fieldErrorRegexp.MatchString(err.Error()) {
|
if !fieldErrorRegexp.MatchString(err.Error()) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -141,8 +140,7 @@ func Parse(filePath string, preprocessor Preprocessor, options protocols.Execute
|
||||||
template.Executer = executer.NewExecuter(requests, &options)
|
template.Executer = executer.NewExecuter(requests, &options)
|
||||||
}
|
}
|
||||||
if template.Executer != nil {
|
if template.Executer != nil {
|
||||||
err := template.Executer.Compile()
|
if err := template.Executer.Compile(); err != nil {
|
||||||
if err != nil {
|
|
||||||
return nil, errors.Wrap(err, "could not compile request")
|
return nil, errors.Wrap(err, "could not compile request")
|
||||||
}
|
}
|
||||||
template.TotalRequests += template.Executer.Requests()
|
template.TotalRequests += template.Executer.Requests()
|
||||||
|
|
|
@ -15,8 +15,7 @@ func (w *Workflow) RunWorkflow(input string) bool {
|
||||||
for _, template := range w.Workflows {
|
for _, template := range w.Workflows {
|
||||||
swg.Add()
|
swg.Add()
|
||||||
func(template *WorkflowTemplate) {
|
func(template *WorkflowTemplate) {
|
||||||
err := w.runWorkflowStep(template, input, results, &swg)
|
if err := w.runWorkflowStep(template, input, results, &swg); err != nil {
|
||||||
if err != nil {
|
|
||||||
gologger.Warning().Msgf("[%s] Could not execute workflow step: %s\n", template.Template, err)
|
gologger.Warning().Msgf("[%s] Could not execute workflow step: %s\n", template.Template, err)
|
||||||
}
|
}
|
||||||
swg.Done()
|
swg.Done()
|
||||||
|
@ -116,8 +115,7 @@ func (w *Workflow) runWorkflowStep(template *WorkflowTemplate, input string, res
|
||||||
swg.Add()
|
swg.Add()
|
||||||
|
|
||||||
go func(template *WorkflowTemplate) {
|
go func(template *WorkflowTemplate) {
|
||||||
err := w.runWorkflowStep(template, input, results, swg)
|
if err := w.runWorkflowStep(template, input, results, swg); err != nil {
|
||||||
if err != nil {
|
|
||||||
gologger.Warning().Msgf("[%s] Could not execute workflow step: %s\n", template.Template, err)
|
gologger.Warning().Msgf("[%s] Could not execute workflow step: %s\n", template.Template, err)
|
||||||
}
|
}
|
||||||
swg.Done()
|
swg.Done()
|
||||||
|
|
Loading…
Reference in New Issue