package config import ( "encoding/base64" "fmt" "os" ) type Config struct { DBDSN string EncKey []byte ListenAddr string } func Load() (*Config, error) { dsn := os.Getenv("DNS_AR_DB_DSN") if dsn == "" { return nil, fmt.Errorf("config: DNS_AR_DB_DSN is required") } rawKey := os.Getenv("DNS_AR_ENC_KEY") if rawKey == "" { return nil, fmt.Errorf("config: DNS_AR_ENC_KEY is required") } key, err := base64.StdEncoding.DecodeString(rawKey) if err != nil { return nil, fmt.Errorf("config: DNS_AR_ENC_KEY must be base64: %w", err) } if len(key) != 32 { return nil, fmt.Errorf("config: DNS_AR_ENC_KEY must decode to 32 bytes, got %d", len(key)) } listen := os.Getenv("DNS_AR_LISTEN") if listen == "" { listen = ":8080" } return &Config{DBDSN: dsn, EncKey: key, ListenAddr: listen}, nil }