diff --git a/config.go b/config.go index e91ca62..cd0e08a 100644 --- a/config.go +++ b/config.go @@ -46,6 +46,7 @@ func SetOutputFunc(f OutputResultsFunc) { func init() { config.Multiple.ContinueOnError = true // set default for multiple value + config.Multiple.BreakOnSuccess = false // set default for multiple value } var config Config diff --git a/multiple.go b/multiple.go index f07993c..25cfcc4 100644 --- a/multiple.go +++ b/multiple.go @@ -6,6 +6,7 @@ import "errors" type MultipleCommand struct { ConfigFileName string `short:"c" long:"config-file" default:"-" description:"Config filename, use - for stdin"` ContinueOnError bool `long:"continue-on-error" description:"If proceeding protocols error, do not run following protocols (default: true)"` + BreakOnSuccess bool `long:"break-on-success" description:"If proceeding protocols succeed, do not run following protocols (default: false)"` } // Validate the options sent to MultipleCommand diff --git a/processing.go b/processing.go index 30859fc..a61c235 100644 --- a/processing.go +++ b/processing.go @@ -135,6 +135,9 @@ func grabTarget(input ScanTarget, m *Monitor) []byte { if res.Error != nil && !config.Multiple.ContinueOnError { break } + if res.Status == SCAN_SUCCESS && config.Multiple.BreakOnSuccess { + break + } } var ipstr string