diff options
| author | Xe Iaso <me@xeiaso.net> | 2023-10-27 18:02:19 -0400 |
|---|---|---|
| committer | Xe Iaso <me@xeiaso.net> | 2023-10-27 18:02:19 -0400 |
| commit | 02990e6d3e7a44d409d1d30b2181152f20251a36 (patch) | |
| tree | 5c85b306915dfe7e17d75669136869a6b482e1eb /cmd | |
| parent | 4f77dc44186ae5826c3cf4f0e83ba8eae21af1be (diff) | |
| download | x-02990e6d3e7a44d409d1d30b2181152f20251a36.tar.xz x-02990e6d3e7a44d409d1d30b2181152f20251a36.zip | |
cmd/xedn: serve xesite zips
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/xedn/internal/xesite/xesite.go | 20 | ||||
| -rw-r--r-- | cmd/xedn/main.go | 17 |
2 files changed, 29 insertions, 8 deletions
diff --git a/cmd/xedn/internal/xesite/xesite.go b/cmd/xedn/internal/xesite/xesite.go index 4c25e4a..fac2000 100644 --- a/cmd/xedn/internal/xesite/xesite.go +++ b/cmd/xedn/internal/xesite/xesite.go @@ -6,6 +6,7 @@ import ( "io" "log/slog" "net/http" + "os" "sync" ) @@ -33,13 +34,15 @@ type ZipServer struct { } func NewZipServer(zipPath string) (*ZipServer, error) { - file, err := zip.OpenReader(zipPath) - if err != nil { - return nil, err - } + result := &ZipServer{} - result := &ZipServer{ - zip: file, + if _, err := os.Stat(zipPath); !os.IsNotExist(err) { + file, err := zip.OpenReader(zipPath) + if err != nil { + return nil, err + } + + result.zip = file } return result, nil @@ -66,5 +69,10 @@ func (zs *ZipServer) ServeHTTP(w http.ResponseWriter, r *http.Request) { zs.lock.RLock() defer zs.lock.RUnlock() + if zs.zip == nil { + http.Error(w, "no zip file", http.StatusNotFound) + return + } + http.FileServer(http.FS(zs.zip)).ServeHTTP(w, r) } diff --git a/cmd/xedn/main.go b/cmd/xedn/main.go index fa773a1..6536f0a 100644 --- a/cmd/xedn/main.go +++ b/cmd/xedn/main.go @@ -24,6 +24,7 @@ import ( "tailscale.com/metrics" "tailscale.com/tsnet" "tailscale.com/tsweb" + "within.website/x/cmd/xedn/internal/xesite" "within.website/x/internal" "within.website/x/web/stablediffusion" ) @@ -32,9 +33,10 @@ var ( b2Backend = flag.String("b2-backend", "f001.backblazeb2.com", "Backblaze B2 base host") addr = flag.String("addr", ":8080", "server bind address") metricsAddr = flag.String("metrics-addr", ":8081", "metrics bind address") - dir = flag.String("dir", os.Getenv("XEDN_STATE"), "where XeDN should store cached data") + dir = flag.String("dir", envOr("XEDN_STATE", "./var"), "where XeDN should store cached data") staticDir = flag.String("static-dir", envOr("XEDN_STATIC", "./static"), "where XeDN should look for static assets") stableDiffusionServer = flag.String("stable-diffusion-server", "http://logos:7860", "where XeDN should request Stable Diffusion images from (Automatic1111 over Tailscale)") + tailscaleVerbose = flag.Bool("tailscale-verbose", false, "enable verbose tailscale logging") //go:embed index.html indexHTML []byte @@ -110,6 +112,10 @@ func main() { Dir: filepath.Join(*dir, "tsnet"), } + if *tailscaleVerbose { + srv.Logf = log.Printf + } + srv.Start() cli := srv.HTTPClient() @@ -186,12 +192,19 @@ func main() { cdn.HandleFunc("/file/christine-static/", hdlr) cdn.HandleFunc("/file/xeserv-akko/", hdlr) + os.MkdirAll(filepath.Join(*dir, "xesite"), 0700) + zs, err := xesite.NewZipServer(filepath.Join(*dir, "xesite", "latest.zip")) + if err != nil { + log.Fatal(err) + } + topLevel := mux.NewRouter() topLevel.Host("cdn.xeiaso.net").Handler(cdn) topLevel.Host("xedn.fly.dev").Handler(cdn) topLevel.Host("pneuma.shark-harmonic.ts.net").Handler(cdn) + topLevel.Host("xelaso.net").Handler(zs) slog.Info("starting up", "addr", *addr) - http.ListenAndServe(*addr, cors.Default().Handler(xffMW.Handler(cdn))) + http.ListenAndServe(*addr, cors.Default().Handler(xffMW.Handler(topLevel))) } |
