converge/cmd/converge/pagehandler.go

50 lines
1.0 KiB
Go

package main
import (
"converge/pkg/server/converge"
templates2 "converge/pkg/server/templates"
"net/http"
"os"
"strings"
)
func pageHandler(w http.ResponseWriter, r *http.Request) {
secure := ""
if r.TLS == nil {
secure = ""
} else {
secure = "s"
}
for _, header := range []string{"X-Forwarded-Proto", "X-Scheme", "X-Forwarded-Scheme"} {
values := r.Header.Values(header)
for _, value := range values {
if strings.ToLower(value) == "https" {
secure = "s"
}
}
}
username, _ := os.LookupEnv("CONVERGE_USERNAME")
location, err := converge.GetUserLocation(r)
if err != nil {
panic(err)
}
switch r.URL.Path {
case "":
fallthrough
case "/":
fallthrough
case "index.html":
templates2.AboutTab().Render(r.Context(), w)
case "usage.html":
templates2.UsageTab(secure, r.Host, username).Render(r.Context(), w)
case "downloads.html":
templates2.DownloadsTab().Render(r.Context(), w)
case "sessions.html":
templates2.SessionsTab(nil, location).Render(r.Context(), w)
default:
http.NotFound(w, r)
}
}