aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorXe Iaso <me@xeiaso.net>2023-10-27 18:02:19 -0400
committerXe Iaso <me@xeiaso.net>2023-10-27 18:02:19 -0400
commit02990e6d3e7a44d409d1d30b2181152f20251a36 (patch)
tree5c85b306915dfe7e17d75669136869a6b482e1eb /cmd
parent4f77dc44186ae5826c3cf4f0e83ba8eae21af1be (diff)
downloadx-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.go20
-rw-r--r--cmd/xedn/main.go17
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)))
}