scanfile/server/internal/config/config.go
2025-05-21 08:57:48 +02:00

43 lines
1,012 B
Go

package config
import (
"log/slog"
_ "github.com/joho/godotenv/autoload"
"github.com/spf13/viper"
)
func ReadConfigFile(configFile string) {
setDefaults()
if configFile != "" {
slog.Info("reading Config file", "file", configFile)
viper.SetConfigFile(configFile)
} else {
viper.AddConfigPath(".")
viper.AddConfigPath("/etc/scanfile/")
viper.SetConfigName("config")
viper.SetConfigType("toml")
}
viper.SetEnvPrefix("SF")
viper.ReadInConfig()
viper.AutomaticEnv()
if viper.ConfigFileUsed() == "" {
viper.WriteConfigAs("./config.toml")
}
slog.Info("done reading config", "file", viper.ConfigFileUsed())
}
func setDefaults() {
// Web
viper.SetDefault("web.port", 8080)
viper.SetDefault("web.host", "127.0.0.1")
viper.SetDefault("web.tls", false)
viper.SetDefault("web.cert", "/etc/ssl/certs/ssl-cert-snakeoil.pem")
viper.SetDefault("web.key", "/etc/ssl/key/ssl-cert-snakeoil.key")
viper.SetDefault("web.loghttp", true)
}
func SaveConfig() error {
return viper.WriteConfig()
}