impl home.

This commit is contained in:
Bel LaPointe
2026-01-31 16:18:25 -07:00
parent 057a0ab341
commit 7d3da593ca
2 changed files with 72 additions and 3 deletions

View File

@@ -13,8 +13,10 @@ import (
"net/http"
"net/url"
"regexp"
"slices"
"strconv"
"strings"
"text/template"
"time"
"gitea.bel.blue/local/rproxy3/config"
@@ -198,9 +200,13 @@ func (s *Server) Pre(foo http.HandlerFunc) http.HandlerFunc {
return
}
if mapKey(r.Host) == "_" {
switch mapKey(r.Host) {
case "_":
s.List(w)
return
case "home":
s.Home(w, r)
return
}
if auth, err := s.lookupAuth(mapKey(r.Host)); err != nil {
@@ -285,6 +291,50 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
s.Pre(s.Proxy)(w, r)
}
func (s *Server) Home(w http.ResponseWriter, r *http.Request) {
keys := s.db.Keys(nsRouting)
routePrefixes := []string{}
for _, key := range keys {
u, _ := s.lookup(key)
if u != nil && u.String() != "" {
routePrefixes = append(routePrefixes, strings.Split(key, "/")[0])
}
}
slices.Sort(routePrefixes)
t := strings.ReplaceAll(`
<DOCTYPE! html>
<html>
<header>
</header>
<body>
{{- $baseDomain := .baseDomain }}
{{- $scheme := .scheme }}
{{- range .routePrefixes }}
{{- $url := printf "%s://%s.%s" $scheme . $baseDomain }}
<a href="{{ $url }}">{{ . }}</a><br>
{{- end }}
</body>
<footer>
</footer>
</html>
`, "\t", " ")
tmpl, err := template.New("home").Parse(t)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "text/html")
if err := tmpl.Execute(w, map[string]any{
"routePrefixes": routePrefixes,
"domain": r.Host,
"baseDomain": strings.Join(strings.Split(r.Host, ".")[1:], "."),
"scheme": r.URL.Scheme,
}); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
func (s *Server) List(w http.ResponseWriter) {
keys := s.db.Keys(nsRouting)
hostURL := map[string]string{}