aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Earthfile20
-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.go112
-rw-r--r--cmd/stealthmountain/main.go152
-rw-r--r--cmd/within.website/main.go2
-rw-r--r--cmd/xedn/cache.go3
-rw-r--r--cmd/xedn/imgoptimize.go9
-rw-r--r--cmd/xedn/main.go57
-rw-r--r--go.mod142
-rw-r--r--go.sum344
-rw-r--r--kube/alrest/x/stealthmountain/bluesky-handle.yaml12
-rw-r--r--web/mistral/mistral.go14
-rw-r--r--web/vastai/error.go32
-rw-r--r--web/vastai/search.go101
-rw-r--r--web/vastai/templates.go67
-rw-r--r--web/vastai/users.go52
-rw-r--r--web/vastai/vastai.go119
34 files changed, 726 insertions, 544 deletions
diff --git a/Earthfile b/Earthfile
index 193cd75..c09610c 100644
--- a/Earthfile
+++ b/Earthfile
@@ -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
diff --git a/go.mod b/go.mod
index 8e68492..cb0bbaa 100644
--- a/go.mod
+++ b/go.mod
@@ -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