split up in separate pages.

This commit is contained in:
Erik Brakkee 2024-07-29 20:02:08 +02:00
parent f5135aecdc
commit 68056b0b77
5 changed files with 26 additions and 61 deletions

View File

@ -1,59 +0,0 @@
package main
import (
"converge/pkg/templates"
"net/http"
"os"
"path/filepath"
"strings"
)
type FileHandlerFilter struct {
dir string
fileHandler http.Handler
}
func NewFileHandler(dir string) *FileHandlerFilter {
handler := FileHandlerFilter{
dir: dir,
fileHandler: http.FileServer(http.Dir(dir)),
}
return &handler
}
func (handler FileHandlerFilter) ServeHTTP(w http.ResponseWriter, r *http.Request) {
contextPath := r.URL.Path
path := filepath.Join(handler.dir, contextPath)
fileInfo, err := os.Stat(path)
if err == nil && fileInfo.IsDir() {
contextPath = filepath.Join(contextPath, "index.html")
}
if !strings.HasSuffix(contextPath, ".html") {
handler.fileHandler.ServeHTTP(w, r)
return
}
w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")
w.Header().Set("Pragma", "no-cache")
w.Header().Set("Expires", "0")
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")
templates.Index(secure, r.Host, username).Render(
r.Context(), w)
}

View File

@ -29,8 +29,12 @@ func pageHandler(w http.ResponseWriter, r *http.Request) {
fallthrough
case "/":
fallthrough
case "/index.html":
templates.Index(secure, r.Host, username).Render(r.Context(), w)
case "index.html":
templates.AboutTab().Render(r.Context(), w)
case "usage.html":
templates.UsageTab(secure, r.URL.Host, username).Render(r.Context(), w)
case "downloads.html":
templates.DownloadsTab().Render(r.Context(), w)
default:
http.NotFound(w, r)
}

View File

@ -42,3 +42,9 @@ templ About() {
</div>
}
templ AboutTab() {
@BasePage() {
@About()
}
}

View File

@ -36,4 +36,11 @@ templ Downloads() {
</tr>
</table>
</div>
}
templ DownloadsTab() {
@BasePage() {
@Downloads()
}
}

View File

@ -120,3 +120,10 @@ templ Usage(secure string, host string, username string) {
</div>
}
templ UsageTab(secure string, host string, username string) {
@BasePage() {
@Usage(secure, host, username)
}
}