aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd/hlang/http.go3
-rw-r--r--cmd/vest-pit-near/main.go18
-rw-r--r--cmd/xatci/main.go41
-rw-r--r--cmd/xedn/imgoptimize.go4
-rw-r--r--cmd/xedn/main.go36
-rw-r--r--cmd/xedn/stablediffusion.go8
-rw-r--r--internal/confyg/flagconfyg/flagconfyg.go4
-rw-r--r--internal/internal.go3
8 files changed, 49 insertions, 68 deletions
diff --git a/cmd/hlang/http.go b/cmd/hlang/http.go
index ef496a3..f96704f 100644
--- a/cmd/hlang/http.go
+++ b/cmd/hlang/http.go
@@ -10,7 +10,6 @@ import (
"os"
"github.com/rs/cors"
- "within.website/ln/ex"
"within.website/x/cmd/hlang/run"
)
@@ -27,7 +26,7 @@ func doHTTP() error {
srv := &http.Server{
Addr: ":" + *port,
- Handler: ex.HTTPLog(cors.Default().Handler(http.DefaultServeMux)),
+ Handler: cors.Default().Handler(http.DefaultServeMux),
}
if *sockpath != "" {
diff --git a/cmd/vest-pit-near/main.go b/cmd/vest-pit-near/main.go
index 2d9aa7e..a6e10bd 100644
--- a/cmd/vest-pit-near/main.go
+++ b/cmd/vest-pit-near/main.go
@@ -14,11 +14,9 @@ import (
"path/filepath"
"time"
+ "golang.org/x/exp/slog"
"tailscale.com/tsnet"
"tailscale.com/tsweb"
- "within.website/ln"
- "within.website/ln/ex"
- "within.website/ln/opname"
"within.website/x/internal"
"within.website/x/internal/yeet"
"within.website/x/web/discordwebhook"
@@ -27,7 +25,7 @@ import (
var (
checkURL = flag.String("check-url", "https://am.i.mullvad.net/json", "connection endpoint to check")
containerNet = flag.String("container", "wireguard", "container to assume the network stack of")
- dockerImage = flag.String("docker-image", "ghcr.io/xe/alpine:3.17.3", "docker image to use")
+ dockerImage = flag.String("docker-image", "ghcr.io/xe/alpine:3.18.2", "docker image to use")
stateDir = flag.String("state-dir", "", "where to store state data")
tsnetHostname = flag.String("tsnet-hostname", "vest-pit-near", "hostname for tsnet")
webhook = flag.String("webhook", "", "Discord webhook URL")
@@ -38,8 +36,6 @@ var (
func main() {
internal.HandleStartup()
- ctx := context.Background()
-
os.MkdirAll(filepath.Join(*stateDir, "tsnet"), 0700)
srv := &tsnet.Server{
@@ -53,14 +49,14 @@ func main() {
lis, err := srv.Listen("tcp", ":80")
if err != nil {
- ln.FatalErr(ctx, err, ln.Action("tsnet listening"))
+ log.Fatalf("can't listen over tsnet: %v", err)
}
http.DefaultServeMux.HandleFunc("/metrics", tsweb.VarzHandler)
defer srv.Close()
defer lis.Close()
- ln.FatalErr(opname.With(ctx, "metrics-tsnet"), http.Serve(lis, ex.HTTPLog(http.DefaultServeMux)))
+ log.Fatal(http.Serve(lis, http.DefaultServeMux))
}
func cron() {
@@ -70,7 +66,7 @@ func cron() {
defer cancel()
if err := check(ctx); err != nil {
- ln.Error(ctx, err)
+ slog.Error("can't check status", "err", err)
defer failureCount.Set(1)
checkErr := err
@@ -82,12 +78,12 @@ func cron() {
AvatarURL: "https://cdn.discordapp.com/attachments/262330174140448768/1093162451341684736/04401-1288759123-flat_color_limited_palette_low_contrast_high_contrast_chromatic_aberration_1girl_hoodie_green_hair_coffee_onsen_green.png",
}))
if err != nil {
- ln.Error(ctx, err)
+ slog.Error("can't report VPN is down", "err", err)
return
}
if err := discordwebhook.Validate(resp); err != nil {
- ln.Error(ctx, err)
+ slog.Error("can't validate webhook response", "err", err)
return
}
}
diff --git a/cmd/xatci/main.go b/cmd/xatci/main.go
index 6cdb50d..ae6db94 100644
--- a/cmd/xatci/main.go
+++ b/cmd/xatci/main.go
@@ -4,6 +4,7 @@ import (
"context"
"flag"
"fmt"
+ "log"
"strings"
"time"
@@ -12,8 +13,7 @@ import (
"github.com/mymmrac/telego"
th "github.com/mymmrac/telego/telegohandler"
tu "github.com/mymmrac/telego/telegoutil"
- "within.website/ln"
- "within.website/ln/opname"
+ "golang.org/x/exp/slog"
"within.website/x/internal"
"within.website/x/web/marginalia"
"within.website/x/web/openai/chatgpt"
@@ -30,10 +30,6 @@ var (
func main() {
internal.HandleStartup()
- ctx, cancel := context.WithCancel(context.Background())
- defer cancel()
- ctx = opname.With(ctx, "xatci")
-
mc := marginalia.New(*marginaliaToken, nil)
cGPT := chatgpt.NewClient(*openAIToken)
@@ -42,19 +38,19 @@ func main() {
// use in development only
bot, err := telego.NewBot(*telegramToken)
if err != nil {
- ln.FatalErr(ctx, err)
+ log.Fatal(err)
}
// Get updates channel
updates, err := bot.UpdatesViaLongPolling(nil)
if err != nil {
- ln.FatalErr(ctx, err)
+ log.Fatal(err)
}
// Create bot handler and specify from where to get updates
bh, err := th.NewBotHandler(bot, updates)
if err != nil {
- ln.FatalErr(ctx, err)
+ log.Fatal(err)
}
// Stop handling updates
@@ -70,7 +66,7 @@ func main() {
tu.ID(update.Message.Chat.ID),
fmt.Sprintf("Hello %s!", update.Message.From.FirstName),
)); err != nil {
- ln.Error(ctx, err)
+ slog.Error("can't send message", "err", err)
}
}, th.CommandEqual("start"))
@@ -84,22 +80,20 @@ func main() {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
defer cancel()
- ctx = opname.With(ctx, "xatci.marginalia.search")
q := strings.Join(strings.Split(update.Message.Text, " ")[1:], " ")
- ctx = ln.WithF(ctx, ln.F{
- "telegram_requestor": update.Message.From.ID,
- "telegram_requestor_name": fmt.Sprintf("%s %s", update.Message.From.FirstName, update.Message.From.LastName),
- "search_query": q,
- })
-
+ lg := slog.Default().With(
+ "telegram_requestor", update.Message.From.ID,
+ "telegram_requestor_name", fmt.Sprintf("%s %s", update.Message.From.FirstName, update.Message.From.LastName),
+ "search_query", q,
+ )
results, err := mc.Search(ctx, &marginalia.Request{
Query: q,
Count: aws.Int(5),
})
if err != nil {
- ln.Error(ctx, err)
+ lg.Error("can't search", "err", err)
bot.SendMessage(tu.Message(
tu.ID(update.Message.Chat.ID),
fmt.Sprintf("Error: %v", err),
@@ -114,10 +108,7 @@ func main() {
for _, result := range results.Results {
fmt.Fprintf(&sb, "**%s** (%s):\n", result.Title, result.URL)
- ln.Log(ctx, ln.Action("resolving article"), ln.F{
- "result_title": result.Title,
- "result_url": result.URL,
- })
+ lg.Info("resolving article", "result_title", result.Title, "result_url", result.URL)
article, err := readability.FromURL(result.URL, 30*time.Second)
if err != nil {
@@ -139,7 +130,7 @@ func main() {
},
})
if err != nil {
- ln.Error(ctx, err)
+ lg.Error("can't summarize article", "err", err)
}
fmt.Fprintf(&sb, "%s\n\n", resp.Choices[0].Message.Content)
@@ -149,11 +140,11 @@ func main() {
msg.ParseMode = telego.ModeMarkdown
if _, err := bot.SendMessage(msg); err != nil {
- ln.Error(ctx, err)
+ lg.Error("can't send final message", "err", err)
return
}
- ln.Log(ctx, ln.Action("query successful"))
+ lg.Info("query successful")
}, th.CommandEqual("search"))
// Register new handler with match on any command
diff --git a/cmd/xedn/imgoptimize.go b/cmd/xedn/imgoptimize.go
index 1b1347b..95779c6 100644
--- a/cmd/xedn/imgoptimize.go
+++ b/cmd/xedn/imgoptimize.go
@@ -17,9 +17,9 @@ import (
"github.com/chai2010/webp"
"github.com/disintegration/imaging"
"go.etcd.io/bbolt"
+ "golang.org/x/exp/slog"
"golang.org/x/sync/singleflight"
"tailscale.com/metrics"
- "within.website/ln"
"within.website/x/internal/avif"
)
@@ -74,7 +74,7 @@ func (ois *OptimizedImageServer) ServeHTTP(w http.ResponseWriter, r *http.Reques
data, err := ois.ResizeTo(width, character, mood, format)
if err != nil {
- ln.Error(r.Context(), err)
+ slog.Error("can't convert image", "err", err)
http.Error(w, "can't convert image", http.StatusInternalServerError)
return
}
diff --git a/cmd/xedn/main.go b/cmd/xedn/main.go
index 02317ba..d1f263c 100644
--- a/cmd/xedn/main.go
+++ b/cmd/xedn/main.go
@@ -3,7 +3,6 @@ package main
import (
"bytes"
- "context"
"crypto/md5"
_ "embed"
"encoding/json"
@@ -24,14 +23,12 @@ import (
"github.com/rs/cors"
"github.com/sebest/xff"
"go.etcd.io/bbolt"
+ "golang.org/x/exp/slog"
"golang.org/x/sync/singleflight"
"tailscale.com/hostinfo"
"tailscale.com/metrics"
"tailscale.com/tsnet"
"tailscale.com/tsweb"
- "within.website/ln"
- "within.website/ln/ex"
- "within.website/ln/opname"
"within.website/x/internal"
"within.website/x/web"
"within.website/x/web/stablediffusion"
@@ -91,12 +88,12 @@ func (dc *Cache) Purge(w http.ResponseWriter, r *http.Request) {
defer r.Body.Close()
if err := json.NewDecoder(r.Body).Decode(&files); err != nil {
- ln.Error(r.Context(), err, ln.F{"files": files})
+ slog.Error("can't read files to be purged", "err", err)
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
- ln.Log(r.Context(), ln.Action("purging files"), ln.F{"files": files})
+ slog.Info("purging files", "files", files)
if err := dc.DB.Update(func(tx *bbolt.Tx) error {
for _, fname := range files {
@@ -112,7 +109,7 @@ func (dc *Cache) Purge(w http.ResponseWriter, r *http.Request) {
return nil
}); err != nil {
- ln.Error(r.Context(), err, ln.F{"files": files})
+ slog.Error("can't purge files", "err", err, "files", files)
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
@@ -302,10 +299,10 @@ func (dc *Cache) GetFile(w http.ResponseWriter, r *http.Request) error {
}
func (dc *Cache) CronPurgeDead() {
- ctx := opname.With(context.Background(), "cronpurgedead")
+ lg := slog.Default().With("job", "purgeDead")
for range time.Tick(30 * time.Minute) {
- ln.Log(ctx, ln.Action("starting"))
+ lg.Info("starting")
if err := dc.DB.Update(func(tx *bbolt.Tx) error {
if err := tx.ForEach(func(name []byte, b *bbolt.Bucket) error {
@@ -313,10 +310,10 @@ func (dc *Cache) CronPurgeDead() {
return nil
}
- ctx := ln.WithF(ctx, ln.F{"path": string(name)})
+ lg := lg.With("path", string(name))
diesAtBytes := b.Get([]byte("diesAt"))
if diesAtBytes == nil {
- ln.Log(ctx, ln.Info("no diesAt key"))
+ lg.Error("no diesAt key")
return nil
}
@@ -331,7 +328,7 @@ func (dc *Cache) CronPurgeDead() {
}
fileDeaths.Add(string(name), 1)
- ln.Log(ctx, ln.Info("deleted"), ln.F{"diesAt": diesAt.Format(time.RFC3339)})
+ lg.Info("deleted", "diesAt", diesAt)
}
return nil
@@ -341,7 +338,7 @@ func (dc *Cache) CronPurgeDead() {
return nil
}); err != nil {
- ln.Error(ctx, err)
+ lg.Info("can't update database: %v", "err", err)
}
}
}
@@ -368,7 +365,6 @@ func init() {
func main() {
internal.HandleStartup()
- ctx := opname.With(context.Background(), "startup")
hostinfo.SetApp("within.website/x/cmd/xedn")
@@ -376,7 +372,7 @@ func main() {
db, err := bbolt.Open(filepath.Join(*dir, "data"), 0600, &bbolt.Options{})
if err != nil {
- ln.FatalErr(ctx, err)
+ log.Fatal(err)
}
dc := &Cache{
@@ -413,7 +409,7 @@ func main() {
go func() {
lis, err := srv.Listen("tcp", ":80")
if err != nil {
- ln.FatalErr(ctx, err, ln.Action("tsnet listening"))
+ log.Fatalf("can't listen on tsnet: %v", err)
}
http.DefaultServeMux.HandleFunc("/debug/varz", tsweb.VarzHandler)
@@ -424,12 +420,12 @@ func main() {
defer srv.Close()
defer lis.Close()
- ln.FatalErr(opname.With(ctx, "metrics-tsnet"), http.Serve(lis, ex.HTTPLog(http.DefaultServeMux)))
+ log.Fatal(http.Serve(lis, http.DefaultServeMux))
}()
xffMW, err := xff.Default()
if err != nil {
- ln.FatalErr(ctx, err)
+ log.Fatal(err)
}
os.MkdirAll(*dir, 0700)
@@ -483,6 +479,6 @@ func main() {
mux.HandleFunc("/file/christine-static/", hdlr)
mux.HandleFunc("/file/xeserv-akko/", hdlr)
- ln.Log(context.Background(), ln.F{"addr": *addr})
- http.ListenAndServe(*addr, cors.Default().Handler(xffMW.Handler(ex.HTTPLog(mux))))
+ slog.Info("starting up", "addr", *addr)
+ http.ListenAndServe(*addr, cors.Default().Handler(xffMW.Handler(mux)))
}
diff --git a/cmd/xedn/stablediffusion.go b/cmd/xedn/stablediffusion.go
index f62226c..1035ce1 100644
--- a/cmd/xedn/stablediffusion.go
+++ b/cmd/xedn/stablediffusion.go
@@ -16,8 +16,8 @@ import (
"time"
"go.etcd.io/bbolt"
+ "golang.org/x/exp/slog"
"golang.org/x/sync/singleflight"
- "within.website/ln"
"within.website/x/web/stablediffusion"
)
@@ -39,7 +39,7 @@ type StableDiffusion struct {
func (sd *StableDiffusion) RenderImage(ctx context.Context, w http.ResponseWriter, hash string) error {
prompt, seed := hallucinatePrompt(hash)
- ln.Log(ctx, ln.Info("generating new image"), ln.F{"prompt": prompt})
+ slog.Info("generating new image", "prompt", prompt)
imgsVal, err, _ := sd.group.Do(hash, func() (interface{}, error) {
imgs, err := sd.client.Generate(ctx, stablediffusion.SimpleImageRequest{
@@ -83,7 +83,7 @@ func (sd *StableDiffusion) RenderImage(ctx context.Context, w http.ResponseWrite
}
imgs := imgsVal.(*stablediffusion.ImageResponse)
- ln.Log(ctx, ln.Info("done generating image"), ln.F{"prompt": prompt})
+ slog.Info("done generating image", "prompt", prompt)
if err := sd.db.Update(func(tx *bbolt.Tx) error {
bkt := tx.Bucket([]byte("avatars"))
@@ -155,8 +155,8 @@ func (sd *StableDiffusion) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if !found {
if err := sd.RenderImage(r.Context(), w, hash); err != nil {
+ slog.Error("can't render image", "err", err)
http.Error(w, "cannot render image, sorry", http.StatusInternalServerError)
- ln.Error(r.Context(), err)
return
}
}
diff --git a/internal/confyg/flagconfyg/flagconfyg.go b/internal/confyg/flagconfyg/flagconfyg.go
index abf24a8..882853a 100644
--- a/internal/confyg/flagconfyg/flagconfyg.go
+++ b/internal/confyg/flagconfyg/flagconfyg.go
@@ -7,9 +7,9 @@ import (
"context"
"flag"
"io/ioutil"
+ "log"
"strings"
- "within.website/ln"
"within.website/x/internal/confyg"
)
@@ -22,7 +22,7 @@ func CmdParse(ctx context.Context, path string) {
err = Parse(path, data, flag.CommandLine)
if err != nil {
- ln.Error(ctx, err)
+ log.Printf("can't parse %s: %v", path, err)
return
}
}
diff --git a/internal/internal.go b/internal/internal.go
index 1f0a887..b9c1962 100644
--- a/internal/internal.go
+++ b/internal/internal.go
@@ -10,7 +10,6 @@ import (
"github.com/posener/complete"
"go4.org/legal"
- "within.website/ln/opname"
"within.website/x/internal/confyg/flagconfyg"
"within.website/x/internal/flagenv"
"within.website/x/internal/manpage"
@@ -58,7 +57,7 @@ func HandleStartup() {
flag.Parse()
flagenv.Parse()
- ctx := opname.With(context.Background(), "internal.HandleStartup")
+ ctx := context.Background()
if *config != "" {
flagconfyg.CmdParse(ctx, *config)