Files
trade/web/backend/internal/config/config.go
2026-05-03 14:34:50 +08:00

40 lines
898 B
Go

package config
import (
"fmt"
"os"
"strings"
)
type Config struct {
ListenAddr string
FuturesDBPath string
AuthDBPath string
JWTSecret []byte
AdminUser string
AdminPass string
}
func Load() (*Config, error) {
cfg := &Config{
ListenAddr: getenv("LISTEN_ADDR", ":8080"),
FuturesDBPath: getenv("FUTURES_DB_PATH", "/app/data/futures.db"),
AuthDBPath: getenv("AUTH_DB_PATH", "/app/auth/auth.db"),
AdminUser: strings.TrimSpace(os.Getenv("ADMIN_USER")),
AdminPass: os.Getenv("ADMIN_PASS"),
}
secret := strings.TrimSpace(os.Getenv("JWT_SECRET"))
if len(secret) < 16 {
return nil, fmt.Errorf("JWT_SECRET 必须至少 16 个字符 (建议 openssl rand -hex 32)")
}
cfg.JWTSecret = []byte(secret)
return cfg, nil
}
func getenv(key, fallback string) string {
if v, ok := os.LookupEnv(key); ok && v != "" {
return v
}
return fallback
}