feat: sync current progress (P0 hardening + P1 observability + deploy docs/systemd)
This commit is contained in:
70
internal/config/config.go
Normal file
70
internal/config/config.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
HTTPAddr string
|
||||
DBPath string
|
||||
JWTSecret string
|
||||
AccessTTLMinutes int
|
||||
RefreshTTLHours int
|
||||
DefaultUsername string
|
||||
DefaultPassword string
|
||||
DefaultTimezone string
|
||||
AppEnv string
|
||||
}
|
||||
|
||||
func Load() Config {
|
||||
addr := getenv("HTTP_ADDR", ":9530")
|
||||
dbPath := getenv("DB_PATH", "./data/asset-tracker.db")
|
||||
jwtSecret := getenv("JWT_SECRET", "change_me_in_production")
|
||||
defaultUsername := getenv("DEFAULT_USERNAME", "admin")
|
||||
defaultPassword := getenv("DEFAULT_PASSWORD", "admin123")
|
||||
defaultTimezone := getenv("DEFAULT_TIMEZONE", "Asia/Shanghai")
|
||||
appEnv := strings.ToLower(strings.TrimSpace(getenv("APP_ENV", "dev")))
|
||||
|
||||
accessTTL := getenvInt("ACCESS_TTL_MINUTES", 30)
|
||||
if accessTTL < 5 {
|
||||
accessTTL = 5
|
||||
}
|
||||
refreshTTL := getenvInt("REFRESH_TTL_HOURS", 168)
|
||||
if refreshTTL < 1 {
|
||||
refreshTTL = 1
|
||||
}
|
||||
|
||||
return Config{
|
||||
HTTPAddr: addr,
|
||||
DBPath: dbPath,
|
||||
JWTSecret: jwtSecret,
|
||||
AccessTTLMinutes: accessTTL,
|
||||
RefreshTTLHours: refreshTTL,
|
||||
DefaultUsername: defaultUsername,
|
||||
DefaultPassword: defaultPassword,
|
||||
DefaultTimezone: defaultTimezone,
|
||||
AppEnv: appEnv,
|
||||
}
|
||||
}
|
||||
|
||||
func getenv(key, fallback string) string {
|
||||
v := strings.TrimSpace(os.Getenv(key))
|
||||
if v == "" {
|
||||
return fallback
|
||||
}
|
||||
return v
|
||||
}
|
||||
|
||||
func getenvInt(key string, fallback int) int {
|
||||
v := strings.TrimSpace(os.Getenv(key))
|
||||
if v == "" {
|
||||
return fallback
|
||||
}
|
||||
n, err := strconv.Atoi(v)
|
||||
if err != nil {
|
||||
return fallback
|
||||
}
|
||||
return n
|
||||
}
|
||||
Reference in New Issue
Block a user