Implemented subpath support

This commit is contained in:
2022-01-31 09:35:18 +01:00
parent 01e876d1e6
commit 86c1bf6e86
4 changed files with 31 additions and 14 deletions

2
.env
View File

@@ -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/

View File

@@ -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),
}
}

View File

@@ -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)
}

View File

@@ -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")