diff options
| author | Xe Iaso <me@xeiaso.net> | 2023-10-27 18:28:45 -0400 |
|---|---|---|
| committer | Xe Iaso <me@xeiaso.net> | 2023-10-27 18:28:45 -0400 |
| commit | ead50a09cb055d58ef59174e20ccd456a21d23f5 (patch) | |
| tree | 26d18d1ee52bb37740a28b274b1ea1b13c268862 /cmd/xesite | |
| parent | 86b731239d9e016950ba28fbcfeddf4076188a2f (diff) | |
| download | xesite-ead50a09cb055d58ef59174e20ccd456a21d23f5.tar.xz xesite-ead50a09cb055d58ef59174e20ccd456a21d23f5.zip | |
cmd/xesite: add internal API over Tailscale
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'cmd/xesite')
| -rw-r--r-- | cmd/xesite/internalapi.go | 35 | ||||
| -rw-r--r-- | cmd/xesite/main.go | 2 |
2 files changed, 37 insertions, 0 deletions
diff --git a/cmd/xesite/internalapi.go b/cmd/xesite/internalapi.go new file mode 100644 index 0000000..bbad97c --- /dev/null +++ b/cmd/xesite/internalapi.go @@ -0,0 +1,35 @@ +package main + +import ( + "context" + "log" + "net/http" + "path/filepath" + + "tailscale.com/tsnet" + "tailscale.com/tsweb" + "xeiaso.net/v4/internal/lume" +) + +func internalAPI(srv *tsnet.Server, fs *lume.FS) { + mux := http.NewServeMux() + + mux.HandleFunc("/metrics", tsweb.VarzHandler) + + mux.HandleFunc("/rebuild", func(w http.ResponseWriter, r *http.Request) { + go fs.Update(context.Background()) + }) + + mux.HandleFunc("/zip", func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/zip") + w.Header().Set("Content-Disposition", "attachment; filename=site.zip") + http.ServeFile(w, r, filepath.Join(*dataDir, "site.zip")) + }) + + ln, err := srv.Listen("tcp", ":80") + if err != nil { + log.Fatal(err) + } + + http.Serve(ln, mux) +} diff --git a/cmd/xesite/main.go b/cmd/xesite/main.go index 5806dd7..e8f767f 100644 --- a/cmd/xesite/main.go +++ b/cmd/xesite/main.go @@ -91,6 +91,8 @@ func main() { go rebuildOnChange(fs) } + go internalAPI(srv, fs) + if err != nil { log.Fatal(err) } |
