diff --git a/.env b/.env index 742c270..7134d46 100644 --- a/.env +++ b/.env @@ -1,9 +1,9 @@ ARTICLE_ROOT=./articles/ +SERVER_URL=localhost:8080 SERVER_PORT=8080 PREFIX= DATABASE_FILE=database.sqlite3 -ARTICLE_TEMPLATE=./frontend/html/article.gohtml FRONTEND_DIR=./frontend/ diff --git a/config/config.go b/config/config.go index d12e22a..cfa09b4 100644 --- a/config/config.go +++ b/config/config.go @@ -3,18 +3,25 @@ package config import ( "github.com/joho/godotenv" "os" + "path" ) +type pageBase struct { + BasePath string +} + +var PageBase pageBase + var ( ArticleRoot string + ServerURL string ServerPort string Prefix string - DatabaseFile string - ArticleTemplate string - FrontendDir string + DatabaseFile string + FrontendDir string ) func init() { @@ -22,11 +29,15 @@ func init() { ArticleRoot = os.Getenv("ARTICLE_ROOT") + ServerURL = os.Getenv("SERVER_URL") ServerPort = os.Getenv("SERVER_PORT") Prefix = os.Getenv("PREFIX") DatabaseFile = os.Getenv("DATABASE_FILE") - ArticleTemplate = os.Getenv("ARTICLE_TEMPLATE") FrontendDir = os.Getenv("FRONTEND_DIR") + + PageBase = pageBase{ + BasePath: path.Join(ServerURL, Prefix), + } } diff --git a/main.go b/main.go index a548120..84ad78b 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,7 @@ import ( "TheAdversary/server" "fmt" "github.com/gorilla/mux" + "html/template" "net/http" "path/filepath" ) @@ -24,7 +25,7 @@ func main() { } database.SetGlobDB(db) - if err := http.ListenAndServe(fmt.Sprintf(":%s", config.ServerPort), r); err != nil { + if err := http.ListenAndServe(fmt.Sprintf("%s:%s", config.ServerURL, config.ServerPort), r); err != nil { panic(err) } } @@ -52,9 +53,11 @@ func setupFrontend(r *mux.Router) { r.PathPrefix("/sass/").HandlerFunc(server.ServePath) r.PathPrefix("/img/").HandlerFunc(server.ServePath) + landingpage := template.Must(template.ParseFiles(filepath.Join(config.FrontendDir, "html", "landingpage.gohtml"))) + r.PathPrefix("/").HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.URL.Path == "/" { - http.ServeFile(w, r, filepath.Join(config.FrontendDir, "html", "landingpage.html")) + landingpage.Execute(w, config.PageBase) } else { server.Error404(w, r) } diff --git a/server/article.go b/server/article.go index a02c71f..d8f2047 100644 --- a/server/article.go +++ b/server/article.go @@ -5,14 +5,16 @@ import ( "TheAdversary/database" "github.com/gorilla/mux" "net/http" + "path/filepath" "text/template" "time" ) -var tmpl = template.Must(template.ParseFiles(config.ArticleTemplate)) +var tmpl = template.Must(template.ParseFiles(filepath.Join(config.FrontendDir, "html", "article.gohtml"))) type tmplArticle struct { Title string + BasePath string Summary string Image string Authors []string @@ -37,12 +39,13 @@ func Article(w http.ResponseWriter, r *http.Request) { database.GetDB().Table("article_tag").Where("article_id = ?", article.Id).Find(&tags) ta := tmplArticle{ - Title: article.Title, - Summary: article.Summary, - Image: article.Image, - Authors: authors, - Tags: tags, - Content: article.Html, + Title: article.Title, + BasePath: config.PageBase.BasePath, + Summary: article.Summary, + Image: article.Image, + Authors: authors, + Tags: tags, + Content: article.Html, } if article.Modified > 0 { ta.Date = time.Unix(article.Modified, 0).Format("Monday, 2. January 2006 | 15:04")