package config import ( "net/url" "time" "github.com/aykhans/dodo/pkg/types" "github.com/aykhans/dodo/pkg/utils" ) const VERSION string = "1.0.0" var Defaults = struct { UserAgent string Method string RequestTimeout time.Duration DodosCount uint Yes bool SkipVerify bool }{ UserAgent: "dodo/" + VERSION, Method: "GET", RequestTimeout: time.Second * 10, DodosCount: 1, Yes: false, SkipVerify: false, } var SupportedProxySchemes []string = []string{"http", "socks5", "socks5h"} type Config struct { Files []types.ConfigFile Method *string URL *url.URL Timeout *time.Duration DodosCount *uint RequestCount *uint Duration *time.Duration Yes *bool SkipVerify *bool Params types.Params Headers types.Headers Cookies types.Cookies Bodies types.Bodies Proxies types.Proxies } func NewConfig() *Config { return &Config{} } func (config *Config) MergeConfig(newConfig *Config) { config.Files = append(config.Files, newConfig.Files...) if newConfig.Method != nil { config.Method = newConfig.Method } if newConfig.URL != nil { config.URL = newConfig.URL } if newConfig.Timeout != nil { config.Timeout = newConfig.Timeout } if newConfig.DodosCount != nil { config.DodosCount = newConfig.DodosCount } if newConfig.RequestCount != nil { config.RequestCount = newConfig.RequestCount } if newConfig.Duration != nil { config.Duration = newConfig.Duration } if newConfig.Yes != nil { config.Yes = newConfig.Yes } if newConfig.SkipVerify != nil { config.SkipVerify = newConfig.SkipVerify } if len(newConfig.Params) != 0 { config.Params = newConfig.Params } if len(newConfig.Headers) != 0 { config.Headers = newConfig.Headers } if len(newConfig.Cookies) != 0 { config.Cookies = newConfig.Cookies } if len(newConfig.Bodies) != 0 { config.Bodies = newConfig.Bodies } if len(newConfig.Proxies) != 0 { config.Proxies = newConfig.Proxies } } func (config *Config) SetDefaults() { if config.Method == nil { config.Method = utils.ToPtr(Defaults.Method) } if config.Timeout == nil { config.Timeout = &Defaults.RequestTimeout } if config.DodosCount == nil { config.DodosCount = utils.ToPtr(Defaults.DodosCount) } if config.Yes == nil { config.Yes = utils.ToPtr(Defaults.Yes) } if config.SkipVerify == nil { config.SkipVerify = utils.ToPtr(Defaults.SkipVerify) } if !config.Headers.Has("User-Agent") { config.Headers = append(config.Headers, types.Header{Key: "User-Agent", Value: []string{Defaults.UserAgent}}) } }