scanfile/server/internal/config/config.go
2025-06-03 15:44:56 +02:00

51 lines
1.3 KiB
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)
viper.SetDefault("web.maxfilesizemb", 100)
viper.SetDefault("db.host", "localhost")
viper.SetDefault("db.port", 5432)
viper.SetDefault("db.user", "scanfile")
viper.SetDefault("db.database", "scanfile")
viper.SetDefault("db.password", "CHANGEME")
viper.SetDefault("db.debug", false)
viper.SetDefault("store.path", "./storage/files/")
}
func SaveConfig() error {
return viper.WriteConfig()
}