64 lines
2.3 KiB
Go
64 lines
2.3 KiB
Go
package config
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
"strconv"
|
|
)
|
|
|
|
type Config struct {
|
|
ServerAddr string
|
|
DatabaseURL string
|
|
OIDCIssuerURL string
|
|
OIDCRedirectURL string
|
|
OIDCClientID string
|
|
OIDCClientSecret string
|
|
JWTSecret string
|
|
NextcloudURL string
|
|
NextcloudUser string
|
|
NextcloudPass string
|
|
NextcloudBase string
|
|
AllowedOrigins string
|
|
AvatarCacheDir string
|
|
AvatarDownloadTimeoutSeconds int
|
|
AvatarDownloadRetries int
|
|
}
|
|
|
|
func Load() *Config {
|
|
cfg := &Config{
|
|
ServerAddr: getEnv("SERVER_ADDR", ":8080"),
|
|
DatabaseURL: os.Getenv("DATABASE_URL"),
|
|
OIDCIssuerURL: os.Getenv("OIDC_ISSUER_URL"),
|
|
OIDCRedirectURL: os.Getenv("OIDC_REDIRECT_URL"),
|
|
OIDCClientID: os.Getenv("OIDC_CLIENT_ID"),
|
|
OIDCClientSecret: os.Getenv("OIDC_CLIENT_SECRET"),
|
|
JWTSecret: os.Getenv("JWT_SECRET"),
|
|
NextcloudURL: os.Getenv("NEXTCLOUD_URL"),
|
|
NextcloudUser: os.Getenv("NEXTCLOUD_USER"),
|
|
NextcloudPass: os.Getenv("NEXTCLOUD_PASSWORD"),
|
|
NextcloudBase: getEnv("NEXTCLOUD_BASEPATH", "/"),
|
|
AllowedOrigins: getEnv("ALLOWED_ORIGINS", "https://b0esche.cloud,https://www.b0esche.cloud,https://*.b0esche.cloud,http://localhost:8080"),
|
|
AvatarCacheDir: getEnv("AVATAR_CACHE_DIR", "/var/cache/b0esche/avatars"),
|
|
AvatarDownloadTimeoutSeconds: getEnvInt("AVATAR_DOWNLOAD_TIMEOUT_SECONDS", 20),
|
|
AvatarDownloadRetries: getEnvInt("AVATAR_DOWNLOAD_RETRIES", 3),
|
|
}
|
|
log.Printf("[CONFIG] Nextcloud URL: %q, User: %q, BasePath: %q, AvatarCacheDir: %q, AvatarDownloadTimeoutSeconds: %d, AvatarDownloadRetries: %d\n", cfg.NextcloudURL, cfg.NextcloudUser, cfg.NextcloudBase, cfg.AvatarCacheDir, cfg.AvatarDownloadTimeoutSeconds, cfg.AvatarDownloadRetries)
|
|
return cfg
|
|
}
|
|
|
|
func getEnv(key, defaultVal string) string {
|
|
if val := os.Getenv(key); val != "" {
|
|
return val
|
|
}
|
|
return defaultVal
|
|
}
|
|
|
|
func getEnvInt(key string, defaultVal int) int {
|
|
if val := os.Getenv(key); val != "" {
|
|
if i, err := strconv.Atoi(val); err == nil {
|
|
return i
|
|
}
|
|
}
|
|
return defaultVal
|
|
}
|