all repos — homestead @ ed2e64827fd84d71e52ff078db193fca969bb35b

Code for my website

handle TLS in server with ACME

Alan Pearce
commit

ed2e64827fd84d71e52ff078db193fca969bb35b

parent

274843533d616c3c6db5d74a071764131fc508d7

1 file changed, 14 insertions(+), 15 deletions(-)

changed files
M internal/server/server.gointernal/server/server.go
@@ -11,7 +11,6 @@ "time"
"website/internal/builder" cfg "website/internal/config" - "website/internal/listenfd" "website/internal/log" "website/internal/website"
@@ -32,10 +31,13 @@ Development bool `conf:"default:false,flag:dev"`
Root string `conf:"default:website"` ListenAddress string `conf:"default:localhost"` Port string `conf:"default:3000,short:p"` + TLS bool `conf:"default:false"` } type Server struct { *http.Server + config *cfg.Config + tls bool } func applyDevModeOverrides(config *cfg.Config, listenAddress string) {
@@ -150,7 +152,7 @@ w.WriteHeader(http.StatusNoContent)
}) return &Server{ - &http.Server{ + Server: &http.Server{ Addr: listenAddress, ReadHeaderTimeout: 1 * time.Minute, Handler: http.MaxBytesHandler(h2c.NewHandler(
@@ -160,24 +162,21 @@ IdleTimeout: 15 * time.Minute,
}, ), 0), }, + config: config, + tls: runtimeConfig.TLS, }, nil } -func (s *Server) Start() error { - l, err := listenfd.GetListener(0) - if err != nil { - log.Warn("could not create listener from listenfd", "error", err) +func (s *Server) serve(tls bool) error { + if tls { + return s.serveTLS() + } else { + return s.serveTCP() } - - log.Debug("listener from listenfd?", "passed", l != nil) - if l == nil { - l, err = net.Listen("tcp", s.Addr) - if err != nil { - return errors.Wrap(err, "could not create listener") - } - } +} - if err := http.Serve(l, s.Handler); err != http.ErrServerClosed { +func (s *Server) Start() error { + if err := s.serve(s.tls); err != http.ErrServerClosed { return errors.Wrap(err, "error creating/closing server") }