slightly better
This commit is contained in:
parent
86c132f9cd
commit
f9b8d6ed1b
7 changed files with 47 additions and 27 deletions
|
@ -8,7 +8,6 @@ import (
|
|||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"heckel.io/ntfy/log"
|
||||
"io"
|
||||
"net"
|
||||
"net/http"
|
||||
|
@ -23,6 +22,8 @@ import (
|
|||
"time"
|
||||
"unicode/utf8"
|
||||
|
||||
"heckel.io/ntfy/log"
|
||||
|
||||
"github.com/emersion/go-smtp"
|
||||
"github.com/gorilla/websocket"
|
||||
"golang.org/x/sync/errgroup"
|
||||
|
@ -76,6 +77,9 @@ var (
|
|||
//go:embed "example.html"
|
||||
exampleSource string
|
||||
|
||||
//go:embed site/app.html
|
||||
appHTML string
|
||||
|
||||
//go:embed site
|
||||
webFs embed.FS
|
||||
webFsCached = &util.CachingEmbedFS{ModTime: time.Now(), FS: webFs}
|
||||
|
@ -317,10 +321,10 @@ func (s *Server) handleInternal(w http.ResponseWriter, r *http.Request, v *visit
|
|||
|
||||
func (s *Server) handleHome(w http.ResponseWriter, r *http.Request, v *visitor) error {
|
||||
if s.config.WebRootIsApp {
|
||||
r.URL.Path = webAppIndex
|
||||
} else {
|
||||
r.URL.Path = webHomeIndex
|
||||
return s.handleRoot(w, r, v)
|
||||
}
|
||||
|
||||
r.URL.Path = webHomeIndex
|
||||
return s.handleStatic(w, r, v)
|
||||
}
|
||||
|
||||
|
@ -332,8 +336,7 @@ func (s *Server) handleTopic(w http.ResponseWriter, r *http.Request, v *visitor)
|
|||
_, err := io.WriteString(w, `{"unifiedpush":{"version":1}}`+"\n")
|
||||
return err
|
||||
}
|
||||
r.URL.Path = webAppIndex
|
||||
return s.handleStatic(w, r, v)
|
||||
return s.handleRoot(w, r, v)
|
||||
}
|
||||
|
||||
func (s *Server) handleEmpty(_ http.ResponseWriter, _ *http.Request, _ *visitor) error {
|
||||
|
@ -353,17 +356,12 @@ func (s *Server) handleExample(w http.ResponseWriter, _ *http.Request, _ *visito
|
|||
}
|
||||
|
||||
func (s *Server) handleWebConfig(w http.ResponseWriter, _ *http.Request, _ *visitor) error {
|
||||
appRoot := "/"
|
||||
if !s.config.WebRootIsApp {
|
||||
appRoot = "/app"
|
||||
}
|
||||
disallowedTopicsStr := `"` + strings.Join(disallowedTopics, `", "`) + `"`
|
||||
w.Header().Set("Content-Type", "text/javascript")
|
||||
_, err := io.WriteString(w, fmt.Sprintf(`// Generated server configuration
|
||||
var config = {
|
||||
appRoot: "%s",
|
||||
disallowedTopics: [%s]
|
||||
};`, appRoot, disallowedTopicsStr))
|
||||
};`, disallowedTopicsStr))
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -380,6 +378,17 @@ func (s *Server) handleUserStats(w http.ResponseWriter, r *http.Request, v *visi
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *Server) handleRoot(w http.ResponseWriter, r *http.Request, _ *visitor) error {
|
||||
// Does this need to be sanitized?
|
||||
html := strings.ReplaceAll(appHTML, `currentPath="/"`, `currentPath="`+r.URL.Path+`"`)
|
||||
handle := func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Write([]byte(html))
|
||||
}
|
||||
|
||||
util.Gzip(http.HandlerFunc(handle)).ServeHTTP(w, r)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Server) handleStatic(w http.ResponseWriter, r *http.Request, _ *visitor) error {
|
||||
r.URL.Path = webSiteDir + r.URL.Path
|
||||
util.Gzip(http.FileServer(http.FS(webFsCached))).ServeHTTP(w, r)
|
||||
|
@ -509,7 +518,7 @@ func (s *Server) forwardPollRequest(v *visitor, m *message) {
|
|||
return
|
||||
}
|
||||
req.Header.Set("X-Poll-ID", m.ID)
|
||||
var httpClient = &http.Client{
|
||||
httpClient := &http.Client{
|
||||
Timeout: time.Second * 10,
|
||||
}
|
||||
response, err := httpClient.Do(req)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue