From 57b1effab9e3a0c4006d7da1465a992847cfee53 Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Mon, 31 Jan 2022 20:09:41 -0500 Subject: [PATCH] fix: rename host to bind address and use env to apply defaults --- cmd/soft/main.go | 4 ++-- config/config.go | 30 ++++++++++-------------------- internal/config/config.go | 4 ++-- server/server.go | 2 +- 4 files changed, 15 insertions(+), 25 deletions(-) diff --git a/cmd/soft/main.go b/cmd/soft/main.go index 678eff4eae49a12c44b8f3a145821480c50baf01..bb0954136e17dcc8628417098098f60677dc683a 100644 --- a/cmd/soft/main.go +++ b/cmd/soft/main.go @@ -57,7 +57,7 @@ func main() { done := make(chan os.Signal, 1) signal.Notify(done, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) - log.Printf("Starting SSH server on %s:%d", cfg.Host, cfg.Port) + log.Printf("Starting SSH server on %s:%d", cfg.BindAddr, cfg.Port) go func() { if err := s.Start(); err != nil { log.Fatalln(err) @@ -66,7 +66,7 @@ func main() { <-done - log.Printf("Stopping SSH server on %s:%d", cfg.Host, cfg.Port) + log.Printf("Stopping SSH server on %s:%d", cfg.BindAddr, cfg.Port) ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer func() { cancel() }() if err := s.Shutdown(ctx); err != nil { diff --git a/config/config.go b/config/config.go index 7155c83e5f0e65b747764c265ab9de00be0fa5f4..3c3ab52d0fa3c3ba6f7f091f656a8dda586cf8f9 100644 --- a/config/config.go +++ b/config/config.go @@ -16,36 +16,26 @@ type Callbacks interface { // Config is the configuration for Soft Serve. type Config struct { - Host string `env:"SOFT_SERVE_HOST"` - Port int `env:"SOFT_SERVE_PORT"` + BindAddr string `env:"SOFT_SERVE_BIND_ADDRESS" envDefault:""` + Port int `env:"SOFT_SERVE_PORT" envDefault:"23231"` KeyPath string `env:"SOFT_SERVE_KEY_PATH"` - RepoPath string `env:"SOFT_SERVE_REPO_PATH"` + RepoPath string `env:"SOFT_SERVE_REPO_PATH" envDefault:".repos"` InitialAdminKeys []string `env:"SOFT_SERVE_INITIAL_ADMIN_KEY" envSeparator:"\n"` Callbacks Callbacks } -func (c *Config) applyDefaults() { - if c.Port == 0 { - c.Port = 23231 - } - if c.KeyPath == "" { - // NB: cross-platform-compatible path - c.KeyPath = filepath.Join(".ssh", "soft_serve_server_ed25519") - } - if c.RepoPath == "" { - c.RepoPath = ".repos" - } -} - // DefaultConfig returns a Config with the values populated with the defaults // or specified environment variables. func DefaultConfig() *Config { - var scfg Config - if err := env.Parse(&scfg); err != nil { + var cfg Config + if err := env.Parse(&cfg); err != nil { log.Fatalln(err) } - scfg.applyDefaults() - return scfg.WithCallbacks(nil) + if cfg.KeyPath == "" { + // NB: cross-platform-compatible path + cfg.KeyPath = filepath.Join(".ssh", "soft_serve_server_ed25519") + } + return cfg.WithCallbacks(nil) } // WithCallbacks applies the given Callbacks to the configuration. diff --git a/internal/config/config.go b/internal/config/config.go index e9da10ada7ca0cc131fa87292e989bd8f96c817e..3c5037ee73d97516b7308aa4708d83bca50cef19 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -51,7 +51,7 @@ func NewConfig(cfg *config.Config) (*Config, error) { var anonAccess string var yamlUsers string var displayHost string - host := cfg.Host + host := cfg.BindAddr port := cfg.Port pks := make([]string, 0, len(cfg.InitialAdminKeys)) @@ -72,7 +72,7 @@ func NewConfig(cfg *config.Config) (*Config, error) { c := &Config{ Cfg: cfg, } - c.Host = cfg.Host + c.Host = cfg.BindAddr c.Port = port c.Source = rs if len(pks) == 0 { diff --git a/server/server.go b/server/server.go index 17a0bd7e0c0f3ca6f07827d6bb93450fb97c77c4..0cb2c233ad6514feb2a28a8c2fa4cc316d5d2787 100644 --- a/server/server.go +++ b/server/server.go @@ -41,7 +41,7 @@ func NewServer(cfg *config.Config) *Server { s, err := wish.NewServer( ssh.PublicKeyAuth(ac.PublicKeyHandler), ssh.PasswordAuth(ac.PasswordHandler), - wish.WithAddress(fmt.Sprintf("%s:%d", cfg.Host, cfg.Port)), + wish.WithAddress(fmt.Sprintf("%s:%d", cfg.BindAddr, cfg.Port)), wish.WithHostKeyPath(cfg.KeyPath), wish.WithMiddleware(mw...), )