mirror of
https://github.com/trafficlunar/statsys.git
synced 2026-03-28 11:13:17 +00:00
64 lines
1.7 KiB
Go
64 lines
1.7 KiB
Go
package internal
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/pelletier/go-toml/v2"
|
|
)
|
|
|
|
type ServiceConfig struct {
|
|
Name string `toml:"name"`
|
|
Url string `toml:"url"`
|
|
LatencyThreshold int `toml:"latency_threshold"`
|
|
}
|
|
|
|
type Config struct {
|
|
Title string `toml:"title"`
|
|
LinkText string `toml:"link_text"`
|
|
LinkUrl string `toml:"link_url"`
|
|
DefaultView string `toml:"default_view"`
|
|
DefaultTheme string `toml:"default_theme"`
|
|
EnableThemeSwitcher bool `toml:"enable_theme_switcher"`
|
|
Services []ServiceConfig `toml:"services"`
|
|
}
|
|
|
|
var config Config
|
|
|
|
func LoadConfig() {
|
|
configFile, err := os.ReadFile(*ConfigPath)
|
|
if err != nil {
|
|
log.Fatalf("failed to load config: %v", err)
|
|
}
|
|
|
|
if err := toml.Unmarshal(configFile, &config); err != nil {
|
|
log.Fatalf("failed to parse config file: %v", err)
|
|
}
|
|
|
|
templateData.Title = config.Title
|
|
templateData.LinkText = config.LinkText
|
|
templateData.LinkUrl = config.LinkUrl
|
|
templateData.EnableThemeSwitcher = config.EnableThemeSwitcher
|
|
templateData.Services = make([]Service, len(config.Services))
|
|
for index, ser := range config.Services {
|
|
// default to 1000ms
|
|
latencyThreshold := int64(ser.LatencyThreshold)
|
|
if latencyThreshold == 0 {
|
|
latencyThreshold = 1000
|
|
}
|
|
|
|
service := Service{
|
|
Name: ser.Name,
|
|
Url: ser.Url,
|
|
LatencyThreshold: latencyThreshold,
|
|
Status: "Unknown",
|
|
MinuteTimeline: make([]TimelineEntry, 30),
|
|
HourTimeline: make([]TimelineEntry, 24),
|
|
DayTimeline: make([]TimelineEntry, 30),
|
|
}
|
|
|
|
templateData.Services[index] = service
|
|
}
|
|
|
|
log.Printf("config loaded from '%s'", *ConfigPath)
|
|
}
|