From cac2111296f3dca97c4a1ddc841b311e983c8d2d Mon Sep 17 00:00:00 2001 From: ByteDream Date: Wed, 2 Feb 2022 10:05:00 +0100 Subject: [PATCH] Fixed base path --- config/config.go | 14 +++++--------- main.go | 8 +++++++- server/article.go | 7 ++++++- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/config/config.go b/config/config.go index 46b3631..f42ac0f 100644 --- a/config/config.go +++ b/config/config.go @@ -7,12 +7,6 @@ import ( "path" ) -type pageBase struct { - BasePath string -} - -var PageBase pageBase - var ( ArticleRoot string @@ -23,6 +17,10 @@ var ( DatabaseFile string FrontendDir string + + // not specified in config + + BasePath string ) func init() { @@ -38,7 +36,5 @@ func init() { DatabaseFile = os.Getenv("DATABASE_FILE") FrontendDir = os.Getenv("FRONTEND_DIR") - PageBase = pageBase{ - BasePath: "http://" + path.Join(fmt.Sprintf("%s:%s", ServerAddress, ServerPort), Prefix) + "/", - } + BasePath = path.Join(fmt.Sprintf("%s:%s", ServerAddress, ServerPort), Prefix) + "/" } diff --git a/main.go b/main.go index b5d6253..228dee7 100644 --- a/main.go +++ b/main.go @@ -67,7 +67,13 @@ func setupFrontend(r *mux.Router) { landingpage := template.Must(template.ParseFiles(filepath.Join(config.FrontendDir, "html", "landingpage.gohtml"))) r.Path("/").HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - landingpage.Execute(w, config.PageBase) + basePath := r.URL.Scheme + "://" + config.BasePath + if r.URL.Scheme == "" { + basePath = "http" + basePath + } + landingpage.Execute(w, struct { + BasePath string + }{BasePath: basePath}) }) r.NotFoundHandler = http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { diff --git a/server/article.go b/server/article.go index d8f2047..5398ad7 100644 --- a/server/article.go +++ b/server/article.go @@ -38,9 +38,14 @@ func Article(w http.ResponseWriter, r *http.Request) { database.GetDB().Table("author").Select("id").Where("id IN (?)", database.GetDB().Table("article_author").Select("author_id").Where("article_id = ?", article.Id)).Find(&authors) database.GetDB().Table("article_tag").Where("article_id = ?", article.Id).Find(&tags) + basePath := r.URL.Scheme + "://" + config.BasePath + if r.URL.Scheme == "" { + basePath = "http" + basePath + } + ta := tmplArticle{ Title: article.Title, - BasePath: config.PageBase.BasePath, + BasePath: basePath, Summary: article.Summary, Image: article.Image, Authors: authors,