Files
old-kiviscraplib/config/config.go
2020-05-22 16:08:59 +02:00

115 lines
3.7 KiB
Go

package config
import (
"github.com/joho/godotenv"
"gitlab.com/saburly/kiviscraplib/structures"
"log"
"os"
"strconv"
"strings"
)
var WebServerConfig structures.WebServerConfig
var WorkerServerConfig structures.WorkerServerConfig
var ClientConfig structures.ClientConfig
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")
}
}
func generateClientConfigObject() {
ClientConfig.ConnectionsCount = getInt("CLIENT_CONNECTIONS_COUNT")
ClientConfig.ConnectionTimeout = getInt("CLIENT_CONNECTION_TIMEOUT")
ClientConfig.WaitingTimeout = getInt("CLIENT_WAITING_TIMEOUT")
ClientConfig.WorkerServerAddress = getString("WORKER_SERVER_ADDRESS")
ClientConfig.RequestMessagePrefix = getString("REQUEST_MESSAGE_PREFIX")
ClientConfig.ProxyListBaseURL = getString("PROXY_LIST_BASE_URL")
ClientConfig.ProxyListReloadInterval = getInt("PROXY_LIST_RELOAD_INTERVAL")
ClientConfig.ProxyListTimeout = getInt("PROXY_LIST_TIMEOUT")
ClientConfig.FetchTimeout = getInt("FETCH_TIMEOUT")
customSOCKS5ProxyListString := getString("CUSTOM_SOCKS5_PROXY_LIST")
customSOCKS5ProxyList := strings.Split(customSOCKS5ProxyListString, ",")
for i := range customSOCKS5ProxyList {
proxy := structures.ProxyServer{Type: "socks5", Address: strings.TrimSpace(customSOCKS5ProxyList[i])}
if len(proxy.Address) > 0 {
ClientConfig.CustomSOCKS5ProxyList = append(ClientConfig.CustomSOCKS5ProxyList, proxy)
}
}
}
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["CLIENT_WAITING_TIMEOUT"] = "60"
defaultClientConfigValues["WORKER_SERVER_ADDRESS"] = "127.0.0.1:1338"
defaultClientConfigValues["REQUEST_MESSAGE_PREFIX"] = "URL "
defaultClientConfigValues["PROXY_LIST_BASE_URL"] = ""
defaultClientConfigValues["CUSTOM_SOCKS5_PROXY_LIST"] = ""
defaultClientConfigValues["PROXY_LIST_RELOAD_INTERVAL"] = "30"
defaultClientConfigValues["PROXY_LIST_TIMEOUT"] = "10"
defaultClientConfigValues["FETCH_TIMEOUT"] = "60"
}
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 = defaultClientConfigValues[key]
}
numericalValue, err := strconv.Atoi(value)
if err != nil {
log.Fatalf("Cannot convert ENV value for %s to the integer", key)
}
return numericalValue
}
func getString(key string) string {
value := os.Getenv(key)
if len(value) == 0 {
return defaultClientConfigValues[key]
}
return value
}