| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package config
- import (
- log "github.com/sirupsen/logrus"
- "github.com/spf13/viper"
- )
- type Config struct {
- BindAddress string `mapstructure:"bind_address"`
- Port string `mapstructure:"listen_port"`
- DownloadChunks int `mapstructure:"download_chunks"`
- IPInfoAPIKey string `mapstructure:"ipinfo_api_key"`
- StatsPassword string `mapstructure:"statistics_password"`
- RedactIP bool `mapstructure:"redact_ip_addresses"`
- DatabaseType string `mapstructure:"database_type"`
- DatabaseHostname string `mapstructure:"database_hostname"`
- DatabaseName string `mapstructure:"database_name"`
- DatabaseUsername string `mapstructure:"database_username"`
- DatabasePassword string `mapstructure:"database_password"`
- DatabaseFile string `mapstructure:"database_file"`
- }
- var (
- loadedConfig *Config = nil
- )
- func init() {
- viper.SetDefault("listen_port", "8989")
- viper.SetDefault("download_chunks", 4)
- viper.SetDefault("distance_unit", "K")
- viper.SetDefault("enable_cors", false)
- viper.SetDefault("statistics_password", "PASSWORD")
- viper.SetDefault("redact_ip_addresses", false)
- viper.SetDefault("database_type", "postgresql")
- viper.SetDefault("database_hostname", "localhost")
- viper.SetDefault("database_name", "speedtest")
- viper.SetDefault("database_username", "postgres")
- viper.SetConfigName("settings")
- viper.AddConfigPath(".")
- }
- func Load() Config {
- var conf Config
- if err := viper.ReadInConfig(); err != nil {
- if _, ok := err.(viper.ConfigFileNotFoundError); ok {
- log.Warnf("No config file found in search paths, using default values")
- } else {
- log.Fatalf("Error reading config: %+v", err)
- }
- }
- if err := viper.Unmarshal(&conf); err != nil {
- log.Fatalf("Error parsing config: %s", err)
- }
- loadedConfig = &conf
- return conf
- }
- func LoadedConfig() *Config {
- if loadedConfig == nil {
- Load()
- }
- return loadedConfig
- }
|