diff --git a/config/config.go b/config/config.go index cb6ac98..b900027 100644 --- a/config/config.go +++ b/config/config.go @@ -8,17 +8,32 @@ import ( "strconv" ) +var WebServerConfig structures.WebServerConfig +var WorkerServerConfig structures.WorkerServerConfig var ClientConfig structures.ClientConfig -var defaultValues = make(map[string]string) -func InitConfig() { +var defaultClientConfigValues = make(map[string]string) +var defaultServerConfigValues = make(map[string]string) + +func InitServerConfig() { + loadEnvVariables() + + initServerConfigDefaultValues() + generateServerConfigObject() +} + +func InitClientConfig() { + loadEnvVariables() + + initClientConfigDefaultValues() + generateClientConfigObject() +} + +func loadEnvVariables() { err := godotenv.Load() if err != nil { log.Fatal("Unable to load ENV variables") } - - initDefaultValues() - generateClientConfigObject() } func generateClientConfigObject() { @@ -29,18 +44,38 @@ func generateClientConfigObject() { ClientConfig.ProxyListBaseURL = getString("PROXY_LIST_BASE_URL") } -func initDefaultValues() { - defaultValues["CLIENT_CONNECTIONS_COUNT"] = "5" - defaultValues["CLIENT_CONNECTION_TIMEOUT"] = "2" - defaultValues["WORKER_SERVER_ADDRESS"] = "127.0.0.1:1338" - defaultValues["REQUEST_MESSAGE_PREFIX"] = "URL " - defaultValues["PROXY_LIST_BASE_URL"] = "https://www.proxy-list.download/api/v1/get?type=" +func generateServerConfigObject() { + WebServerConfig.Address = getString("WEB_SERVER_ADDRESS") + WebServerConfig.APIKey = getString("WEB_SERVER_API_KEY") + WebServerConfig.Timeout = getInt("WEB_SERVER_TIMEOUT") + + WorkerServerConfig.Address = getString("WORKER_SERVER_ADDRESS") + WorkerServerConfig.WorkersCount = getInt("WORKER_SERVER_WORKERS_COUNT") + WorkerServerConfig.RequestMessagePrefix = getString("WORKER_SERVER_REQUEST_MESSAGE_PREFIX") +} + +func initClientConfigDefaultValues() { + defaultClientConfigValues["CLIENT_CONNECTIONS_COUNT"] = "5" + defaultClientConfigValues["CLIENT_CONNECTION_TIMEOUT"] = "2" + defaultClientConfigValues["WORKER_SERVER_ADDRESS"] = "127.0.0.1:1338" + defaultClientConfigValues["REQUEST_MESSAGE_PREFIX"] = "URL " + defaultClientConfigValues["PROXY_LIST_BASE_URL"] = "https://www.proxy-list.download/api/v1/get?type=" +} + +func initServerConfigDefaultValues() { + defaultServerConfigValues["WEB_SERVER_ADDRESS"] = "127.0.0.1:1337" + defaultServerConfigValues["WEB_SERVER_API_KEY"] = "b8be5a3b639d465039e8fbe7582270a7" + defaultServerConfigValues["WEB_SERVER_TIMEOUT"] = "100" + + defaultServerConfigValues["WORKER_SERVER_ADDRESS"] = "127.0.0.1:1338" + defaultServerConfigValues["WORKER_SERVER_WORKERS_COUNT"] = "50" + defaultServerConfigValues["WORKER_SERVER_REQUEST_MESSAGE_PREFIX"] = "URL " } func getInt(key string) int { value := os.Getenv(key) if len(value) == 0 { - value = defaultValues[key] + value = defaultClientConfigValues[key] } numericalValue, err := strconv.Atoi(value) @@ -53,7 +88,7 @@ func getInt(key string) int { func getString(key string) string { value := os.Getenv(key) if len(value) == 0 { - return defaultValues[key] + return defaultClientConfigValues[key] } return value } diff --git a/structures/structures.go b/structures/structures.go index d254e1e..17605a0 100644 --- a/structures/structures.go +++ b/structures/structures.go @@ -21,6 +21,18 @@ type ProxyServer struct { Address string } +type WebServerConfig struct { + Address string + APIKey string + Timeout int // In seconds +} + +type WorkerServerConfig struct { + Address string + WorkersCount int + RequestMessagePrefix string +} + type ClientConfig struct { ConnectionsCount int ConnectionTimeout int // In seconds