From 7257af2905500d59d317144ae3e8b91a16e65d52 Mon Sep 17 00:00:00 2001 From: Matt Baer Date: Tue, 27 Apr 2021 11:30:04 -0400 Subject: [PATCH] Strip HTTP port from Gopher links Previously, if running an instance on e.g. http://localhost:8080, the port would show up in the Gopher links and potentially cause rendering to fail. This fixes that. --- gopher.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gopher.go b/gopher.go index 56d3fd6..4173fb0 100644 --- a/gopher.go +++ b/gopher.go @@ -14,6 +14,7 @@ import ( "bytes" "fmt" "io" + "net/url" "regexp" "strings" @@ -31,7 +32,12 @@ func initGopher(apper Apper) { // Utility function to strip the URL from the hostname provided by app.cfg.App.Host func stripHostProtocol(app *App) string { - return string(regexp.MustCompile("^.*://").ReplaceAll([]byte(app.cfg.App.Host), []byte(""))) + u, err := url.Parse(app.cfg.App.Host) + if err != nil { + // Fall back to host, with scheme stripped + return string(regexp.MustCompile("^.*://").ReplaceAll([]byte(app.cfg.App.Host), []byte(""))) + } + return u.Hostname() } func handleGopher(app *App, w gopher.ResponseWriter, r *gopher.Request) error {