🚩 Private development - version retention only ✅ Complete web dashboard (React + TypeScript + TailwindCSS) ✅ Production-ready server backend (Go + Gin + PostgreSQL) ✅ Linux agent with APT + Docker scanning + local CLI tools ✅ JWT authentication and REST API ✅ Update discovery and approval workflow 🚧 Status: Alpha software - active development 📦 Purpose: Version retention during development ⚠️ Not for public use or deployment
42 lines
1.0 KiB
Go
42 lines
1.0 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"strconv"
|
|
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
// Config holds the application configuration
|
|
type Config struct {
|
|
ServerPort string
|
|
DatabaseURL string
|
|
JWTSecret string
|
|
CheckInInterval int
|
|
OfflineThreshold int
|
|
}
|
|
|
|
// Load reads configuration from environment variables
|
|
func Load() (*Config, error) {
|
|
// Load .env file if it exists (for development)
|
|
_ = godotenv.Load()
|
|
|
|
checkInInterval, _ := strconv.Atoi(getEnv("CHECK_IN_INTERVAL", "300"))
|
|
offlineThreshold, _ := strconv.Atoi(getEnv("OFFLINE_THRESHOLD", "600"))
|
|
|
|
return &Config{
|
|
ServerPort: getEnv("SERVER_PORT", "8080"),
|
|
DatabaseURL: getEnv("DATABASE_URL", "postgres://aggregator:aggregator@localhost:5432/aggregator?sslmode=disable"),
|
|
JWTSecret: getEnv("JWT_SECRET", "change-me-in-production"),
|
|
CheckInInterval: checkInInterval,
|
|
OfflineThreshold: offlineThreshold,
|
|
}, nil
|
|
}
|
|
|
|
func getEnv(key, defaultValue string) string {
|
|
if value := os.Getenv(key); value != "" {
|
|
return value
|
|
}
|
|
return defaultValue
|
|
}
|