This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
Addr string
|
||||
DataPath string
|
||||
PollInterval time.Duration
|
||||
LokiURL string
|
||||
LokiTenantID string
|
||||
LokiUsername string
|
||||
LokiPassword string
|
||||
DryRunActions bool
|
||||
AnalysisProvider string
|
||||
AnalysisEndpoint string
|
||||
AnalysisToken string
|
||||
OllamaURL string
|
||||
OllamaModel string
|
||||
AuthUsername string
|
||||
AuthPassword string
|
||||
}
|
||||
|
||||
func Load() Config {
|
||||
return Config{
|
||||
Addr: env("LOG_GUARDIAN_ADDR", ":8080"),
|
||||
DataPath: env("LOG_GUARDIAN_DATA_PATH", "/data/config.json"),
|
||||
PollInterval: durationEnv("LOG_GUARDIAN_POLL_INTERVAL", 1*time.Minute),
|
||||
LokiURL: trimRightSlash(env("LOKI_URL", "http://loki:3100")),
|
||||
LokiTenantID: env("LOKI_TENANT_ID", ""),
|
||||
LokiUsername: env("LOKI_USERNAME", ""),
|
||||
LokiPassword: env("LOKI_PASSWORD", ""),
|
||||
DryRunActions: boolEnv("LOG_GUARDIAN_DRY_RUN_ACTIONS", true),
|
||||
AnalysisProvider: env("LOG_GUARDIAN_ANALYSIS_PROVIDER", "none"),
|
||||
AnalysisEndpoint: env("LOG_GUARDIAN_ANALYSIS_ENDPOINT", ""),
|
||||
AnalysisToken: env("LOG_GUARDIAN_ANALYSIS_TOKEN", ""),
|
||||
OllamaURL: trimRightSlash(env("LOG_GUARDIAN_OLLAMA_URL", "http://ollama:11434")),
|
||||
OllamaModel: env("LOG_GUARDIAN_OLLAMA_MODEL", "llama3.1"),
|
||||
AuthUsername: env("LOG_GUARDIAN_AUTH_USERNAME", ""),
|
||||
AuthPassword: env("LOG_GUARDIAN_AUTH_PASSWORD", ""),
|
||||
}
|
||||
}
|
||||
|
||||
func env(key, fallback string) string {
|
||||
if value := os.Getenv(key); value != "" {
|
||||
return value
|
||||
}
|
||||
return fallback
|
||||
}
|
||||
|
||||
func boolEnv(key string, fallback bool) bool {
|
||||
value := os.Getenv(key)
|
||||
if value == "" {
|
||||
return fallback
|
||||
}
|
||||
parsed, err := strconv.ParseBool(value)
|
||||
if err != nil {
|
||||
return fallback
|
||||
}
|
||||
return parsed
|
||||
}
|
||||
|
||||
func durationEnv(key string, fallback time.Duration) time.Duration {
|
||||
value := os.Getenv(key)
|
||||
if value == "" {
|
||||
return fallback
|
||||
}
|
||||
parsed, err := time.ParseDuration(value)
|
||||
if err != nil {
|
||||
return fallback
|
||||
}
|
||||
return parsed
|
||||
}
|
||||
|
||||
func trimRightSlash(value string) string {
|
||||
for len(value) > 1 && value[len(value)-1] == '/' {
|
||||
value = value[:len(value)-1]
|
||||
}
|
||||
return value
|
||||
}
|
||||
Reference in New Issue
Block a user