diff options
author | Matthew Holt <mholt@users.noreply.github.com> | 2019-05-22 14:14:26 -0600 |
---|---|---|
committer | Matthew Holt <mholt@users.noreply.github.com> | 2019-05-22 14:14:26 -0600 |
commit | 869fbac632bc098f8d40fd7b43790fadce84ed1a (patch) | |
tree | 45400f5e541aec8b7786c65638ef44f9b678dd14 | |
parent | 284fb3a98cae2e6e6ca79327988230a3a916996a (diff) |
Don't use auto HTTPS for servers with only HTTP port listeners
-rw-r--r-- | modules/caddyhttp/caddyhttp.go | 5 | ||||
-rw-r--r-- | modules/caddyhttp/server.go | 16 |
2 files changed, 21 insertions, 0 deletions
diff --git a/modules/caddyhttp/caddyhttp.go b/modules/caddyhttp/caddyhttp.go index 1ff2cbc..0fde218 100644 --- a/modules/caddyhttp/caddyhttp.go +++ b/modules/caddyhttp/caddyhttp.go @@ -188,6 +188,11 @@ func (app *App) automaticHTTPS() error { continue } + // skip if all listeners use the HTTP port + if !srv.listenersUseAnyPortOtherThan(app.HTTPPort) { + continue + } + // find all qualifying domain names, de-duplicated domainSet := make(map[string]struct{}) for _, route := range srv.Routes { diff --git a/modules/caddyhttp/server.go b/modules/caddyhttp/server.go index c66fcab..8a16cea 100644 --- a/modules/caddyhttp/server.go +++ b/modules/caddyhttp/server.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "log" + "net" "net/http" "strconv" @@ -98,6 +99,21 @@ func (s *Server) executeCompositeRoute(w http.ResponseWriter, r *http.Request, s return err } +func (s *Server) listenersUseAnyPortOtherThan(otherPort int) bool { + for _, lnAddr := range s.Listen { + _, addrs, err := parseListenAddr(lnAddr) + if err == nil { + for _, a := range addrs { + _, port, err := net.SplitHostPort(a) + if err == nil && port != strconv.Itoa(otherPort) { + return true + } + } + } + } + return false +} + type httpErrorConfig struct { Routes RouteList `json:"routes,omitempty"` // TODO: some way to configure the logging of errors, probably? standardize |