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/ ARTICLE_ROOT=./articles/
SERVER_URL=localhost:8080
SERVER_PORT=8080 SERVER_PORT=8080
PREFIX= PREFIX=
DATABASE_FILE=database.sqlite3 DATABASE_FILE=database.sqlite3
ARTICLE_TEMPLATE=./frontend/html/article.gohtml
FRONTEND_DIR=./frontend/ FRONTEND_DIR=./frontend/

View File

@@ -3,17 +3,24 @@ package config
import ( import (
"github.com/joho/godotenv" "github.com/joho/godotenv"
"os" "os"
"path"
) )
type pageBase struct {
BasePath string
}
var PageBase pageBase
var ( var (
ArticleRoot string ArticleRoot string
ServerURL string
ServerPort string ServerPort string
Prefix string Prefix string
DatabaseFile string DatabaseFile string
ArticleTemplate string
FrontendDir string FrontendDir string
) )
@@ -22,11 +29,15 @@ func init() {
ArticleRoot = os.Getenv("ARTICLE_ROOT") ArticleRoot = os.Getenv("ARTICLE_ROOT")
ServerURL = os.Getenv("SERVER_URL")
ServerPort = os.Getenv("SERVER_PORT") ServerPort = os.Getenv("SERVER_PORT")
Prefix = os.Getenv("PREFIX") Prefix = os.Getenv("PREFIX")
DatabaseFile = os.Getenv("DATABASE_FILE") DatabaseFile = os.Getenv("DATABASE_FILE")
ArticleTemplate = os.Getenv("ARTICLE_TEMPLATE")
FrontendDir = os.Getenv("FRONTEND_DIR") FrontendDir = os.Getenv("FRONTEND_DIR")
PageBase = pageBase{
BasePath: path.Join(ServerURL, Prefix),
}
} }

View File

@@ -7,6 +7,7 @@ import (
"TheAdversary/server" "TheAdversary/server"
"fmt" "fmt"
"github.com/gorilla/mux" "github.com/gorilla/mux"
"html/template"
"net/http" "net/http"
"path/filepath" "path/filepath"
) )
@@ -24,7 +25,7 @@ func main() {
} }
database.SetGlobDB(db) 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) panic(err)
} }
} }
@@ -52,9 +53,11 @@ func setupFrontend(r *mux.Router) {
r.PathPrefix("/sass/").HandlerFunc(server.ServePath) r.PathPrefix("/sass/").HandlerFunc(server.ServePath)
r.PathPrefix("/img/").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) { r.PathPrefix("/").HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/" { if r.URL.Path == "/" {
http.ServeFile(w, r, filepath.Join(config.FrontendDir, "html", "landingpage.html")) landingpage.Execute(w, config.PageBase)
} else { } else {
server.Error404(w, r) server.Error404(w, r)
} }

View File

@@ -5,14 +5,16 @@ import (
"TheAdversary/database" "TheAdversary/database"
"github.com/gorilla/mux" "github.com/gorilla/mux"
"net/http" "net/http"
"path/filepath"
"text/template" "text/template"
"time" "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 { type tmplArticle struct {
Title string Title string
BasePath string
Summary string Summary string
Image string Image string
Authors []string Authors []string
@@ -38,6 +40,7 @@ func Article(w http.ResponseWriter, r *http.Request) {
ta := tmplArticle{ ta := tmplArticle{
Title: article.Title, Title: article.Title,
BasePath: config.PageBase.BasePath,
Summary: article.Summary, Summary: article.Summary,
Image: article.Image, Image: article.Image,
Authors: authors, Authors: authors,