Implemented subpath support
This commit is contained in:
2
.env
2
.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/
|
||||
|
||||
@@ -3,17 +3,24 @@ 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
|
||||
)
|
||||
|
||||
@@ -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),
|
||||
}
|
||||
}
|
||||
|
||||
7
main.go
7
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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
@@ -38,6 +40,7 @@ func Article(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
ta := tmplArticle{
|
||||
Title: article.Title,
|
||||
BasePath: config.PageBase.BasePath,
|
||||
Summary: article.Summary,
|
||||
Image: article.Image,
|
||||
Authors: authors,
|
||||
|
||||
Reference in New Issue
Block a user