diff --git a/cli/cmd/dir.go b/cli/cmd/dir.go index a7404a4..7cbdd5d 100644 --- a/cli/cmd/dir.go +++ b/cli/cmd/dir.go @@ -64,38 +64,40 @@ func parseDirOptions() (*libgobuster.Options, *gobusterdir.OptionsDir, error) { if err != nil { return nil, nil, fmt.Errorf("invalid value for extensions: %w", err) } - - if plugin.Extensions != "" { - ret, err := helper.ParseExtensions(plugin.Extensions) - if err != nil { - return nil, nil, fmt.Errorf("invalid value for extensions: %w", err) - } - plugin.ExtensionsParsed = ret + ret, err := helper.ParseExtensions(plugin.Extensions) + if err != nil { + return nil, nil, fmt.Errorf("invalid value for extensions: %w", err) } + plugin.ExtensionsParsed = ret + // parse normal status codes + plugin.StatusCodes, err = cmdDir.Flags().GetString("status-codes") + if err != nil { + return nil, nil, fmt.Errorf("invalid value for status-codes: %w", err) + } + ret2, err := helper.ParseCommaSeparatedInt(plugin.StatusCodes) + if err != nil { + return nil, nil, fmt.Errorf("invalid value for status-codes: %w", err) + } + plugin.StatusCodesParsed = ret2 + + // blacklist will override the normal status codes plugin.StatusCodesBlacklist, err = cmdDir.Flags().GetString("status-codes-blacklist") if err != nil { return nil, nil, fmt.Errorf("invalid value for status-codes-blacklist: %w", err) } + ret3, err := helper.ParseCommaSeparatedInt(plugin.StatusCodesBlacklist) + if err != nil { + return nil, nil, fmt.Errorf("invalid value for status-codes-blacklist: %w", err) + } + plugin.StatusCodesBlacklistParsed = ret3 - // blacklist will override the normal status codes - if plugin.StatusCodesBlacklist != "" { - ret, err := helper.ParseCommaSeparatedInt(plugin.StatusCodesBlacklist) - if err != nil { - return nil, nil, fmt.Errorf("invalid value for status-codes-blacklist: %w", err) - } - plugin.StatusCodesBlacklistParsed = ret - } else { - // parse normal status codes - plugin.StatusCodes, err = cmdDir.Flags().GetString("status-codes") - if err != nil { - return nil, nil, fmt.Errorf("invalid value for status-codes: %w", err) - } - ret, err := helper.ParseCommaSeparatedInt(plugin.StatusCodes) - if err != nil { - return nil, nil, fmt.Errorf("invalid value for status-codes: %w", err) - } - plugin.StatusCodesParsed = ret + if plugin.StatusCodes != "" && plugin.StatusCodesBlacklist != "" { + return nil, nil, fmt.Errorf("status-codes and status-codes-blacklist are both set, pleaes set only one") + } + + if plugin.StatusCodes == "" && plugin.StatusCodesBlacklist == "" { + return nil, nil, fmt.Errorf("status-codes and status-codes-blacklist are both not set, pleaes set one") } plugin.UseSlash, err = cmdDir.Flags().GetBool("add-slash") diff --git a/cli/cmd/fuzz.go b/cli/cmd/fuzz.go index 37ce185..3b26c2c 100644 --- a/cli/cmd/fuzz.go +++ b/cli/cmd/fuzz.go @@ -60,19 +60,16 @@ func parseFuzzOptions() (*libgobuster.Options, *gobusterfuzz.OptionsFuzz, error) plugin.Headers = httpOpts.Headers plugin.Method = httpOpts.Method + // blacklist will override the normal status codes plugin.ExcludedStatusCodes, err = cmdFuzz.Flags().GetString("excludestatuscodes") if err != nil { return nil, nil, fmt.Errorf("invalid value for excludestatuscodes: %w", err) } - - // blacklist will override the normal status codes - if plugin.ExcludedStatusCodes != "" { - ret, err := helper.ParseCommaSeparatedInt(plugin.ExcludedStatusCodes) - if err != nil { - return nil, nil, fmt.Errorf("invalid value for excludestatuscodes: %w", err) - } - plugin.ExcludedStatusCodesParsed = ret + ret, err := helper.ParseCommaSeparatedInt(plugin.ExcludedStatusCodes) + if err != nil { + return nil, nil, fmt.Errorf("invalid value for excludestatuscodes: %w", err) } + plugin.ExcludedStatusCodesParsed = ret plugin.ExcludeLength, err = cmdFuzz.Flags().GetIntSlice("exclude-length") if err != nil { diff --git a/go.mod b/go.mod index 64f1df0..346d127 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/OJ/gobuster/v3 require ( github.com/google/uuid v1.2.0 github.com/spf13/cobra v1.1.3 - golang.org/x/sys v0.0.0-20210223212115-eede4237b368 // indirect + golang.org/x/sys v0.0.0-20210301091718-77cc2087c03b // indirect golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d ) diff --git a/go.sum b/go.sum index 8c86b3c..c6cf1aa 100644 --- a/go.sum +++ b/go.sum @@ -228,8 +228,8 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210223212115-eede4237b368 h1:fDE3p0qf2V1co1vfj3/o87Ps8Hq6QTGNxJ5Xe7xSp80= -golang.org/x/sys v0.0.0-20210223212115-eede4237b368/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210301091718-77cc2087c03b h1:kHlr0tATeLRMEiZJu5CknOw/E8V6h69sXXQFGoPtjcc= +golang.org/x/sys v0.0.0-20210301091718-77cc2087c03b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/helper/helper.go b/helper/helper.go index 40f1caf..1efac08 100644 --- a/helper/helper.go +++ b/helper/helper.go @@ -11,7 +11,7 @@ import ( // ParseExtensions parses the extensions provided as a comma separated list func ParseExtensions(extensions string) (libgobuster.StringSet, error) { if extensions == "" { - return libgobuster.StringSet{}, fmt.Errorf("invalid extension string provided") + return libgobuster.StringSet{}, nil } ret := libgobuster.NewStringSet() @@ -26,7 +26,7 @@ func ParseExtensions(extensions string) (libgobuster.StringSet, error) { // ParseCommaSeparatedInt parses the status codes provided as a comma separated list func ParseCommaSeparatedInt(inputString string) (libgobuster.IntSet, error) { if inputString == "" { - return libgobuster.IntSet{}, fmt.Errorf("invalid string provided") + return libgobuster.IntSet{}, nil } ret := libgobuster.NewIntSet()