implement the public index page
Signed-off-by: Xe Iaso <xe@tailscale.com>
This commit is contained in:
parent
24b7c5452c
commit
a4b18e796a
|
@ -86,17 +86,26 @@ func (s *Server) TailnetIndex(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) NotFound(w http.ResponseWriter, r *http.Request) {
|
func (s *Server) NotFound(w http.ResponseWriter, r *http.Request) {
|
||||||
ui, _ := upsertUserInfo(r.Context(), s.db, s.lc, r.RemoteAddr)
|
|
||||||
var up *tailcfg.UserProfile
|
|
||||||
if ui != nil {
|
|
||||||
up = ui.UserProfile
|
|
||||||
}
|
|
||||||
|
|
||||||
s.tmpls.ExecuteTemplate(w, "notfound.tmpl", struct {
|
s.tmpls.ExecuteTemplate(w, "notfound.tmpl", struct {
|
||||||
UserInfo *tailcfg.UserProfile
|
UserInfo *tailcfg.UserProfile
|
||||||
Title string
|
Title string
|
||||||
}{
|
}{
|
||||||
UserInfo: up,
|
UserInfo: nil,
|
||||||
|
Title: "Not found",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Server) PublicIndex(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.URL.Path != "/" {
|
||||||
|
s.NotFound(w, r)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
s.tmpls.ExecuteTemplate(w, "publicindex.tmpl", struct {
|
||||||
|
UserInfo *tailcfg.UserProfile
|
||||||
|
Title string
|
||||||
|
}{
|
||||||
|
UserInfo: nil,
|
||||||
Title: "Not found",
|
Title: "Not found",
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -219,14 +228,25 @@ WHERE p.id = ?1`
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(sp) != 1 && sp[1] == "raw" {
|
if len(sp) != 1 {
|
||||||
|
switch sp[1] {
|
||||||
|
case "raw":
|
||||||
|
w.Header().Set("Content-Type", "text/plain; charset=utf-8")
|
||||||
|
w.Header().Set("Content-Length", fmt.Sprintf("%d", len(data)))
|
||||||
|
|
||||||
|
w.WriteHeader(http.StatusOK)
|
||||||
|
fmt.Fprint(w, data)
|
||||||
|
return
|
||||||
|
case "dl":
|
||||||
w.Header().Set("Content-Type", "text/plain; charset=utf-8")
|
w.Header().Set("Content-Type", "text/plain; charset=utf-8")
|
||||||
w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%q", fname))
|
w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%q", fname))
|
||||||
w.Header().Set("Content-Length", fmt.Sprintf("%d", len(data)))
|
w.Header().Set("Content-Length", fmt.Sprintf("%d", len(data)))
|
||||||
|
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
fmt.Fprint(w, data)
|
fmt.Fprint(w, data)
|
||||||
return
|
default:
|
||||||
|
s.NotFound(w, r)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = s.tmpls.ExecuteTemplate(w, "showpaste.tmpl", struct {
|
err = s.tmpls.ExecuteTemplate(w, "showpaste.tmpl", struct {
|
||||||
|
@ -282,17 +302,21 @@ func main() {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
tailnetMux := http.NewServeMux()
|
|
||||||
|
|
||||||
tmpls := template.Must(template.ParseFS(templateFiles, "tmpl/*.tmpl"))
|
tmpls := template.Must(template.ParseFS(templateFiles, "tmpl/*.tmpl"))
|
||||||
|
|
||||||
srv := &Server{lc, db, tmpls}
|
srv := &Server{lc, db, tmpls}
|
||||||
|
|
||||||
|
tailnetMux := http.NewServeMux()
|
||||||
tailnetMux.Handle("/static/", http.FileServer(http.FS(staticFiles)))
|
tailnetMux.Handle("/static/", http.FileServer(http.FS(staticFiles)))
|
||||||
tailnetMux.HandleFunc("/paste/", srv.ShowPost)
|
tailnetMux.HandleFunc("/paste/", srv.ShowPost)
|
||||||
tailnetMux.HandleFunc("/api/post", srv.TailnetSubmitPaste)
|
tailnetMux.HandleFunc("/api/post", srv.TailnetSubmitPaste)
|
||||||
tailnetMux.HandleFunc("/", srv.TailnetIndex)
|
tailnetMux.HandleFunc("/", srv.TailnetIndex)
|
||||||
|
|
||||||
|
funnelMux := http.NewServeMux()
|
||||||
|
funnelMux.Handle("/static/", http.FileServer(http.FS(staticFiles)))
|
||||||
|
funnelMux.HandleFunc("/", srv.PublicIndex)
|
||||||
|
funnelMux.HandleFunc("/paste/", srv.ShowPost)
|
||||||
|
|
||||||
log.Printf("listening on http://%s", *hostname)
|
log.Printf("listening on http://%s", *hostname)
|
||||||
log.Fatal(http.Serve(ln, tailnetMux))
|
log.Fatal(http.Serve(ln, tailnetMux))
|
||||||
}
|
}
|
||||||
|
|
5
cmd/web/tmpl/publicindex.tmpl
Normal file
5
cmd/web/tmpl/publicindex.tmpl
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{{template "header" .}}
|
||||||
|
<p>Hello! You have connceted to a private pastebin run by a Tailscale user.</p>
|
||||||
|
|
||||||
|
<p>If this is your tailnet and you are not expecting to see this page, please connect to your tailnet and try your query again.</p>
|
||||||
|
{{template "footer" .}}
|
|
@ -6,5 +6,5 @@
|
||||||
{{.Data}}
|
{{.Data}}
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
<a href="/paste/{{.ID}}">Permalink</a> - <a href="/paste/{{.ID}}/dl">Download</a>
|
<a href="/paste/{{.ID}}">Permalink</a> - <a href="/paste/{{.ID}}/dl">Download</a> - <a href="/paste/{{.ID}}/raw">Raw</a>
|
||||||
{{template "footer" .}}
|
{{template "footer" .}}
|
||||||
|
|
Loading…
Reference in a new issue