mirror of https://github.com/daffainfo/nuclei.git
Allow auth option to parse string input as api key (#4750)
parent
0bd447834c
commit
95f8bd76ad
|
@ -13,6 +13,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/projectdiscovery/utils/auth/pdcp"
|
"github.com/projectdiscovery/utils/auth/pdcp"
|
||||||
|
"github.com/projectdiscovery/utils/env"
|
||||||
_ "github.com/projectdiscovery/utils/pprof"
|
_ "github.com/projectdiscovery/utils/pprof"
|
||||||
|
|
||||||
"github.com/projectdiscovery/goflags"
|
"github.com/projectdiscovery/goflags"
|
||||||
|
@ -180,7 +181,7 @@ func readConfig() *goflags.FlagSet {
|
||||||
|
|
||||||
// when true updates nuclei binary to latest version
|
// when true updates nuclei binary to latest version
|
||||||
var updateNucleiBinary bool
|
var updateNucleiBinary bool
|
||||||
var pdcpauth bool
|
var pdcpauth string
|
||||||
|
|
||||||
flagSet := goflags.NewFlagSet()
|
flagSet := goflags.NewFlagSet()
|
||||||
flagSet.CaseSensitive = true
|
flagSet.CaseSensitive = true
|
||||||
|
@ -386,7 +387,7 @@ on extensive configurability, massive extensibility and ease of use.`)
|
||||||
)
|
)
|
||||||
|
|
||||||
flagSet.CreateGroup("cloud", "Cloud",
|
flagSet.CreateGroup("cloud", "Cloud",
|
||||||
flagSet.BoolVar(&pdcpauth, "auth", false, "configure projectdiscovery cloud (pdcp) api key"),
|
flagSet.DynamicVar(&pdcpauth, "auth", "true", "configure projectdiscovery cloud (pdcp) api key"),
|
||||||
flagSet.BoolVarP(&options.EnableCloudUpload, "cloud-upload", "cup", false, "upload scan results to pdcp dashboard"),
|
flagSet.BoolVarP(&options.EnableCloudUpload, "cloud-upload", "cup", false, "upload scan results to pdcp dashboard"),
|
||||||
flagSet.StringVarP(&options.ScanID, "scan-id", "sid", "", "upload scan results to given scan id"),
|
flagSet.StringVarP(&options.ScanID, "scan-id", "sid", "", "upload scan results to given scan id"),
|
||||||
)
|
)
|
||||||
|
@ -417,8 +418,17 @@ Additional documentation is available at: https://docs.nuclei.sh/getting-started
|
||||||
goflags.DisableAutoConfigMigration = true
|
goflags.DisableAutoConfigMigration = true
|
||||||
_ = flagSet.Parse()
|
_ = flagSet.Parse()
|
||||||
|
|
||||||
if pdcpauth {
|
// api key hierarchy: cli flag > env var > .pdcp/credential file
|
||||||
|
if pdcpauth == "true" {
|
||||||
runner.AuthWithPDCP()
|
runner.AuthWithPDCP()
|
||||||
|
} else if len(pdcpauth) == 36 {
|
||||||
|
ph := pdcp.PDCPCredHandler{}
|
||||||
|
if _, err := ph.GetCreds(); err == pdcp.ErrNoCreds {
|
||||||
|
apiServer := env.GetEnvOrDefault("PDCP_API_SERVER", pdcp.DefaultApiServer)
|
||||||
|
if validatedCreds, err := ph.ValidateAPIKey(pdcpauth, apiServer, config.BinaryName); err == nil {
|
||||||
|
_ = ph.SaveCreds(validatedCreds)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gologger.DefaultLogger.SetTimestamp(options.Timestamp, levels.LevelDebug)
|
gologger.DefaultLogger.SetTimestamp(options.Timestamp, levels.LevelDebug)
|
||||||
|
|
Loading…
Reference in New Issue