xmr-remote-nodes/internal/config/app.go

61 lines
1.3 KiB
Go
Raw Normal View History

package config
import (
"log/slog"
"os"
"strconv"
)
type App struct {
// general config
LogLevel string
// configuration for server
Prefork bool
Host string
Port int
ProxyHeader string
AllowOrigin string
SecretKey string
// configuration for prober (client)
ServerEndpoint string
ApiKey string
AcceptTor bool
TorSocks string
}
var app = &App{}
func AppCfg() *App {
return app
}
// loads App configuration
func LoadApp() {
// general config
app.LogLevel = os.Getenv("LOG_LEVEL")
switch app.LogLevel {
case "DEBUG":
slog.SetLogLoggerLevel(slog.LevelDebug)
case "ERROR":
slog.SetLogLoggerLevel(slog.LevelError)
case "WARN":
slog.SetLogLoggerLevel(slog.LevelWarn)
default:
slog.SetLogLoggerLevel(slog.LevelInfo)
}
// server configuration
app.Host = os.Getenv("APP_HOST")
app.Port, _ = strconv.Atoi(os.Getenv("APP_PORT"))
app.Prefork, _ = strconv.ParseBool(os.Getenv("APP_PREFORK"))
app.ProxyHeader = os.Getenv("APP_PROXY_HEADER")
app.AllowOrigin = os.Getenv("APP_ALLOW_ORIGIN")
app.SecretKey = os.Getenv("SECRET_KEY")
// prober configuration
app.ServerEndpoint = os.Getenv("SERVER_ENDPOINT")
app.ApiKey = os.Getenv("API_KEY")
app.AcceptTor, _ = strconv.ParseBool(os.Getenv("ACCEPT_TOR"))
app.TorSocks = os.Getenv("TOR_SOCKS")
}