Files
rimgo/utils/config.go
2026-01-16 22:55:45 +01:00

59 lines
1.5 KiB
Go

package utils
import (
"os"
"time"
)
type config struct {
Port string
Addr string
ImgurId string
ProtocolDetection bool
Secure bool
FiberPrefork bool
ForceWebp bool
ImageCache bool
CleanupInterval time.Duration
CacheDir string
Privacy map[string]interface{}
}
var Config config
func envString(name, def string) string {
env := os.Getenv(name)
if env != "" {
return env
}
return def
}
func envBool(name string) bool {
return os.Getenv(name) == "true" || os.Getenv(name) == "1"
}
func LoadConfig() {
Config = config{
Port: envString("PORT", "3000"),
Addr: envString("ADDR", "0.0.0.0"),
ImgurId: envString("IMGUR_CLIENT_ID", "546c25a59c58ad7"),
ProtocolDetection: envBool("PROTOCOL_DETECTION"),
Secure: envBool("SECURE"),
FiberPrefork: envBool("FIBER_PREFORK"),
ForceWebp: envBool("FORCE_WEBP"),
Privacy: map[string]interface{}{
"set": os.Getenv("PRIVACY_NOT_COLLECTED") != "",
"policy": os.Getenv("PRIVACY_POLICY"),
"message": os.Getenv("PRIVACY_MESSAGE"),
"country": os.Getenv("PRIVACY_COUNTRY"),
"provider": os.Getenv("PRIVACY_PROVIDER"),
"cloudflare": envBool("PRIVACY_CLOUDFLARE"),
"not_collected": envBool("PRIVACY_NOT_COLLECTED"),
"ip": envBool("PRIVACY_IP"),
"url": envBool("PRIVACY_URL"),
"device": envBool("PRIVACY_DEVICE"),
"diagnostics": envBool("PRIVACY_DIAGNOSTICS"),
},
}
}