Skip to content
Snippets Groups Projects
configuration.go 1.27 KiB
Newer Older
  • Learn to ignore specific revisions
  • Bolke de Bruin's avatar
    Bolke de Bruin committed
    package config
    
    
    import (
    	"github.com/spf13/viper"
    	"log"
    )
    
    
    Bolke de Bruin's avatar
    Bolke de Bruin committed
    type Configuration struct {
    	Server ServerConfig
    	OpenId OpenIDConfig
    	Caps   RDGCapsConfig
    }
    
    type ServerConfig struct {
    	GatewayAddress string
    	Port           int
    	CertFile       string
    	KeyFile        string
    	FarmHosts      []string
    	EnableOverride bool
    	HostTemplate   string
    }
    
    type OpenIDConfig struct {
    	ProviderUrl	 string
    	ClientId     string
    	ClientSecret string
    }
    
    type RDGCapsConfig struct {
    	SmartCardAuth    bool
    	TokenAuth        bool
    	IdleTimeout      int
    	RedirectAll      bool
    	DisableRedirect  bool
    	DisableClipboard bool
    	DisablePrinter   bool
    	DisablePort      bool
    	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
    }