diff --git a/README.md b/README.md index b75ab81..33d11c4 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ var packages = []Package{ ### Environment Variables - `PORT` - Server port (default: `8421`) +- `HOST` - Override the domain used in package paths (if set, takes priority over headers) - `HOST_HEADER` - Header to read domain from (default: `X-Forwarded-Host`) ## Usage diff --git a/main.go b/main.go index 449d1c3..ad51417 100644 --- a/main.go +++ b/main.go @@ -47,6 +47,7 @@ type RedirectData struct { } var hostHeader = getEnvOrDefault("HOST_HEADER", "X-Forwarded-Host") +var hostOverride = os.Getenv("HOST") func getEnvOrDefault(key, defaultValue string) string { if value := os.Getenv(key); value != "" { @@ -55,8 +56,10 @@ func getEnvOrDefault(key, defaultValue string) string { return defaultValue } -// getDomain extracts the domain from the request -func getDomain(r *http.Request) string { +func getHost(r *http.Request) string { + if hostOverride != "" { + return hostOverride + } if host := r.Header.Get(hostHeader); host != "" { return host } @@ -65,7 +68,7 @@ func getDomain(r *http.Request) string { func homeHandler(w http.ResponseWriter, r *http.Request) { data := HomeData{ - Domain: getDomain(r), + Domain: getHost(r), Packages: packages, Count: len(packages), } @@ -103,7 +106,7 @@ func packageHandler(w http.ResponseWriter, r *http.Request) { if r.URL.Query().Get("go-get") == "1" { // Respond with meta tags for go get data := VanityData{ - Domain: getDomain(r), + Domain: getHost(r), Path: pkg.Path, Repo: pkg.Repo, VCS: pkg.VCS, @@ -122,7 +125,7 @@ func packageHandler(w http.ResponseWriter, r *http.Request) { } else { // Regular browser request - redirect to pkg.go.dev data := RedirectData{ - Domain: getDomain(r), + Domain: getHost(r), Path: pkg.Path, } @@ -205,6 +208,14 @@ const homeTemplate = ` font-size: 1.1em; color: #00ADD8; font-weight: bold; + text-decoration: none; + } + .package-name:hover { + text-decoration: underline; + } + .external-icon { + margin-left: 5px; + vertical-align: middle; } .package-repo { margin-top: 5px; @@ -273,9 +284,9 @@ const homeTemplate = ` {{range $index, $pkg := .Packages}}
-
{{$.Domain}}{{$pkg.Path}}
+ {{$.Domain}}{{$pkg.Path}}
- Source: {{$pkg.Repo}} + Source: {{$pkg.Repo}}
go get {{$.Domain}}{{$pkg.Path}}