From 50456c578497e9921558941eae59fa01bcf269bf Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Mon, 24 Jun 2024 17:18:27 +0200 Subject: handle TLS in server with ACME --- internal/server/server.go | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) (limited to 'internal/server/server.go') diff --git a/internal/server/server.go b/internal/server/server.go index 26d1c1f..9edebe3 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -11,7 +11,6 @@ import ( "website/internal/builder" cfg "website/internal/config" - "website/internal/listenfd" "website/internal/log" "website/internal/website" @@ -32,10 +31,13 @@ type Config struct { 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 @@ func New(runtimeConfig *Config) (*Server, error) { }) return &Server{ - &http.Server{ + Server: &http.Server{ Addr: listenAddress, ReadHeaderTimeout: 1 * time.Minute, Handler: http.MaxBytesHandler(h2c.NewHandler( @@ -160,24 +162,21 @@ func New(runtimeConfig *Config) (*Server, error) { }, ), 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) - } - - 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") - } +func (s *Server) serve(tls bool) error { + if tls { + return s.serveTLS() + } else { + return s.serveTCP() } +} - 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") } -- cgit 1.4.1