Files
varde/config.go
T
Fabian Gasper 9b0b6b1ecf Finished changing structure to modules:
- ntfy
- keyserver
- webhook
- webserver
functional modules.
2026-07-21 09:45:56 +02:00

63 lines
2.0 KiB
Go

package main
import (
"flag"
"os"
"varde/internal/ntfy"
"varde/modules/keyserver"
"varde/modules/webhook"
"varde/modules/webserver"
)
type Config struct {
Port string
Webserver webserver.Config
Keyserver keyserver.Config
Webhook webhook.Config
Ntfy ntfy.Config
}
func loadConfig() *Config {
cfg := &Config{}
flag.StringVar(&cfg.Port, "port", envOrDefault("PORT", "80"), "port to listen on")
flag.BoolVar(&cfg.Webserver.Enabled, "enable-webserver", envOrDefaultBool("ENABLE_WEBSERVER", false), "enable static webserver module")
flag.StringVar(&cfg.Webserver.ContentDir, "content-dir", envOrDefault("CONTENT_DIR", "./content"), "directory to serve as content")
flag.BoolVar(&cfg.Keyserver.Enabled, "enable-keyserver", envOrDefaultBool("ENABLE_KEYSERVER", false), "enable WKD keyserver module")
flag.StringVar(&cfg.Keyserver.KeysDir, "keys-dir", envOrDefault("KEYS_DIR", "./keys"), "directory to serve as WKD keys")
flag.BoolVar(&cfg.Webhook.Enabled, "enable-webhook", envOrDefaultBool("ENABLE_WEBHOOK", false), "enable git-webhook auto-update module")
flag.StringVar(&cfg.Webhook.RepoURL, "repo-url", envOrDefault("REPO_URL", ""), "git repo URL for webhook auto-update")
flag.StringVar(&cfg.Webhook.RepoToken, "repo-token", envOrDefault("REPO_TOKEN", ""), "git repo access token")
flag.StringVar(&cfg.Webhook.WebhookSecret, "webhook-secret", envOrDefault("WEBHOOK_SECRET", ""), "HMAC secret for webhook validation")
flag.StringVar(&cfg.Ntfy.URL, "ntfy-url", envOrDefault("NTFY_URL", ""), "ntfy server URL for failure notifications")
flag.StringVar(&cfg.Ntfy.Topic, "ntfy-topic", envOrDefault("NTFY_TOPIC", ""), "ntfy topic for failure notifications")
flag.Parse()
// webhook pulls into the same directory the webserver serves
cfg.Webhook.ContentDir = cfg.Webserver.ContentDir
return cfg
}
func envOrDefault(key, def string) string {
if v := os.Getenv(key); v != "" {
return v
}
return def
}
func envOrDefaultBool(key string, def bool) bool {
v := os.Getenv(key)
if v == "" {
return def
}
return v == "true" || v == "1"
}