From ba679b126682a8b054634db98f8194d908b8083a Mon Sep 17 00:00:00 2001 From: Bolke de Bruin <bolke@xs4all.nl> Date: Sun, 19 Jul 2020 14:37:31 +0200 Subject: [PATCH] Clean up config handling --- config/configuration.go | 31 +++++++++++++++++++++++++++++++ main.go | 16 +--------------- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/config/configuration.go b/config/configuration.go index 099d992..1dc64cc 100644 --- a/config/configuration.go +++ b/config/configuration.go @@ -1,5 +1,10 @@ package config +import ( + "github.com/spf13/viper" + "log" +) + type Configuration struct { Server ServerConfig OpenId OpenIDConfig @@ -34,3 +39,29 @@ type RDGCapsConfig struct { DisablePnp bool DisableDrive bool } + +func init() { + viper.SetDefault("server.certFile", "server.pem") + viper.SetDefault("server.keyFile", "key.pem") + viper.SetDefault("server.port", 443) +} + +func Load(configFile string) Configuration { + var conf Configuration + + viper.SetConfigName("rdpgw") + viper.SetConfigFile(configFile) + viper.AddConfigPath(".") + viper.SetEnvPrefix("RDPGW") + viper.AutomaticEnv() + + if err := viper.ReadInConfig(); err != nil { + log.Printf("No config file found (%s). Using defaults", err) + } + + if err := viper.Unmarshal(&conf); err != nil { + log.Fatalf("Cannot unmarshal the config file; %s", err) + } + + return conf +} \ No newline at end of file diff --git a/main.go b/main.go index 5e854b1..e5d9960 100644 --- a/main.go +++ b/main.go @@ -9,7 +9,6 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/spf13/cobra" - "github.com/spf13/viper" "golang.org/x/oauth2" "log" "net/http" @@ -37,20 +36,7 @@ var ctx context.Context func main() { // get config cmd.PersistentFlags().StringVarP(&configFile, "conf", "c", "rdpgw.yaml", "config file (json, yaml, ini)") - - viper.SetConfigName("rdpgw") - viper.SetConfigFile(configFile) - viper.AddConfigPath(".") - viper.SetEnvPrefix("RDPGW") - viper.AutomaticEnv() - - if err := viper.ReadInConfig(); err != nil { - log.Printf("No config file found (%s). Using defaults", err) - } - - if err := viper.Unmarshal(&conf); err != nil { - log.Fatalf("Cannot unmarshal the config file; %s", err) - } + conf = config.Load(configFile) // set oidc config ctx = context.Background() -- GitLab