From ccb5d19c258a1f4ec87ec7cdc4aedf1f1c7007dc Mon Sep 17 00:00:00 2001
From: Matthew Holt <mholt@users.noreply.github.com>
Date: Fri, 12 Jul 2019 10:15:27 -0600
Subject: [PATCH] Get module name at runtime, and tidy up modules

---
 caddy.go                                   | 15 +++++++--------
 go.sum                                     |  2 --
 modules/caddyhttp/fileserver/matcher.go    |  2 +-
 modules/caddyhttp/reverseproxy/upstream.go |  2 +-
 4 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/caddy.go b/caddy.go
index 41355c93c..21f733c67 100644
--- a/caddy.go
+++ b/caddy.go
@@ -209,24 +209,23 @@ func (d *Duration) UnmarshalJSON(b []byte) error {
 // value will still be returned, but with an
 // unknown version.
 func GoModule() *debug.Module {
+	mod := &debug.Module{Version: "unknown"}
 	bi, ok := debug.ReadBuildInfo()
 	if ok {
+		mod.Path = bi.Main.Path
 		// The recommended way to build Caddy involves
 		// creating a separate main module, which
 		// TODO: track related Go issue: https://github.com/golang/go/issues/29228
-		for _, mod := range bi.Deps {
-			if mod.Path == goModule {
-				return mod
+		// once that issue is fixed, we should just be able to use bi.Main... hopefully.
+		for _, dep := range bi.Deps {
+			if dep.Path == mod.Path {
+				return dep
 			}
 		}
 	}
-	return &debug.Module{Version: "unknown"}
+	return mod
 }
 
-// goModule is the name of this Go module.
-// TODO: we should be able to find this at runtime, see https://github.com/golang/go/issues/29228
-const goModule = "github.com/caddyserver/caddy/v2"
-
 // CtxKey is a value type for use with context.WithValue.
 type CtxKey string
 
diff --git a/go.sum b/go.sum
index 386283cff..de04e09af 100644
--- a/go.sum
+++ b/go.sum
@@ -6,8 +6,6 @@ github.com/Masterminds/semver v1.4.2 h1:WBLTQ37jOCzSLtXNdoo8bNM8876KhNqOKvrlGITg
 github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
 github.com/Masterminds/sprig v2.20.0+incompatible h1:dJTKKuUkYW3RMFdQFXPU/s6hg10RgctmTjRcbZ98Ap8=
 github.com/Masterminds/sprig v2.20.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
-github.com/andybalholm/brotli v0.0.0-20190430215306-5c318f9037cb h1:Qs8/an94NFS1x2nn7rSI+skKFuw/EGfEYAGS3w/p+jc=
-github.com/andybalholm/brotli v0.0.0-20190430215306-5c318f9037cb/go.mod h1:+lx6/Aqd1kLJ1GQfkvOnaZ1WGmLpMpbprPuIOOZX30U=
 github.com/andybalholm/brotli v0.0.0-20190704151324-71eb68cc467c h1:pBKtfXLqKZ+GPHGjlBheGaXK2lddydUG3XhWGrYjxOA=
 github.com/andybalholm/brotli v0.0.0-20190704151324-71eb68cc467c/go.mod h1:+lx6/Aqd1kLJ1GQfkvOnaZ1WGmLpMpbprPuIOOZX30U=
 github.com/cenkalti/backoff v2.1.1+incompatible h1:tKJnvO2kl0zmb/jA5UKAt4VoEVw1qxKWjE/Bpp46npY=
diff --git a/modules/caddyhttp/fileserver/matcher.go b/modules/caddyhttp/fileserver/matcher.go
index 023a69b8f..85081ea41 100644
--- a/modules/caddyhttp/fileserver/matcher.go
+++ b/modules/caddyhttp/fileserver/matcher.go
@@ -20,8 +20,8 @@ import (
 	"os"
 	"time"
 
-	"github.com/caddyserver/caddy/modules/caddyhttp"
 	"github.com/caddyserver/caddy/v2"
+	"github.com/caddyserver/caddy/v2/modules/caddyhttp"
 )
 
 func init() {
diff --git a/modules/caddyhttp/reverseproxy/upstream.go b/modules/caddyhttp/reverseproxy/upstream.go
index 9409ee7bd..10df80b9b 100755
--- a/modules/caddyhttp/reverseproxy/upstream.go
+++ b/modules/caddyhttp/reverseproxy/upstream.go
@@ -28,8 +28,8 @@ import (
 	"sync/atomic"
 	"time"
 
-	"github.com/caddyserver/caddy/modules/caddyhttp"
 	"github.com/caddyserver/caddy/v2"
+	"github.com/caddyserver/caddy/v2/modules/caddyhttp"
 )
 
 // CircuitBreaker defines the functionality of a circuit breaker module.