diff options
| -rw-r--r-- | Earthfile | 20 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/.gitignore (renamed from cmd/sanguisuga/.gitignore) | 0 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/admin.go (renamed from cmd/sanguisuga/admin.go) | 0 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/config.default.ts (renamed from cmd/sanguisuga/config.default.ts) | 0 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/config.go (renamed from cmd/sanguisuga/config.go) | 0 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/config_test.go (renamed from cmd/sanguisuga/config_test.go) | 0 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/dcc.go (renamed from cmd/sanguisuga/dcc.go) | 0 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/internal/dcc/dcc.go (renamed from cmd/sanguisuga/internal/dcc/dcc.go) | 0 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/js/scripts/iptorrents.js (renamed from cmd/sanguisuga/js/scripts/iptorrents.js) | 0 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/js/scripts/subsplease.js (renamed from cmd/sanguisuga/js/scripts/subsplease.js) | 0 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/js/scripts/torrentleech.js (renamed from cmd/sanguisuga/js/scripts/torrentleech.js) | 0 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/main.go (renamed from cmd/sanguisuga/main.go) | 32 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/plex/plex.go (renamed from cmd/sanguisuga/plex/plex.go) | 0 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/sanguisuga.templ (renamed from cmd/sanguisuga/sanguisuga.templ) | 0 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/sanguisuga_templ.go (renamed from cmd/sanguisuga/sanguisuga_templ.go) | 0 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/static/alpine.js (renamed from cmd/sanguisuga/static/alpine.js) | 0 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/static/styles.css (renamed from cmd/sanguisuga/static/styles.css) | 0 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/tailwind.config.js (renamed from cmd/sanguisuga/tailwind.config.js) | 0 | ||||
| -rw-r--r-- | cmd/_old/sanguisuga/tv.go (renamed from cmd/sanguisuga/tv.go) | 0 | ||||
| -rw-r--r-- | cmd/amano/main.go | 112 | ||||
| -rw-r--r-- | cmd/stealthmountain/main.go | 152 | ||||
| -rw-r--r-- | cmd/within.website/main.go | 2 | ||||
| -rw-r--r-- | cmd/xedn/cache.go | 3 | ||||
| -rw-r--r-- | cmd/xedn/imgoptimize.go | 9 | ||||
| -rw-r--r-- | cmd/xedn/main.go | 57 | ||||
| -rw-r--r-- | go.mod | 142 | ||||
| -rw-r--r-- | go.sum | 344 | ||||
| -rw-r--r-- | kube/alrest/x/stealthmountain/bluesky-handle.yaml | 12 | ||||
| -rw-r--r-- | web/mistral/mistral.go | 14 | ||||
| -rw-r--r-- | web/vastai/error.go | 32 | ||||
| -rw-r--r-- | web/vastai/search.go | 101 | ||||
| -rw-r--r-- | web/vastai/templates.go | 67 | ||||
| -rw-r--r-- | web/vastai/users.go | 52 | ||||
| -rw-r--r-- | web/vastai/vastai.go | 119 |
34 files changed, 726 insertions, 544 deletions
@@ -42,6 +42,16 @@ aerial: SAVE IMAGE --push ghcr.io/xe/x/aerial:latest +amano: + FROM +runtime + + COPY +everything/bin/amano /app/bin/amano + CMD ["/app/bin/amano"] + + LABEL org.opencontainers.image.source="https://github.com/Xe/x" + + SAVE IMAGE --push ghcr.io/xe/x/amano:latest + aura: FROM +runtime @@ -140,6 +150,16 @@ sapientwindex: SAVE IMAGE --push ghcr.io/xe/x/sapientwindex:latest +stealthmountain: + FROM +runtime + + COPY +everything/bin/stealthmountain /app/bin/stealthmountain + CMD ["/app/bin/stealthmountain"] + + LABEL org.opencontainers.image.source="https://github.com/Xe/x" + + SAVE IMAGE --push ghcr.io/xe/x/stealthmountain:latest + todayinmarch2020: FROM +runtime diff --git a/cmd/sanguisuga/.gitignore b/cmd/_old/sanguisuga/.gitignore index 5841fb6..5841fb6 100644 --- a/cmd/sanguisuga/.gitignore +++ b/cmd/_old/sanguisuga/.gitignore diff --git a/cmd/sanguisuga/admin.go b/cmd/_old/sanguisuga/admin.go index 65f231f..65f231f 100644 --- a/cmd/sanguisuga/admin.go +++ b/cmd/_old/sanguisuga/admin.go diff --git a/cmd/sanguisuga/config.default.ts b/cmd/_old/sanguisuga/config.default.ts index 77d887e..77d887e 100644 --- a/cmd/sanguisuga/config.default.ts +++ b/cmd/_old/sanguisuga/config.default.ts diff --git a/cmd/sanguisuga/config.go b/cmd/_old/sanguisuga/config.go index 29e6b07..29e6b07 100644 --- a/cmd/sanguisuga/config.go +++ b/cmd/_old/sanguisuga/config.go diff --git a/cmd/sanguisuga/config_test.go b/cmd/_old/sanguisuga/config_test.go index f7d0f8c..f7d0f8c 100644 --- a/cmd/sanguisuga/config_test.go +++ b/cmd/_old/sanguisuga/config_test.go diff --git a/cmd/sanguisuga/dcc.go b/cmd/_old/sanguisuga/dcc.go index defab31..defab31 100644 --- a/cmd/sanguisuga/dcc.go +++ b/cmd/_old/sanguisuga/dcc.go diff --git a/cmd/sanguisuga/internal/dcc/dcc.go b/cmd/_old/sanguisuga/internal/dcc/dcc.go index 82d2ff3..82d2ff3 100644 --- a/cmd/sanguisuga/internal/dcc/dcc.go +++ b/cmd/_old/sanguisuga/internal/dcc/dcc.go diff --git a/cmd/sanguisuga/js/scripts/iptorrents.js b/cmd/_old/sanguisuga/js/scripts/iptorrents.js index fd45abe..fd45abe 100644 --- a/cmd/sanguisuga/js/scripts/iptorrents.js +++ b/cmd/_old/sanguisuga/js/scripts/iptorrents.js diff --git a/cmd/sanguisuga/js/scripts/subsplease.js b/cmd/_old/sanguisuga/js/scripts/subsplease.js index dd9566e..dd9566e 100644 --- a/cmd/sanguisuga/js/scripts/subsplease.js +++ b/cmd/_old/sanguisuga/js/scripts/subsplease.js diff --git a/cmd/sanguisuga/js/scripts/torrentleech.js b/cmd/_old/sanguisuga/js/scripts/torrentleech.js index 7ddfa9e..7ddfa9e 100644 --- a/cmd/sanguisuga/js/scripts/torrentleech.js +++ b/cmd/_old/sanguisuga/js/scripts/torrentleech.js diff --git a/cmd/sanguisuga/main.go b/cmd/_old/sanguisuga/main.go index 4dc9402..06efced 100644 --- a/cmd/sanguisuga/main.go +++ b/cmd/_old/sanguisuga/main.go @@ -28,7 +28,6 @@ import ( irc "github.com/thoj/go-ircevent" "go.jetpack.io/tyson" "honnef.co/go/transmission" - "tailscale.com/hostinfo" "tailscale.com/jsondb" "tailscale.com/tsnet" "within.website/x/internal" @@ -42,7 +41,6 @@ var ( dbLoc = flag.String("db-loc", "./data.json", "path to data file") tysonConfig = flag.String("tyson-config", "./config.ts", "path to configuration secrets (TySON)") externalSeed = flag.Bool("external-seed", false, "try to external seed?") - tsnetVerbose = flag.Bool("tsnet-verbose", false, "enable verbose tsnet logging") crcCheckCLI = flag.Bool("crc-check", false, "if true, check args[0] against hash args[1]") @@ -82,7 +80,6 @@ func ParseTorrentAnnouncement(input string) (*TorrentAnnouncement, error) { func main() { internal.HandleStartup() - hostinfo.SetApp("within.website/x/cmd/sanguisuga") if *crcCheckCLI { if flag.NArg() != 2 { @@ -137,34 +134,10 @@ func main() { if c.Tailscale.DataDir != nil { dataDir = *c.Tailscale.DataDir } - - srv := &tsnet.Server{ - Dir: dataDir, - AuthKey: c.Tailscale.Authkey, - Hostname: c.Tailscale.Hostname, - Logf: func(string, ...any) {}, - } - - if *tsnetVerbose { - srv.Logf = slog.NewLogLogger(slog.Default().Handler().WithAttrs([]slog.Attr{slog.String("from", "tsnet")}), slog.LevelDebug).Printf - } - - if err := srv.Start(); err != nil { - log.Fatalf("can't start tsnet server: %v", err) - } - - go func() { - ln, err := srv.Listen("tcp", ":80") - if err != nil { - log.Fatalf("can't listen on tsnet: %v", err) - } - defer ln.Close() - - log.Fatal(http.Serve(ln, http.DefaultServeMux)) - }() + _ = dataDir cl := &transmission.Client{ - Client: srv.HTTPClient(), + Client: http.DefaultClient, Endpoint: c.Transmission.URL, Username: c.Transmission.User, Password: c.Transmission.Password, @@ -206,7 +179,6 @@ func main() { db: db, bot: bot, tnet: tnet, - srv: srv, animeInFlight: map[string]*SubspleaseAnnouncement{}, } diff --git a/cmd/sanguisuga/plex/plex.go b/cmd/_old/sanguisuga/plex/plex.go index 21b5afb..21b5afb 100644 --- a/cmd/sanguisuga/plex/plex.go +++ b/cmd/_old/sanguisuga/plex/plex.go diff --git a/cmd/sanguisuga/sanguisuga.templ b/cmd/_old/sanguisuga/sanguisuga.templ index 55833bb..55833bb 100644 --- a/cmd/sanguisuga/sanguisuga.templ +++ b/cmd/_old/sanguisuga/sanguisuga.templ diff --git a/cmd/sanguisuga/sanguisuga_templ.go b/cmd/_old/sanguisuga/sanguisuga_templ.go index f2bbaea..f2bbaea 100644 --- a/cmd/sanguisuga/sanguisuga_templ.go +++ b/cmd/_old/sanguisuga/sanguisuga_templ.go diff --git a/cmd/sanguisuga/static/alpine.js b/cmd/_old/sanguisuga/static/alpine.js index e2322d5..e2322d5 100644 --- a/cmd/sanguisuga/static/alpine.js +++ b/cmd/_old/sanguisuga/static/alpine.js diff --git a/cmd/sanguisuga/static/styles.css b/cmd/_old/sanguisuga/static/styles.css index 8a4f438..8a4f438 100644 --- a/cmd/sanguisuga/static/styles.css +++ b/cmd/_old/sanguisuga/static/styles.css diff --git a/cmd/sanguisuga/tailwind.config.js b/cmd/_old/sanguisuga/tailwind.config.js index f848da1..f848da1 100644 --- a/cmd/sanguisuga/tailwind.config.js +++ b/cmd/_old/sanguisuga/tailwind.config.js diff --git a/cmd/sanguisuga/tv.go b/cmd/_old/sanguisuga/tv.go index 73273a8..73273a8 100644 --- a/cmd/sanguisuga/tv.go +++ b/cmd/_old/sanguisuga/tv.go diff --git a/cmd/amano/main.go b/cmd/amano/main.go new file mode 100644 index 0000000..98ec545 --- /dev/null +++ b/cmd/amano/main.go @@ -0,0 +1,112 @@ +package main + +import ( + "context" + "flag" + "fmt" + "log/slog" + "os" + "sync" + "time" + + jetstreamClient "github.com/bluesky-social/jetstream/pkg/client" + "github.com/bluesky-social/jetstream/pkg/client/schedulers/parallel" + jsModels "github.com/bluesky-social/jetstream/pkg/models" + "github.com/goccy/go-json" + "github.com/nats-io/nats.go" + "within.website/x/internal" +) + +var ( + jetStreamURL = flag.String("jetstream-url", "wss://jetstream2.us-east.bsky.network/subscribe", "Jetstream server to subscribe to") + natsURL = flag.String("nats-url", "nats://localhost:4222", "nats url") +) + +func main() { + internal.HandleStartup() + + slog.Info("starting up", + "jetstream-url", jetStreamURL, + "nats-url", natsURL, + ) + + nc, err := nats.Connect(*natsURL) + if err != nil { + slog.Error("can't connect to NATS", "err", err) + os.Exit(1) + } + defer nc.Close() + slog.Info("connected to NATS") + + jsCfg := jetstreamClient.DefaultClientConfig() + jsCfg.WebsocketURL = *jetStreamURL + + jscli, err := jetstreamClient.NewClient( + jsCfg, + slog.With("aspect", "jetstream"), + parallel.NewScheduler( + 1, + "amano", + slog.With("aspect", "fan-out"), + handleEvent(nc), + ), + ) + if err != nil { + slog.Error("can't set up jetstream client", "err", err) + os.Exit(1) + } + defer jscli.Scheduler.Shutdown() + + now := time.Now().UnixNano() + if err := jscli.ConnectAndRead(context.Background(), &now); err != nil { + slog.Error("can't connect to jetstream", "err", err) + os.Exit(1) + } + + slog.Info("connected to jetstream") + + mu := sync.Mutex{} + mu.Lock() + mu.Lock() +} + +func handleEvent(nc *nats.Conn) func(ctx context.Context, ev *jsModels.Event) error { + return func(ctx context.Context, ev *jsModels.Event) error { + switch ev.Kind { + case "account": + data, err := json.Marshal(ev.Account) + if err != nil { + return fmt.Errorf("can't marshal account event: %w", err) + } + + if err := nc.Publish("amano:account", data); err != nil { + return fmt.Errorf("can't publish account event: %w", err) + } + case "identity": + data, err := json.Marshal(ev.Identity) + if err != nil { + return fmt.Errorf("can't marshal identity event: %w", err) + } + + if err := nc.Publish("amano:identity", data); err != nil { + return fmt.Errorf("can't publish identity event: %w", err) + } + case "commit": + subject := fmt.Sprintf("amano:commit:%s", ev.Commit.Collection) + data, err := json.Marshal(ev.Commit) + if err != nil { + return fmt.Errorf("can't marshal commit event: %w", err) + } + + m := nats.NewMsg(subject) + m.Data = data + m.Header.Set("bsky-actor-did", ev.Did) + + if err := nc.PublishMsg(m); err != nil { + return fmt.Errorf("can't publish %q event: %w", subject, err) + } + } + + return nil + } +} diff --git a/cmd/stealthmountain/main.go b/cmd/stealthmountain/main.go new file mode 100644 index 0000000..a8a17fb --- /dev/null +++ b/cmd/stealthmountain/main.go @@ -0,0 +1,152 @@ +package main + +import ( + "context" + "flag" + "fmt" + "log/slog" + "os" + "regexp" + "time" + + comatproto "github.com/bluesky-social/indigo/api/atproto" + bskyData "github.com/bluesky-social/indigo/api/bsky" + jsModels "github.com/bluesky-social/jetstream/pkg/models" + bsky "github.com/danrusei/gobot-bsky" + "github.com/goccy/go-json" + "github.com/nats-io/nats.go" + "within.website/x/internal" +) + +const ( + PostTopic = "amano:commit:app.bsky.feed.post" +) + +var ( + blueskyAuthkey = flag.String("bsky-authkey", "", "Bluesky authkey") + blueskyHandle = flag.String("bsky-handle", "", "Bluesky handle") + blueskyPDS = flag.String("bsky-pds", "https://bsky.social", "Bluesky PDS") + natsURL = flag.String("nats-url", "nats://localhost:4222", "nats url") + + sneakPeakRegex = regexp.MustCompile("(?i)sneak peak") +) + +func main() { + internal.HandleStartup() + + slog.Info("starting up", + "have-bsky-authkey", *blueskyAuthkey != "", + "bsky-handle", *blueskyHandle, + "bsky-pds", *blueskyPDS, + "nats-url", *natsURL, + ) + + nc, err := nats.Connect(*natsURL) + if err != nil { + slog.Error("can't connect to NATS", "err", err) + os.Exit(1) + } + defer nc.Close() + slog.Info("connected to NATS") + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + bsAgent, err := bskyAuth(ctx, *blueskyPDS, *blueskyHandle, *blueskyAuthkey) + if err != nil { + slog.Error("can't auth to bluesky", "err", err) + os.Exit(1) + } + + sub, err := nc.SubscribeSync(PostTopic) + if err != nil { + slog.Error("can't subscribe to post feed", "err", err) + os.Exit(1) + } + defer sub.Drain() + + for { + m, err := sub.NextMsg(time.Second) + if err != nil { + slog.Error("can't read message", "err", err) + continue + } + + var commit jsModels.Commit + if err := json.Unmarshal(m.Data, &commit); err != nil { + slog.Error("can't unmarshal commit", "err", err) + continue + } + + if commit.Operation == "delete" { + continue + } + + var post bskyData.FeedPost + if err := json.Unmarshal(commit.Record, &post); err != nil { + slog.Error("can't unmarshal post", "err", err) + continue + } + + if sneakPeakRegex.MatchString(post.Text) { + actorID := m.Header.Get("bsky-actor-did") + slog.Info("found a stealth mountain!", "id", commit.Rev, "actor", actorID) + reply, err := bsky.NewPostBuilder(`I think you mean "sneak peek"`).Build() + if err != nil { + slog.Error("can't build reply post", "err", err) + } + parent := comatproto.RepoStrongRef{ + LexiconTypeID: "app.bsky.feed.post", + Uri: fmt.Sprintf("at://%s/app.bsky.feed.post/%s", actorID, commit.RKey), + Cid: commit.CID, + } + root := parent + + if post.Reply != nil { + root = *post.Reply.Root + } + + reply.Reply = &bskyData.FeedPost_ReplyRef{ + Parent: &parent, + Root: &root, + } + + reply.CreatedAt = time.Now().UTC().Format(time.RFC3339) + + cid, uri, err := bsAgent.PostToFeed(ctx, reply) + if err != nil { + slog.Error("cannot post to feed", "err", err) + continue + } + + slog.Info("posted to bluesky", "bluesky_cid", cid, "bluesky_uri", uri) + } + } +} + +func bskyAuth(ctx context.Context, pds, handle, authkey string) (*bsky.BskyAgent, error) { + bluesky := bsky.NewAgent(ctx, pds, handle, authkey) + if err := bluesky.Connect(ctx); err != nil { + slog.Error("failed to connect to bluesky", "err", err) + return nil, err + } + + go func() { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + t := time.NewTicker(5 * time.Minute) + defer t.Stop() + for range t.C { + if err := bluesky.Connect(ctx); err != nil { + slog.Error("can't reauth to bluesky", "err", err) + } + } + }() + + if err := bluesky.Connect(ctx); err != nil { + slog.Error("failed to connect to bluesky", "err", err) + return nil, err + } + + return &bluesky, nil +} diff --git a/cmd/within.website/main.go b/cmd/within.website/main.go index 8bb5c75..552d917 100644 --- a/cmd/within.website/main.go +++ b/cmd/within.website/main.go @@ -10,7 +10,6 @@ import ( "github.com/a-h/templ" "go.jetpack.io/tyson" - "tailscale.com/tsweb" "within.website/x/internal" "within.website/x/web/vanity" "within.website/x/xess" @@ -83,7 +82,6 @@ func main() { } xess.Mount(mux) - mux.HandleFunc("/debug/varz", tsweb.VarzHandler) mux.Handle("/{$}", templ.Handler( xess.Base( diff --git a/cmd/xedn/cache.go b/cmd/xedn/cache.go index 10a7d6e..b3db834 100644 --- a/cmd/xedn/cache.go +++ b/cmd/xedn/cache.go @@ -146,7 +146,6 @@ func (dc *Cache) Load(dir string, w io.Writer) error { if t.Before(now) { tx.DeleteBucket([]byte(dir)) - fileDeaths.Get(dir).Add(1) return ErrNotCached } @@ -183,7 +182,6 @@ func (dc *Cache) Load(dir string, w io.Writer) error { w.Write(data) cacheHits.Add(1) - fileHits.Add(dir, 1) return nil }) @@ -294,7 +292,6 @@ func (dc *Cache) CronPurgeDead() { return fmt.Errorf("when trying to delete bucket %s: %w", string(name), err) } - fileDeaths.Add(string(name), 1) lg.Info("deleted", "diesAt", diesAt) } diff --git a/cmd/xedn/imgoptimize.go b/cmd/xedn/imgoptimize.go index c82c362..9a4206b 100644 --- a/cmd/xedn/imgoptimize.go +++ b/cmd/xedn/imgoptimize.go @@ -22,7 +22,6 @@ import ( "github.com/gen2brain/webp" "go.etcd.io/bbolt" "golang.org/x/sync/singleflight" - "tailscale.com/metrics" ) type OptimizedImageServer struct { @@ -32,11 +31,6 @@ type OptimizedImageServer struct { group *singleflight.Group } -var ( - OISFileConversions = metrics.LabelMap{Label: "format"} - OISFileHits = metrics.LabelMap{Label: "path"} -) - func (ois *OptimizedImageServer) ServeHTTP(w http.ResponseWriter, r *http.Request) { // /sticker/character/mood/width acc := strings.Split(r.Header.Get("Accept"), ",") @@ -88,7 +82,6 @@ func (ois *OptimizedImageServer) ServeHTTP(w http.ResponseWriter, r *http.Reques w.Header().Set("Etag", fmt.Sprintf(`W/"%s"`, Hash(r.URL.Path))) w.WriteHeader(http.StatusOK) w.Write(data) - OISFileHits.Add(r.URL.Path, 1) } func (ois *OptimizedImageServer) ResizeTo(widthPixels int, character, mood, format string) ([]byte, error) { @@ -151,8 +144,6 @@ func (ois *OptimizedImageServer) ResizeTo(widthPixels int, character, mood, form return nil, fmt.Errorf("i don't know how to render to %s yet, sorry", format) } - OISFileConversions.Add(format, 1) - err = ois.DB.Update(func(tx *bbolt.Tx) error { bkt, err := tx.CreateBucketIfNotExists([]byte("sticker_cache")) if err != nil { diff --git a/cmd/xedn/main.go b/cmd/xedn/main.go index 26d579c..f1dd391 100644 --- a/cmd/xedn/main.go +++ b/cmd/xedn/main.go @@ -8,7 +8,6 @@ import ( "flag" "fmt" "image/png" - "io" "log" "log/slog" "net/http" @@ -22,10 +21,6 @@ import ( "github.com/sebest/xff" "go.etcd.io/bbolt" "golang.org/x/sync/singleflight" - "tailscale.com/hostinfo" - "tailscale.com/metrics" - "tailscale.com/tsnet" - "tailscale.com/tsweb" "within.website/x/internal" "within.website/x/internal/xesite" "within.website/x/web/fly/flymachines" @@ -39,7 +34,6 @@ var ( 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://xe-automatic1111.internal:8080", "where XeDN should request Stable Diffusion images from (Automatic1111)") - tailscaleVerbose = flag.Bool("tailscale-verbose", false, "enable verbose tailscale logging") //go:embed index.html indexHTML []byte @@ -60,31 +54,17 @@ var ( etagMatches = expvar.NewInt("counter_xedn_etag_matches") - referers = metrics.LabelMap{Label: "url"} - fileHits = metrics.LabelMap{Label: "path"} - fileDeaths = metrics.LabelMap{Label: "path"} - fileMimeTypes = metrics.LabelMap{Label: "type"} - etags map[string]string etagLock sync.RWMutex ) func init() { etags = map[string]string{} - - expvar.Publish("gauge_xedn_referers", &referers) - expvar.Publish("gauge_xedn_file_hits", &fileHits) - expvar.Publish("gauge_xedn_file_deaths", &fileDeaths) - expvar.Publish("gauge_xedn_file_mime_type", &fileMimeTypes) - expvar.Publish("gauge_xedn_ois_file_conversions", &OISFileConversions) - expvar.Publish("gauge_xedn_ois_file_hits", &OISFileHits) } func main() { internal.HandleStartup() - hostinfo.SetApp("within.website/x/cmd/xedn") - os.MkdirAll(filepath.Join(*dir, "tsnet"), 0700) db, err := bbolt.Open(filepath.Join(*dir, "data"), 0600, &bbolt.Options{}) @@ -108,19 +88,6 @@ func main() { group: &singleflight.Group{}, } - srv := &tsnet.Server{ - Hostname: "xedn-" + os.Getenv("FLY_REGION"), - Logf: log.New(io.Discard, "", 0).Printf, - AuthKey: os.Getenv("TS_AUTHKEY"), - Dir: filepath.Join(*dir, "tsnet"), - } - - if *tailscaleVerbose { - srv.Logf = log.Printf - } - - srv.Start() - sd := &StableDiffusion{ db: db, client: &stablediffusion.Client{HTTP: http.DefaultClient, APIServer: *stableDiffusionServer}, @@ -137,26 +104,6 @@ func main() { log.Fatal(err) } - go func() { - lis, err := srv.Listen("tcp", ":80") - if err != nil { - log.Fatalf("can't listen on tsnet: %v", err) - } - - http.DefaultServeMux.HandleFunc("/debug/varz", tsweb.VarzHandler) - http.DefaultServeMux.HandleFunc("/xedn/files", dc.ListFiles) - http.DefaultServeMux.HandleFunc("/xedn/purge", dc.Purge) - http.DefaultServeMux.HandleFunc("/xesite/generations", zs.ListGenerations) - http.DefaultServeMux.HandleFunc("/xesite/nuke", zs.NukeGeneration) - http.DefaultServeMux.HandleFunc("/xesite/upload", zs.UploadNewZip) - http.DefaultServeMux.HandleFunc("/sticker/files", ois.ListFiles) - http.DefaultServeMux.HandleFunc("/sticker/purge", ois.Purge) - - defer srv.Close() - defer lis.Close() - log.Fatal(http.Serve(lis, http.DefaultServeMux)) - }() - xffMW, err := xff.Default() if err != nil { log.Fatal(err) @@ -167,7 +114,6 @@ func main() { { mux := http.NewServeMux() - mux.HandleFunc("/metrics", tsweb.VarzHandler) mux.HandleFunc("/xedn/optimize", iu.CreateImage) mux.HandleFunc("/", http.FileServer(http.Dir(filepath.Join(*dir, "uploud"))).ServeHTTP) @@ -232,9 +178,6 @@ func main() { return } - referers.Get(r.Header.Get("Referer")).Add(1) - fileMimeTypes.Get(r.Header.Get("Content-Type")).Add(1) - if err := dc.GetFile(w, r); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return @@ -1,19 +1,20 @@ module within.website/x -go 1.23 +go 1.23.1 -toolchain go1.23.0 +toolchain go1.23.2 require ( cirello.io/goherokuname v0.0.0-20190914093443-b436bae8c2c5 connectrpc.com/connect v1.16.2 - entgo.io/ent v0.13.1 github.com/Marcel-ICMC/graw v0.0.0-20230411090719-e24cd8592d25 github.com/McKael/madon/v2 v2.4.0 github.com/Songmu/gitconfig v0.2.0 github.com/a-h/templ v0.2.771 github.com/adrg/frontmatter v0.2.0 github.com/aws/aws-sdk-go-v2/service/s3 v1.55.1 + github.com/bluesky-social/indigo v0.0.0-20240905024844-a4f38639767f + github.com/bluesky-social/jetstream v0.0.0-20241022030937-75fdbaa83787 github.com/bwmarrin/discordgo v0.28.1 github.com/c-bata/go-prompt v0.2.6 github.com/cenkalti/backoff/v4 v4.3.0 @@ -28,8 +29,8 @@ require ( github.com/gen2brain/webp v0.4.4 github.com/go-gorm/caches/v4 v4.0.5 github.com/go-interpreter/wagon v0.6.0 + github.com/goccy/go-json v0.10.2 github.com/gomarkdown/markdown v0.0.0-20240328165702-4d01890c35c0 - github.com/google/generative-ai-go v0.16.0 github.com/google/go-github v17.0.0+incompatible github.com/google/subcommands v1.2.0 github.com/google/uuid v1.6.0 @@ -39,14 +40,13 @@ require ( github.com/joho/godotenv v1.5.1 github.com/kr/pretty v0.3.1 github.com/lib/pq v1.10.9 - github.com/mndrix/golog v0.0.0-20170330170653-a28e2a269775 github.com/mymmrac/telego v0.29.2 github.com/nats-io/nats.go v1.35.0 github.com/ncruces/go-sqlite3 v0.16.0 github.com/ncruces/go-sqlite3/gormlite v0.16.0 + github.com/nicklaw5/helix/v2 v2.30.0 github.com/orandin/slog-gorm v1.3.2 github.com/otiai10/copy v1.14.0 - github.com/peterh/liner v1.2.2 github.com/pires/go-proxyproto v0.7.0 github.com/pkg/errors v0.9.1 github.com/posener/complete v1.2.3 @@ -55,7 +55,6 @@ require ( github.com/rodaine/table v1.2.0 github.com/rogpeppe/go-internal v1.12.0 github.com/rs/cors v1.11.0 - github.com/samber/go-gpt-3-encoder v0.3.1 github.com/sebest/xff v0.0.0-20210106013422-671bd2870b3a github.com/speps/go-hashids v2.0.0+incompatible github.com/stoewer/go-strcase v1.3.0 @@ -69,47 +68,27 @@ require ( golang.org/x/crypto v0.26.0 golang.org/x/oauth2 v0.21.0 golang.org/x/sync v0.8.0 - google.golang.org/api v0.186.0 google.golang.org/grpc v1.64.1 gorm.io/gorm v1.25.10 gorm.io/plugin/prometheus v0.1.0 - honnef.co/go/transmission v0.0.0-20200712215954-58262f0ca9c9 - jaytaylor.com/html2text v0.0.0-20230321000545-74c2419ad056 - modernc.org/sqlite v1.30.0 nhooyr.io/websocket v1.8.11 - tailscale.com v1.66.4 - tulpa.dev/cadey/jvozba v0.0.0-20200326200349-f0ebe310be06 - within.website/johaus v1.1.0 ) require ( - ariga.io/atlas v0.19.1-0.20240203083654-5948b60a8e43 // indirect - cloud.google.com/go v0.115.0 // indirect - cloud.google.com/go/ai v0.8.0 // indirect - cloud.google.com/go/auth v0.6.0 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect - cloud.google.com/go/compute/metadata v0.3.0 // indirect - cloud.google.com/go/longrunning v0.5.7 // indirect dario.cat/mergo v1.0.0 // indirect github.com/AlekSi/pointer v1.2.0 // indirect - github.com/BurntSushi/toml v1.3.2 // indirect - github.com/Khan/genqlient v0.6.0 // indirect + github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.2.1 // indirect github.com/Masterminds/sprig/v3 v3.2.3 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ProtonMail/go-crypto v1.0.0 // indirect - github.com/PuerkitoBio/rehttp v1.3.0 // indirect - github.com/agext/levenshtein v1.2.1 // indirect github.com/andybalholm/brotli v1.1.0 // indirect - github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 // indirect github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.9 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.11 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.9 // indirect - github.com/bits-and-blooms/bitset v1.13.0 // indirect - github.com/bluesky-social/indigo v0.0.0-20240313175749-733547c2ba2c // indirect github.com/bytedance/sonic v1.11.3 // indirect github.com/carlmjohnson/versioninfo v0.22.5 // indirect github.com/cavaliergopher/cpio v1.0.1 // indirect @@ -118,45 +97,32 @@ require ( github.com/cli/go-gh v0.1.0 // indirect github.com/cloudflare/circl v1.3.8 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect - github.com/dblohm7/wingoes v0.0.0-20240119213807-a09d6be7affa // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect - github.com/digitalocean/go-smbios v0.0.0-20180907143718-390a4f403a8e // indirect - github.com/dustin/go-humanize v1.0.1 // indirect github.com/ebitengine/purego v0.7.1 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/evanw/esbuild v0.19.11 // indirect github.com/fasthttp/router v1.5.0 // indirect github.com/fa |
