feat: validate configuration on startup, fail fast on bad config (closes #52) #53

Merged
sneak merged 11 commits from feature/config-validation into main 2026-08-07 22:39:40 +02:00
Showing only changes of commit 22f19c849b - Show all commits

View File

@@ -262,15 +262,16 @@ func (c *Config) ensureStateDirWritable() error {
// validate checks that all required configuration values are set and // validate checks that all required configuration values are set and
// that every value is within its valid range. // that every value is within its valid range.
func (c *Config) validate() error { func (c *Config) validate() error {
// The signing key value is never echoed in error messages.
if c.SigningKey == "" { if c.SigningKey == "" {
return fmt.Errorf("signing_key is required") return fmt.Errorf("config key %q: a value is required", "signing_key")
} }
// Minimum key length for security (32 bytes = 256 bits) // Minimum key length for security (32 bytes = 256 bits)
const minKeyLength = 32 const minKeyLength = 32
if len(c.SigningKey) < minKeyLength { if len(c.SigningKey) < minKeyLength {
return fmt.Errorf("signing_key must be at least %d characters, got %d", return fmt.Errorf("config key %q: value must be at least %d characters, got %d",
minKeyLength, len(c.SigningKey)) "signing_key", minKeyLength, len(c.SigningKey))
} }
const maxPort = 65535 const maxPort = 65535