summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorsanine <sanine.not@pm.me>2023-05-15 18:47:06 +0000
committersanine <sanine.not@pm.me>2023-05-15 18:47:06 +0000
commit16c91c1139d9f03f42c63298f2179822b8d50eb2 (patch)
tree66b301c2c118478f3fffe474425de24cf121dd26 /main.go
parent8b47f868ce97f50757225a72b958ed483336fd0c (diff)
properly implement subpath handlingmain
Diffstat (limited to 'main.go')
-rw-r--r--main.go35
1 files changed, 23 insertions, 12 deletions
diff --git a/main.go b/main.go
index 6e37f43..44fed27 100644
--- a/main.go
+++ b/main.go
@@ -16,41 +16,52 @@ import (
log "github.com/sirupsen/logrus"
)
+
+
+
func main() {
- configFile := parseFlags()
+ configFile := parseFlags()
conf := loadConfig(configFile)
+ api := config.Api{
+ Prefix: conf.PathPrefix,
+ Login: "/phlox/login",
+ Logout: "/phlox/logout",
+ Asset: "/phlox/asset/",
+ }
+
sessions := auth.NewSessionContainer()
- pages := loadPages(conf)
+ pages := loadPages(conf, api)
users := getUsers(conf)
// add phlox endpoints
- http.HandleFunc(conf.PathPrefix + "/phlox/login", func(w http.ResponseWriter, r *http.Request) {
+ http.HandleFunc(api.Login, func(w http.ResponseWriter, r *http.Request) {
Login(w, r, users, sessions, pages)
})
- http.HandleFunc(conf.PathPrefix + "/phlox/logout", func(w http.ResponseWriter, r *http.Request) {
+ http.HandleFunc(api.Logout, func(w http.ResponseWriter, r *http.Request) {
Logout(w, r, sessions)
})
- http.HandleFunc(conf.PathPrefix + "/phlox/asset/", func(w http.ResponseWriter, r *http.Request) {
- filename := strings.TrimPrefix(r.URL.Path, "/phlox/asset/")
+ http.HandleFunc(api.Asset, func(w http.ResponseWriter, r *http.Request) {
+ filename := strings.TrimPrefix(r.URL.Path, api.Asset)
path := filepath.Join(conf.AssetDirectory, filename)
http.ServeFile(w, r, path)
})
- http.HandleFunc(conf.PathPrefix + "/", func(w http.ResponseWriter, r *http.Request) {
+ http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/" {
- w.Header().Add("Location", "/phlox/login")
+ w.Header().Add("Location", api.Prefix + "/phlox/login")
w.WriteHeader(http.StatusTemporaryRedirect)
} else {
pages.ServeError404(w)
+ log.Errorf("404: %v", r.URL.Path)
}
})
// add reverse proxy endpoints
for _, e := range conf.Endpoints {
- addEndpoint(conf, sessions, pages, e)
+ addEndpoint(conf, api, sessions, pages, e)
}
// timer for inactivity log out
@@ -70,7 +81,7 @@ func main() {
func parseFlags() string {
var configFile string
var username string
- var passwd string
+ var passwd string
flag.StringVar(&configFile, "c", "./config.json", "the configuration file to use")
flag.StringVar(&passwd, "passwd", "", "hash a password")
flag.StringVar(&username, "user", "", "optional username for the JSON output of --passwd")
@@ -122,8 +133,8 @@ func loadConfig(filename string) config.Config {
}
-func loadPages(c config.Config) page.Pages {
- pages, err := page.LoadPages(c)
+func loadPages(c config.Config, api config.Api) page.Pages {
+ pages, err := page.LoadPages(c, api)
if err != nil {
fmt.Fprintf(os.Stderr, "failed to load html pages: %v\n", err.Error())
os.Exit(1)