From 68704340c9193b1a241dfd28bf691866db0df5f1 Mon Sep 17 00:00:00 2001 From: ale <ale@incal.net> Date: Wed, 13 Dec 2017 22:16:10 +0000 Subject: [PATCH] Properly inline the YAML server Config object Also add a test to verify that we're loading the config correctly. --- cmd/sso-server/main.go | 16 +++++------ cmd/sso-server/main_test.go | 54 +++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 8 deletions(-) create mode 100644 cmd/sso-server/main_test.go diff --git a/cmd/sso-server/main.go b/cmd/sso-server/main.go index 84f2d0a..26d6cfc 100644 --- a/cmd/sso-server/main.go +++ b/cmd/sso-server/main.go @@ -21,17 +21,17 @@ var ( // Config wraps together the sso-server configuration and the standard // HTTP server config. type Config struct { - *server.Config - ServerConfig *serverutil.ServerConfig `yaml:"http_server"` + server.Config `yaml:",inline"` + ServerConfig *serverutil.ServerConfig `yaml:"http_server"` } -func loadConfig() (*Config, error) { +func loadConfig(path string) (*Config, error) { // Read YAML config. - data, err := ioutil.ReadFile(*configFile) + data, err := ioutil.ReadFile(path) if err != nil { return nil, err } - config := Config{Config: new(server.Config)} + var config Config if err := yaml.Unmarshal(data, &config); err != nil { return nil, err } @@ -42,7 +42,7 @@ func main() { log.SetFlags(0) flag.Parse() - config, err := loadConfig() + config, err := loadConfig(*configFile) if err != nil { log.Fatal(err) } @@ -50,13 +50,13 @@ func main() { log.Fatal(err) } - loginService, err := server.NewLoginService(config.Config) + loginService, err := server.NewLoginService(&config.Config) if err != nil { log.Fatal(err) } authClient := client.New(*authSocket) - httpSrv, err := server.New(loginService, authClient, config.Config) + httpSrv, err := server.New(loginService, authClient, &config.Config) if err != nil { log.Fatal(err) } diff --git a/cmd/sso-server/main_test.go b/cmd/sso-server/main_test.go new file mode 100644 index 0000000..1e26c60 --- /dev/null +++ b/cmd/sso-server/main_test.go @@ -0,0 +1,54 @@ +package main + +import ( + "io/ioutil" + "os" + "testing" +) + +var testConfig = `--- +secret_key_file: "/etc/sso/secret.key" +public_key_file: "/etc/sso/public.key" +domain: "example.com" +allowed_services: + - "^(login|panel|monitor|logs)\\.example.com/$" + - "^\\d+\\.webmail\\.example.com/$" +allowed_exchanges: + - src_regexp: "^www.example.com/webmail/\\d+/$" + - dst_regexp: "^imap.example.com/$" +service_ttls: + - regexp: "^www.example.com/webmail/\\d+/$" + ttl: 43200 + - regexp: "^imap.example.com/$" + ttl: 43200 + - regexp: ".*" + ttl: 300 +auth_session_lifetime: 43200 +session_secrets: + - "iNQcyp5neUmbrxoj4yfRVhGL8HYGKNWRIv7t5ZiTxXwnJqBJYIU0gQx+1ar7Hsn0" + - "Xqphf9jjr/jZCk+m" +csrf_secret: "XLFtiymBU5p59K/IsqW/oh/5dfP4UC6JSNWMVeiQ8t8GjnB1rzusIFnyho5y4nE1" +auth_service: sso +device_manager: + auth_key: "ffolt81h4CA5kEcwckXmuUUkchwKQmRAeWb1H6Kpzx3+uGqwrVpBfGwzRSYaeir1" + trusted_forwarders: + - 192.168.10.10 +` + +func TestMain_LoadConfig(t *testing.T) { + dir, err := ioutil.TempDir("", "") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(dir) + + ioutil.WriteFile(dir+"/config.yml", []byte(testConfig), 0640) + + conf, err := loadConfig(dir + "/config.yml") + if err != nil { + t.Fatal("LoadConfig:", err) + } + if err := conf.Config.Compile(); err != nil { + t.Fatal("Compile:", err) + } +} -- GitLab