# HG changeset patch # User Peter Sanchez # Date 1717525154 21600 # Tue Jun 04 12:19:14 2024 -0600 # Node ID b6b84ef1d19f3c4ab17a8a177ec26985b8a5ab2f # Parent fb0c5ead0f5f69d0062b227fe606d9a22faa08b2 # Parent 2963f5fa2a131aac88d15e0fb3db80bc42c6099b Merge tedu upstream diff --git a/activity.go b/activity.go --- a/activity.go +++ b/activity.go @@ -439,7 +439,7 @@ return b, true } return nil, false -}}) +}, Invalidator: &xonkInvalidator}) var gettergate = gate.NewLimiter(1) @@ -1162,7 +1162,7 @@ m.Who, _ = tag.GetString("name") m.Where, _ = tag.GetString("href") if m.Who == "" { - m.Where = m.Who + m.Who = m.Where } if m.Where != "" { mentions = append(mentions, m) @@ -1903,16 +1903,12 @@ rel, _ := l.GetString("rel") t, _ := l.GetString("type") if rel == "self" && friendorfoe(t) { - when := time.Now().UTC().Format(dbtimeformat) - _, err := stmtSaveXonker.Exec(name, href, "fishname", when) - if err != nil { - elog.Printf("error saving fishname: %s", err) - } + savexonker(name, href, "fishname") return href, true } } return href, true -}, Duration: 1 * time.Minute}) +}, Invalidator: &xonkInvalidator}) func gofish(name string) string { if name[0] == '@' { @@ -2012,11 +2008,7 @@ ingesthandle(origin, obj) chatkey, ok := obj.GetString(chatKeyProp) if ok { - when := time.Now().UTC().Format(dbtimeformat) - _, err := stmtSaveXonker.Exec(ident, chatkey, chatKeyProp, when) - if err != nil { - elog.Printf("error saving chatkey: %s", err) - } + savexonker(ident, chatkey, chatKeyProp) } } @@ -2082,12 +2074,8 @@ outbox, _ := obj.GetString("outbox") sbox, _ := obj.GetString("endpoints", "sharedInbox") if inbox != "" { - when := time.Now().UTC().Format(dbtimeformat) m := strings.Join([]string{inbox, outbox, sbox}, " ") - _, err = stmtSaveXonker.Exec(ident, m, "boxes", when) - if err != nil { - elog.Printf("error saving boxes: %s", err) - } + savexonker(ident, m, "boxes") } } @@ -2107,11 +2095,7 @@ } handle, _ = obj.GetString("preferredUsername") if handle != "" { - when := time.Now().UTC().Format(dbtimeformat) - _, err = stmtSaveXonker.Exec(xid, handle, "handle", when) - if err != nil { - elog.Printf("error saving handle: %s", err) - } + savexonker(xid, handle, "handle") } } diff --git a/database.go b/database.go --- a/database.go +++ b/database.go @@ -987,8 +987,12 @@ return res } -func savexonker(what, value, flav, when string) { - stmtSaveXonker.Exec(what, value, flav, when) +func savexonker(what, value, flav string) { + when := time.Now().UTC().Format(dbtimeformat) + _, err := stmtSaveXonker.Exec(what, value, flav, when) + if err != nil { + elog.Printf("error saving xonker: %s", err) + } } func savehonker(user *WhatAbout, url, name, flavor, combos, mj string) (int64, string, error) { @@ -1217,7 +1221,7 @@ stmtGetXonker = preparetodie(db, "select info from xonkers where name = ? and flavor = ?") stmtSaveXonker = preparetodie(db, "insert into xonkers (name, info, flavor, dt) values (?, ?, ?, ?)") stmtDeleteXonker = preparetodie(db, "delete from xonkers where name = ? and flavor = ? and dt < ?") - stmtDeleteOldXonkers = preparetodie(db, "delete from xonkers where flavor = ? and dt < ?") + stmtDeleteOldXonkers = preparetodie(db, "delete from xonkers where dt < ?") stmtRecentHonkers = preparetodie(db, "select distinct(honker) from honks where userid = ? and honker not in (select xid from honkers where userid = ? and flavor = 'sub') order by honkid desc limit 100") stmtUpdateFlags = preparetodie(db, "update honks set flags = flags | ? where honkid = ?") stmtClearFlags = preparetodie(db, "update honks set flags = flags & ~ ? where honkid = ?") diff --git a/encrypt.go b/encrypt.go --- a/encrypt.go +++ b/encrypt.go @@ -22,7 +22,6 @@ "fmt" "io" "strings" - "time" "golang.org/x/crypto/nacl/box" "humungus.tedunangst.com/r/webs/gencache" @@ -104,16 +103,14 @@ j, err := GetJunk(readyLuserOne, xonker) if err != nil { ilog.Printf("error getting %s: %s", xonker, err) - when := time.Now().UTC().Format(dbtimeformat) - stmtSaveXonker.Exec(xonker, "failed", chatKeyProp, when) + savexonker(xonker, "failed", chatKeyProp) return boxPubKey{}, true } allinjest(originate(xonker), j) data = getxonker(xonker, chatKeyProp) if data == "" { ilog.Printf("key not found after ingesting") - when := time.Now().UTC().Format(dbtimeformat) - stmtSaveXonker.Exec(xonker, "failed", chatKeyProp, when) + savexonker(xonker, "failed", chatKeyProp) return boxPubKey{}, true } } diff --git a/fun.go b/fun.go --- a/fun.go +++ b/fun.go @@ -633,6 +633,8 @@ return "" } +var xonkInvalidator gencache.Invalidator[string] + var allhandles = gencache.New(gencache.Options[string, string]{Fill: func(xid string) (string, bool) { handle := getxonker(xid, "handle") if handle == "" { @@ -646,14 +648,13 @@ } else { handle = xid } - when := time.Now().UTC().Format(dbtimeformat) - savexonker(xid, handle, "handle", when) + savexonker(xid, handle, "handle") } else { handle = info.Name } } return handle, true -}}) +}, Invalidator: &xonkInvalidator}) // handle, handle@host func handles(xid string) (string, string) { @@ -730,16 +731,14 @@ j, err := GetJunk(readyLuserOne, keyname) if err != nil { ilog.Printf("error getting %s pubkey: %s", keyname, err) - when := time.Now().UTC().Format(dbtimeformat) - stmtSaveXonker.Exec(keyname, "failed", "pubkey", when) + savexonker(keyname, "failed", "pubkey") return httpsig.PublicKey{}, true } allinjest(originate(keyname), j) data = getxonker(keyname, "pubkey") if data == "" { ilog.Printf("key not found after ingesting") - when := time.Now().UTC().Format(dbtimeformat) - stmtSaveXonker.Exec(keyname, "failed", "pubkey", when) + savexonker(keyname, "failed", "pubkey") return httpsig.PublicKey{}, true } } @@ -753,7 +752,7 @@ return key, true } return key, true -}, Limit: 512}) +}, Limit: 4096, Invalidator: &xonkInvalidator}) func zaggy(keyname string) (httpsig.PublicKey, error) { key, _ := zaggies.Get(keyname) diff --git a/import.go b/import.go --- a/import.go +++ b/import.go @@ -21,7 +21,6 @@ "encoding/json" "fmt" "html" - "io/ioutil" "log" "os" "regexp" @@ -208,7 +207,7 @@ switch att.Type { case "Document": fname := fmt.Sprintf("%s/%s", source, att.Url) - data, err := ioutil.ReadFile(fname) + data, err := os.ReadFile(fname) if err != nil { elog.Printf("error reading media for %s: %s", honk.XID, fname) continue @@ -465,7 +464,7 @@ idx := strings.LastIndexByte(u, '/') u = u[idx+1:] fname := fmt.Sprintf("%s/tweet_media/%s-%s", source, t.Tweet.IdStr, u) - data, err := ioutil.ReadFile(fname) + data, err := os.ReadFile(fname) if err != nil { elog.Printf("error reading media: %s", fname) continue @@ -546,7 +545,7 @@ var meta DonkMeta u := xfiltrate() fname := fmt.Sprintf("%s/%s", source, g.URI) - data, err := ioutil.ReadFile(fname) + data, err := os.ReadFile(fname) if err != nil { elog.Printf("error reading media: %s", fname) continue @@ -642,7 +641,6 @@ if donk == "" { continue } - var data []byte w, err := zd.Create("media/" + donk) if err != nil { elog.Printf("error creating %s: %s", donk, err) diff --git a/web.go b/web.go --- a/web.go +++ b/web.go @@ -3103,13 +3103,13 @@ func bgmonitor() { for { - when := time.Now().Add(-3 * 24 * time.Hour).UTC().Format(dbtimeformat) - _, err := stmtDeleteOldXonkers.Exec("pubkey", when) + when := time.Now().Add(-2 * 24 * time.Hour).UTC().Format(dbtimeformat) + _, err := stmtDeleteOldXonkers.Exec(when) if err != nil { elog.Printf("error deleting old xonkers: %s", err) } - zaggies.Flush() - time.Sleep(50 * time.Minute) + xonkInvalidator.Flush() + time.Sleep(150 * time.Minute) } }