From ff1df870aa15068c47d9f127f345f0e04974c686 Mon Sep 17 00:00:00 2001 From: Aykhan Shahsuvarov Date: Tue, 3 Sep 2024 02:26:32 +0400 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20add=20yes=20flag=20to=20CLIConfigRe?= =?UTF-8?q?ader?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.go | 2 ++ main.go | 19 +++++++++++-------- readers/cli.go | 2 ++ requests/requests.go | 13 ++++++++----- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/config/config.go b/config/config.go index 93c033f..a75b576 100644 --- a/config/config.go +++ b/config/config.go @@ -35,6 +35,7 @@ type RequestConfig struct { Cookies map[string]string Proxies []Proxy Body string + Yes bool } func (config *RequestConfig) Print() { @@ -152,6 +153,7 @@ func (config *JSONConfig) MergeConfigs(newConfig *JSONConfig) { type CLIConfig struct { Config + Yes bool `json:"yes" validate:"omitempty"` ConfigFile string `validation_name:"config-file" validate:"omitempty,filepath"` } diff --git a/main.go b/main.go index 9482c1a..d4b1991 100644 --- a/main.go +++ b/main.go @@ -68,7 +68,7 @@ func main() { if err != nil { utils.PrintErrAndExit(err) } - dodoConf := &config.RequestConfig{ + requestConf := &config.RequestConfig{ Method: conf.Method, URL: parsedURL, Timeout: time.Duration(conf.Timeout) * time.Millisecond, @@ -79,13 +79,16 @@ func main() { Cookies: jsonConf.Cookies, Proxies: jsonConf.Proxies, Body: jsonConf.Body, + Yes: cliConf.Yes, } - dodoConf.Print() - response := readers.CLIYesOrNoReader("Do you want to continue?", true) - if response { - utils.PrintlnC(utils.Colors.Green, "Starting Dodo\n") - } else { - utils.PrintAndExit("Exiting...") + requestConf.Print() + if !cliConf.Yes { + response := readers.CLIYesOrNoReader("Do you want to continue?", true) + if response { + utils.PrintlnC(utils.Colors.Green, "Starting Dodo\n") + } else { + utils.PrintAndExit("Exiting...") + } } ctx, cancel := context.WithCancel(context.Background()) @@ -96,7 +99,7 @@ func main() { cancel() }() - responses, err := requests.Run(ctx, dodoConf) + responses, err := requests.Run(ctx, requestConf) if err != nil { if customerrors.Is(err, customerrors.ErrInterrupt) { utils.PrintlnC(utils.Colors.Yellow, err.Error()) diff --git a/readers/cli.go b/readers/cli.go index 542525b..82ed597 100644 --- a/readers/cli.go +++ b/readers/cli.go @@ -14,6 +14,7 @@ func CLIConfigReader() (*config.CLIConfig, error) { var ( returnNil = false cliConfig = &config.CLIConfig{} + // y bool dodosCount int requestCount int timeout int @@ -45,6 +46,7 @@ func CLIConfigReader() (*config.CLIConfig, error) { ) rootCmd.Flags().StringVarP(&cliConfig.ConfigFile, "config-file", "c", "", "Path to the config file") + rootCmd.Flags().BoolVarP(&cliConfig.Yes, "yes", "y", false, "Answer yes to all questions") rootCmd.Flags().StringVarP(&cliConfig.Method, "method", "m", "", fmt.Sprintf("HTTP Method (default %s)", config.DefaultMethod)) rootCmd.Flags().StringVarP(&cliConfig.URL, "url", "u", "", "URL for stress testing") rootCmd.Flags().IntVarP(&dodosCount, "dodos-count", "d", config.DefaultDodosCount, "Number of dodos(threads)") diff --git a/requests/requests.go b/requests/requests.go index 46976b2..83c1d40 100644 --- a/requests/requests.go +++ b/requests/requests.go @@ -110,6 +110,7 @@ func Run(ctx context.Context, requestConfig *config.RequestConfig) (Responses, e requestConfig.Timeout, requestConfig.Proxies, requestConfig.GetValidDodosCountForProxies(), + requestConfig.Yes, requestConfig.URL, ) if clientDoFunc == nil { @@ -260,6 +261,7 @@ func getClientDoFunc( timeout time.Duration, proxies []config.Proxy, dodosCount int, + yes bool, URL *url.URL, ) ClientDoFunc { isTLS := URL.Scheme == "https" @@ -276,7 +278,7 @@ func getClientDoFunc( if activeProxyClientsCount == 0 { yesOrNoDefault = false yesOrNoMessage = utils.Colored( - utils.Colors.Red, + utils.Colors.Yellow, "No active proxies found. Do you want to continue?", ) } else { @@ -288,10 +290,11 @@ func getClientDoFunc( ), ) } - fmt.Println() - proceed := readers.CLIYesOrNoReader(yesOrNoMessage, yesOrNoDefault) - if !proceed { - utils.PrintAndExit("Exiting...") + if !yes { + response := readers.CLIYesOrNoReader("\n" + yesOrNoMessage, yesOrNoDefault) + if !response { + utils.PrintAndExit("Exiting...") + } } fmt.Println() if activeProxyClientsCount == 0 {