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

71 lines
1.4 KiB
Go
Raw Normal View History

package config
import (
"log/slog"
"os"
"strconv"
)
var Version string
type App struct {
// general config
LogLevel string
// configuration for server
Prefork bool
Host string
Port int
ProxyHeader string
AllowOrigin string
// configuration for prober (client)
ServerEndpoint string
APIKey string
AcceptTor bool
TorSOCKS string
IPv6Capable bool
}
func init() {
if Version == "" {
Version = "v0.0.0-alpha.0.000000.dev"
}
}
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")
// 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")
app.IPv6Capable, _ = strconv.ParseBool(os.Getenv("IPV6_CAPABLE"))
}