aboutsummaryrefslogtreecommitdiff
path: root/cmd/xesite
diff options
context:
space:
mode:
authorXe Iaso <me@xeiaso.net>2023-10-27 18:28:45 -0400
committerXe Iaso <me@xeiaso.net>2023-10-27 18:28:45 -0400
commitead50a09cb055d58ef59174e20ccd456a21d23f5 (patch)
tree26d18d1ee52bb37740a28b274b1ea1b13c268862 /cmd/xesite
parent86b731239d9e016950ba28fbcfeddf4076188a2f (diff)
downloadxesite-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.go35
-rw-r--r--cmd/xesite/main.go2
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)
}