57b1effab9e3a0c4006d7da1465a992847cfee53

Author
Ayman Bagabas <ayman.bagabas@gmail.com>
Committer
Ayman Bagabas <ayman.bagabas@gmail.com>
Date

Message

fix: rename host to bind address

and use env to apply defaults

Diff

  1diff --git a/cmd/soft/main.go b/cmd/soft/main.go
  2index 678eff4eae49a12c44b8f3a145821480c50baf01..bb0954136e17dcc8628417098098f60677dc683a 100644
  3--- a/cmd/soft/main.go
  4+++ b/cmd/soft/main.go
  5@@ -57,7 +57,7 @@ func main() {
  6 	done := make(chan os.Signal, 1)
  7 	signal.Notify(done, os.Interrupt, syscall.SIGINT, syscall.SIGTERM)
  8 
  9-	log.Printf("Starting SSH server on %s:%d", cfg.Host, cfg.Port)
 10+	log.Printf("Starting SSH server on %s:%d", cfg.BindAddr, cfg.Port)
 11 	go func() {
 12 		if err := s.Start(); err != nil {
 13 			log.Fatalln(err)
 14@@ -66,7 +66,7 @@ func main() {
 15 
 16 	<-done
 17 
 18-	log.Printf("Stopping SSH server on %s:%d", cfg.Host, cfg.Port)
 19+	log.Printf("Stopping SSH server on %s:%d", cfg.BindAddr, cfg.Port)
 20 	ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
 21 	defer func() { cancel() }()
 22 	if err := s.Shutdown(ctx); err != nil {
 23diff --git a/config/config.go b/config/config.go
 24index 7155c83e5f0e65b747764c265ab9de00be0fa5f4..3c3ab52d0fa3c3ba6f7f091f656a8dda586cf8f9 100644
 25--- a/config/config.go
 26+++ b/config/config.go
 27@@ -16,36 +16,26 @@ type Callbacks interface {
 28 
 29 // Config is the configuration for Soft Serve.
 30 type Config struct {
 31-	Host             string   `env:"SOFT_SERVE_HOST"`
 32-	Port             int      `env:"SOFT_SERVE_PORT"`
 33+	BindAddr         string   `env:"SOFT_SERVE_BIND_ADDRESS" envDefault:""`
 34+	Port             int      `env:"SOFT_SERVE_PORT" envDefault:"23231"`
 35 	KeyPath          string   `env:"SOFT_SERVE_KEY_PATH"`
 36-	RepoPath         string   `env:"SOFT_SERVE_REPO_PATH"`
 37+	RepoPath         string   `env:"SOFT_SERVE_REPO_PATH" envDefault:".repos"`
 38 	InitialAdminKeys []string `env:"SOFT_SERVE_INITIAL_ADMIN_KEY" envSeparator:"\n"`
 39 	Callbacks        Callbacks
 40 }
 41 
 42-func (c *Config) applyDefaults() {
 43-	if c.Port == 0 {
 44-		c.Port = 23231
 45-	}
 46-	if c.KeyPath == "" {
 47-		// NB: cross-platform-compatible path
 48-		c.KeyPath = filepath.Join(".ssh", "soft_serve_server_ed25519")
 49-	}
 50-	if c.RepoPath == "" {
 51-		c.RepoPath = ".repos"
 52-	}
 53-}
 54-
 55 // DefaultConfig returns a Config with the values populated with the defaults
 56 // or specified environment variables.
 57 func DefaultConfig() *Config {
 58-	var scfg Config
 59-	if err := env.Parse(&scfg); err != nil {
 60+	var cfg Config
 61+	if err := env.Parse(&cfg); err != nil {
 62 		log.Fatalln(err)
 63 	}
 64-	scfg.applyDefaults()
 65-	return scfg.WithCallbacks(nil)
 66+	if cfg.KeyPath == "" {
 67+		// NB: cross-platform-compatible path
 68+		cfg.KeyPath = filepath.Join(".ssh", "soft_serve_server_ed25519")
 69+	}
 70+	return cfg.WithCallbacks(nil)
 71 }
 72 
 73 // WithCallbacks applies the given Callbacks to the configuration.
 74diff --git a/internal/config/config.go b/internal/config/config.go
 75index e9da10ada7ca0cc131fa87292e989bd8f96c817e..3c5037ee73d97516b7308aa4708d83bca50cef19 100644
 76--- a/internal/config/config.go
 77+++ b/internal/config/config.go
 78@@ -51,7 +51,7 @@ func NewConfig(cfg *config.Config) (*Config, error) {
 79 	var anonAccess string
 80 	var yamlUsers string
 81 	var displayHost string
 82-	host := cfg.Host
 83+	host := cfg.BindAddr
 84 	port := cfg.Port
 85 
 86 	pks := make([]string, 0, len(cfg.InitialAdminKeys))
 87@@ -72,7 +72,7 @@ func NewConfig(cfg *config.Config) (*Config, error) {
 88 	c := &Config{
 89 		Cfg: cfg,
 90 	}
 91-	c.Host = cfg.Host
 92+	c.Host = cfg.BindAddr
 93 	c.Port = port
 94 	c.Source = rs
 95 	if len(pks) == 0 {
 96diff --git a/server/server.go b/server/server.go
 97index 17a0bd7e0c0f3ca6f07827d6bb93450fb97c77c4..0cb2c233ad6514feb2a28a8c2fa4cc316d5d2787 100644
 98--- a/server/server.go
 99+++ b/server/server.go
100@@ -41,7 +41,7 @@ func NewServer(cfg *config.Config) *Server {
101 	s, err := wish.NewServer(
102 		ssh.PublicKeyAuth(ac.PublicKeyHandler),
103 		ssh.PasswordAuth(ac.PasswordHandler),
104-		wish.WithAddress(fmt.Sprintf("%s:%d", cfg.Host, cfg.Port)),
105+		wish.WithAddress(fmt.Sprintf("%s:%d", cfg.BindAddr, cfg.Port)),
106 		wish.WithHostKeyPath(cfg.KeyPath),
107 		wish.WithMiddleware(mw...),
108 	)