From 9de375d169ae552e2ceea6ac2fc88f96c1a4ff3b Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Wed, 2 Aug 2023 23:34:24 -0400 Subject: [PATCH 01/18] unusued range var --- database.go | 2 +- web.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/database.go b/database.go index e398a22..8c9696b 100644 --- a/database.go +++ b/database.go @@ -1121,7 +1121,7 @@ func cleanupdb(arg string) { if err != nil { elog.Fatal(err) } - for xid, _ := range filexids { + for xid := range filexids { _, err = tx.Exec("delete from filedata where xid = ?", xid) if err != nil { elog.Fatal(err) diff --git a/web.go b/web.go index c7507cc..a6b0eb5 100644 --- a/web.go +++ b/web.go @@ -602,7 +602,7 @@ func xzone(w http.ResponseWriter, r *http.Request) { honkers = append(honkers, Honker{XID: xid}) } rows.Close() - for i, _ := range honkers { + for i := range honkers { _, honkers[i].Handle = handles(honkers[i].XID) } templinfo := getInfo(r) From 79756a6b0fe8784f6f23a2e8a43c8ecbb4019387 Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Fri, 4 Aug 2023 13:06:24 -0400 Subject: [PATCH 02/18] don't report csp violations by default --- web.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/web.go b/web.go index a6b0eb5..2249f9a 100644 --- a/web.go +++ b/web.go @@ -2560,6 +2560,9 @@ func apihandler(w http.ResponseWriter, r *http.Request) { } func fiveoh(w http.ResponseWriter, r *http.Request) { + if !develMode { + return + } fd, err := os.OpenFile("violations.json", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) if err != nil { elog.Printf("error opening violations! %s", err) @@ -2606,7 +2609,11 @@ func bgmonitor() { func addcspheaders(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Security-Policy", "default-src 'none'; script-src 'self'; connect-src 'self'; style-src 'self'; img-src 'self'; media-src 'self'; report-uri /csp-violation") + policy := "default-src 'none'; script-src 'self'; connect-src 'self'; style-src 'self'; img-src 'self'; media-src 'self'" + if develMode { + policy += "; report-uri /csp-violation" + } + w.Header().Set("Content-Security-Policy", policy) next.ServeHTTP(w, r) }) } From 2376371d7668d2f16ab2e9a8c94c687cb66f092a Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Fri, 4 Aug 2023 13:08:15 -0400 Subject: [PATCH 03/18] update twitter import again, from tom --- import.go | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/import.go b/import.go index 8ac5c34..7dfbe6e 100644 --- a/import.go +++ b/import.go @@ -338,7 +338,7 @@ func importTwitter(username, source string) { } var tweets []*Tweet - fd, err := os.Open(source + "/tweet.js") + fd, err := os.Open(source + "/tweets.js") if err != nil { elog.Fatal(err) } @@ -375,11 +375,6 @@ func importTwitter(username, source string) { continue } - if t.Tweet.FavoriteCount == "0" || t.Tweet.FavoriteCount == "" { - log.Printf("skipping, unworthy tweet") - continue - } - what := "honk" noise := "" if parent := tweetmap[t.Tweet.InReplyToStatusID]; parent != nil { From 6a5f4ba621980f8abfbce26c337f95b48dcecb8a Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Sat, 5 Aug 2023 20:52:55 -0400 Subject: [PATCH 04/18] reject origin test in getjunk path to catch strays --- activity.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/activity.go b/activity.go index 4cf0285..07c8bd0 100644 --- a/activity.go +++ b/activity.go @@ -133,6 +133,9 @@ var flightdeck = gate.NewSerializer() var signGets = true func GetJunkTimeout(userid int64, url string, timeout time.Duration) (junk.Junk, error) { + if rejectorigin(userid, url, false) { + return nil, fmt.Errorf("rejected origin: %s", url) + } client := http.DefaultClient sign := func(req *http.Request) error { var ki *KeyInfo From 656d4c99a5e14cfcfc834266f6e8a5d1177fcc1e Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Sat, 5 Aug 2023 20:59:58 -0400 Subject: [PATCH 05/18] if we don't get the bonk, nothing to do --- activity.go | 1 + 1 file changed, 1 insertion(+) diff --git a/activity.go b/activity.go index 07c8bd0..41e4d7a 100644 --- a/activity.go +++ b/activity.go @@ -635,6 +635,7 @@ func xonksaver(user *WhatAbout, item junk.Junk, origin string) *Honk { obj, err = GetJunkHardMode(user.ID, xid) if err != nil { ilog.Printf("error getting bonk: %s: %s", xid, err) + return nil } } return xonkxonkfn(obj, origin, isUpdate, true) From 2514129b3abaf3ecf782e667037d902a433aa660 Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Sun, 6 Aug 2023 02:19:56 -0400 Subject: [PATCH 06/18] add a sample meme --- memes/twowires.jpg | Bin 0 -> 106744 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 memes/twowires.jpg diff --git a/memes/twowires.jpg b/memes/twowires.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5d663a9b11377420a4bbf3bdb4e843932119b35c GIT binary patch literal 106744 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%0DEde{(e|6I<3(OG^fJeUQ{1YGbk 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 literal 0 HcmV?d00001 From d2f812058b4d2f1bf263af6b00ef4b7bc4199dc7 Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Sun, 6 Aug 2023 03:04:37 -0400 Subject: [PATCH 07/18] repair loss of bonker information in last refactor --- activity.go | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/activity.go b/activity.go index 41e4d7a..1e8fd9c 100644 --- a/activity.go +++ b/activity.go @@ -493,7 +493,7 @@ func xonksaver(user *WhatAbout, item junk.Junk, origin string) *Honk { maxdepth := 10 currenttid := "" goingup := 0 - var xonkxonkfn func(junk.Junk, string, bool, bool) *Honk + var xonkxonkfn func(junk.Junk, string, bool, string) *Honk qutify := func(user *WhatAbout, content string) string { if depth >= maxdepth { @@ -525,7 +525,7 @@ func xonksaver(user *WhatAbout, item junk.Junk, origin string) *Honk { } prevdepth := depth depth = maxdepth - xonkxonkfn(j, originate(m), false, false) + xonkxonkfn(j, originate(m), false, "") depth = prevdepth } } @@ -544,10 +544,10 @@ func xonksaver(user *WhatAbout, item junk.Junk, origin string) *Honk { ilog.Printf("error getting onemore: %s: %s", xid, err) return } - xonkxonkfn(obj, originate(xid), false, false) + xonkxonkfn(obj, originate(xid), false, "") } - xonkxonkfn = func(item junk.Junk, origin string, isUpdate bool, isAnnounce bool) *Honk { + xonkxonkfn = func(item junk.Junk, origin string, isUpdate bool, bonker string) *Honk { id, _ := item.GetString("id") what := firstofmany(item, "type") dt, ok := item.GetString("published") @@ -627,6 +627,7 @@ func xonksaver(user *WhatAbout, item junk.Junk, origin string) *Honk { if !isUpdate && !needbonkid(user, xid) { return nil } + bonker, _ = item.GetString("actor") origin = originate(xid) if ok && originate(id) == origin { dlog.Printf("using object in announce for %s", xid) @@ -638,7 +639,7 @@ func xonksaver(user *WhatAbout, item junk.Junk, origin string) *Honk { return nil } } - return xonkxonkfn(obj, origin, isUpdate, true) + return xonkxonkfn(obj, origin, isUpdate, bonker) case "Update": isUpdate = true fallthrough @@ -660,7 +661,7 @@ func xonksaver(user *WhatAbout, item junk.Junk, origin string) *Honk { ilog.Printf("no object for creation %s", id) return nil } - return xonkxonkfn(obj, origin, isUpdate, isAnnounce) + return xonkxonkfn(obj, origin, isUpdate, bonker) case "Read": xid, ok = item.GetString("object") if ok { @@ -673,7 +674,7 @@ func xonksaver(user *WhatAbout, item junk.Junk, origin string) *Honk { ilog.Printf("error getting read: %s", err) return nil } - return xonkxonkfn(obj, originate(xid), false, false) + return xonkxonkfn(obj, originate(xid), false, "") } return nil case "Add": @@ -689,7 +690,7 @@ func xonksaver(user *WhatAbout, item junk.Junk, origin string) *Honk { ilog.Printf("error getting add: %s", err) return nil } - return xonkxonkfn(obj, originate(xid), false, false) + return xonkxonkfn(obj, originate(xid), false, "") } return nil case "Move": @@ -718,7 +719,7 @@ func xonksaver(user *WhatAbout, item junk.Junk, origin string) *Honk { obj = item what = "event" case "ChatMessage": - isAnnounce = false + bonker = "" obj = item what = "chonk" default: @@ -726,7 +727,7 @@ func xonksaver(user *WhatAbout, item junk.Junk, origin string) *Honk { dumpactivity(item) return nil } - if isAnnounce { + if bonker != "" { what = "bonk" } @@ -759,7 +760,9 @@ func xonksaver(user *WhatAbout, item junk.Junk, origin string) *Honk { if xonk.Honker == "" { xonk.Honker = extractattrto(obj) } - xonk.Oonker = extractattrto(obj) + if bonker != "" { + xonk.Honker, xonk.Oonker = bonker, xonk.Honker + } if xonk.Oonker == xonk.Honker { xonk.Oonker = "" } @@ -1129,7 +1132,7 @@ func xonksaver(user *WhatAbout, item junk.Junk, origin string) *Honk { return &xonk } - return xonkxonkfn(item, origin, false, false) + return xonkxonkfn(item, origin, false, "") } func dumpactivity(item junk.Junk) { From 8f3e5229b28604dde45b8fd45820d8eac68beb80 Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Sun, 6 Aug 2023 03:14:12 -0400 Subject: [PATCH 08/18] stop fixing the width of the textarea --- views/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/style.css b/views/style.css index 326edb5..cb2dae2 100644 --- a/views/style.css +++ b/views/style.css @@ -146,7 +146,7 @@ textarea { font-size: 1em; background: var(--bg-page); color: var(--fg); - width: 600px; + width: 100%; height: 4em; margin-bottom: 0.5em; box-sizing: border-box; From 93b30f305edf92bdd57161cc23f4694f9db38b4c Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Sun, 6 Aug 2023 04:08:06 -0400 Subject: [PATCH 09/18] rel alternative for user too --- web.go | 1 + 1 file changed, 1 insertion(+) diff --git a/web.go b/web.go index 2249f9a..2268885 100644 --- a/web.go +++ b/web.go @@ -733,6 +733,7 @@ func showuser(w http.ResponseWriter, r *http.Request) { templinfo["Name"] = user.Name templinfo["WhatAbout"] = user.HTAbout templinfo["ServerMessage"] = "" + templinfo["APAltLink"] = templates.Sprintf("", user.URL) if u != nil { templinfo["HonkCSRF"] = login.GetCSRF("honkhonk", r) } From 6f4b325cf5c71b1ab74d10105d107600f9ad5ad3 Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Mon, 7 Aug 2023 02:27:25 -0400 Subject: [PATCH 10/18] split main into a new file, add build info --- honk.go | 228 ------------------------------------------------ main.go | 251 +++++++++++++++++++++++++++++++++++++++++++++++++++++ sensors.go | 28 ++++++ 3 files changed, 279 insertions(+), 228 deletions(-) create mode 100644 main.go diff --git a/honk.go b/honk.go index 8466c67..edb9d22 100644 --- a/honk.go +++ b/honk.go @@ -16,27 +16,14 @@ package main import ( - "flag" - "fmt" "html/template" - golog "log" - "log/syslog" - notrand "math/rand" - "os" "strconv" "strings" "time" "humungus.tedunangst.com/r/webs/httpsig" - "humungus.tedunangst.com/r/webs/log" ) -var softwareVersion = "develop" - -func init() { - notrand.Seed(time.Now().Unix()) -} - type WhatAbout struct { ID int64 Name string @@ -277,218 +264,3 @@ const ( SomeActor SomeCollection ) - -var serverName string -var serverPrefix string -var masqName string -var dataDir = "." -var viewDir = "." -var iconName = "icon.png" -var serverMsg template.HTML -var aboutMsg template.HTML -var loginMsg template.HTML - -func ElaborateUnitTests() { -} - -func unplugserver(hostname string) { - db := opendatabase() - xid := fmt.Sprintf("%%https://%s/%%", hostname) - db.Exec("delete from honkers where xid like ? and flavor = 'dub'", xid) - db.Exec("delete from doovers where rcpt like ?", xid) -} - -func reexecArgs(cmd string) []string { - args := []string{"-datadir", dataDir} - args = append(args, log.Args()...) - args = append(args, cmd) - return args -} - -var elog, ilog, dlog *golog.Logger - -func main() { - flag.StringVar(&dataDir, "datadir", dataDir, "data directory") - flag.StringVar(&viewDir, "viewdir", viewDir, "view directory") - flag.Parse() - - log.Init(log.Options{Progname: "honk", Facility: syslog.LOG_UUCP}) - elog = log.E - ilog = log.I - dlog = log.D - - args := flag.Args() - cmd := "run" - if len(args) > 0 { - cmd = args[0] - } - switch cmd { - case "init": - initdb() - case "upgrade": - upgradedb() - case "version": - fmt.Println(softwareVersion) - os.Exit(0) - } - db := opendatabase() - dbversion := 0 - getconfig("dbversion", &dbversion) - if dbversion != myVersion { - elog.Fatal("incorrect database version. run upgrade.") - } - getconfig("servermsg", &serverMsg) - getconfig("aboutmsg", &aboutMsg) - getconfig("loginmsg", &loginMsg) - getconfig("servername", &serverName) - getconfig("masqname", &masqName) - if masqName == "" { - masqName = serverName - } - serverPrefix = fmt.Sprintf("https://%s/", serverName) - getconfig("usersep", &userSep) - getconfig("honksep", &honkSep) - getconfig("devel", &develMode) - getconfig("fasttimeout", &fastTimeout) - getconfig("slowtimeout", &slowTimeout) - getconfig("signgets", &signGets) - prepareStatements(db) - switch cmd { - case "admin": - adminscreen() - case "import": - if len(args) != 4 { - elog.Fatal("import username mastodon|twitter srcdir") - } - importMain(args[1], args[2], args[3]) - case "devel": - if len(args) != 2 { - elog.Fatal("need an argument: devel (on|off)") - } - switch args[1] { - case "on": - setconfig("devel", 1) - case "off": - setconfig("devel", 0) - default: - elog.Fatal("argument must be on or off") - } - case "setconfig": - if len(args) != 3 { - elog.Fatal("need an argument: setconfig key val") - } - var val interface{} - var err error - if val, err = strconv.Atoi(args[2]); err != nil { - val = args[2] - } - setconfig(args[1], val) - case "adduser": - adduser() - case "deluser": - if len(args) < 2 { - fmt.Printf("usage: honk deluser username\n") - return - } - deluser(args[1]) - case "chpass": - if len(args) < 2 { - fmt.Printf("usage: honk chpass username\n") - return - } - chpass(args[1]) - case "follow": - if len(args) < 3 { - fmt.Printf("usage: honk follow username url\n") - return - } - user, err := butwhatabout(args[1]) - if err != nil { - fmt.Printf("user not found\n") - return - } - var meta HonkerMeta - mj, _ := jsonify(&meta) - honkerid, err := savehonker(user, args[2], "", "presub", "", mj) - if err != nil { - fmt.Printf("had some trouble with that: %s\n", err) - return - } - followyou(user, honkerid, true) - case "unfollow": - if len(args) < 3 { - fmt.Printf("usage: honk unfollow username url\n") - return - } - user, err := butwhatabout(args[1]) - if err != nil { - fmt.Printf("user not found\n") - return - } - row := db.QueryRow("select honkerid from honkers where xid = ? and userid = ? and flavor in ('sub')", args[2], user.ID) - var honkerid int64 - err = row.Scan(&honkerid) - if err != nil { - fmt.Printf("sorry couldn't find them\n") - return - } - unfollowyou(user, honkerid, true) - case "sendmsg": - if len(args) < 4 { - fmt.Printf("usage: honk send username filename rcpt\n") - return - } - user, err := butwhatabout(args[1]) - if err != nil { - fmt.Printf("user not found\n") - return - } - data, err := os.ReadFile(args[2]) - if err != nil { - fmt.Printf("can't read file\n") - return - } - deliverate(user.ID, args[3], data) - case "cleanup": - arg := "30" - if len(args) > 1 { - arg = args[1] - } - cleanupdb(arg) - case "unplug": - if len(args) < 2 { - fmt.Printf("usage: honk unplug servername\n") - return - } - name := args[1] - unplugserver(name) - case "backup": - if len(args) < 2 { - fmt.Printf("usage: honk backup dirname\n") - return - } - name := args[1] - svalbard(name) - case "ping": - if len(args) < 3 { - fmt.Printf("usage: honk ping (from username) (to username or url)\n") - return - } - name := args[1] - targ := args[2] - user, err := butwhatabout(name) - if err != nil { - elog.Printf("unknown user") - return - } - ping(user, targ) - case "run": - serve() - case "backend": - backendServer() - case "test": - ElaborateUnitTests() - default: - elog.Fatal("unknown command") - } -} diff --git a/main.go b/main.go new file mode 100644 index 0000000..50dc564 --- /dev/null +++ b/main.go @@ -0,0 +1,251 @@ +// +// Copyright (c) 2019 Ted Unangst +// +// Permission to use, copy, modify, and distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +package main + +import ( + "flag" + "fmt" + "html/template" + golog "log" + "log/syslog" + notrand "math/rand" + "os" + "strconv" + "time" + + "humungus.tedunangst.com/r/webs/log" +) + +var softwareVersion = "develop" + +func init() { + notrand.Seed(time.Now().Unix()) +} + +var serverName string +var serverPrefix string +var masqName string +var dataDir = "." +var viewDir = "." +var iconName = "icon.png" +var serverMsg template.HTML +var aboutMsg template.HTML +var loginMsg template.HTML + +func ElaborateUnitTests() { +} + +func unplugserver(hostname string) { + db := opendatabase() + xid := fmt.Sprintf("%%https://%s/%%", hostname) + db.Exec("delete from honkers where xid like ? and flavor = 'dub'", xid) + db.Exec("delete from doovers where rcpt like ?", xid) +} + +func reexecArgs(cmd string) []string { + args := []string{"-datadir", dataDir} + args = append(args, log.Args()...) + args = append(args, cmd) + return args +} + +var elog, ilog, dlog *golog.Logger + +func main() { + flag.StringVar(&dataDir, "datadir", dataDir, "data directory") + flag.StringVar(&viewDir, "viewdir", viewDir, "view directory") + flag.Parse() + + log.Init(log.Options{Progname: "honk", Facility: syslog.LOG_UUCP}) + elog = log.E + ilog = log.I + dlog = log.D + + args := flag.Args() + cmd := "run" + if len(args) > 0 { + cmd = args[0] + } + switch cmd { + case "init": + initdb() + case "upgrade": + upgradedb() + case "version": + fmt.Println(softwareVersion) + os.Exit(0) + } + db := opendatabase() + dbversion := 0 + getconfig("dbversion", &dbversion) + if dbversion != myVersion { + elog.Fatal("incorrect database version. run upgrade.") + } + getconfig("servermsg", &serverMsg) + getconfig("aboutmsg", &aboutMsg) + getconfig("loginmsg", &loginMsg) + getconfig("servername", &serverName) + getconfig("masqname", &masqName) + if masqName == "" { + masqName = serverName + } + serverPrefix = fmt.Sprintf("https://%s/", serverName) + getconfig("usersep", &userSep) + getconfig("honksep", &honkSep) + getconfig("devel", &develMode) + getconfig("fasttimeout", &fastTimeout) + getconfig("slowtimeout", &slowTimeout) + getconfig("signgets", &signGets) + prepareStatements(db) + switch cmd { + case "admin": + adminscreen() + case "import": + if len(args) != 4 { + elog.Fatal("import username mastodon|twitter srcdir") + } + importMain(args[1], args[2], args[3]) + case "devel": + if len(args) != 2 { + elog.Fatal("need an argument: devel (on|off)") + } + switch args[1] { + case "on": + setconfig("devel", 1) + case "off": + setconfig("devel", 0) + default: + elog.Fatal("argument must be on or off") + } + case "setconfig": + if len(args) != 3 { + elog.Fatal("need an argument: setconfig key val") + } + var val interface{} + var err error + if val, err = strconv.Atoi(args[2]); err != nil { + val = args[2] + } + setconfig(args[1], val) + case "adduser": + adduser() + case "deluser": + if len(args) < 2 { + fmt.Printf("usage: honk deluser username\n") + return + } + deluser(args[1]) + case "chpass": + if len(args) < 2 { + fmt.Printf("usage: honk chpass username\n") + return + } + chpass(args[1]) + case "follow": + if len(args) < 3 { + fmt.Printf("usage: honk follow username url\n") + return + } + user, err := butwhatabout(args[1]) + if err != nil { + fmt.Printf("user not found\n") + return + } + var meta HonkerMeta + mj, _ := jsonify(&meta) + honkerid, err := savehonker(user, args[2], "", "presub", "", mj) + if err != nil { + fmt.Printf("had some trouble with that: %s\n", err) + return + } + followyou(user, honkerid, true) + case "unfollow": + if len(args) < 3 { + fmt.Printf("usage: honk unfollow username url\n") + return + } + user, err := butwhatabout(args[1]) + if err != nil { + fmt.Printf("user not found\n") + return + } + row := db.QueryRow("select honkerid from honkers where xid = ? and userid = ? and flavor in ('sub')", args[2], user.ID) + var honkerid int64 + err = row.Scan(&honkerid) + if err != nil { + fmt.Printf("sorry couldn't find them\n") + return + } + unfollowyou(user, honkerid, true) + case "sendmsg": + if len(args) < 4 { + fmt.Printf("usage: honk send username filename rcpt\n") + return + } + user, err := butwhatabout(args[1]) + if err != nil { + fmt.Printf("user not found\n") + return + } + data, err := os.ReadFile(args[2]) + if err != nil { + fmt.Printf("can't read file\n") + return + } + deliverate(user.ID, args[3], data) + case "cleanup": + arg := "30" + if len(args) > 1 { + arg = args[1] + } + cleanupdb(arg) + case "unplug": + if len(args) < 2 { + fmt.Printf("usage: honk unplug servername\n") + return + } + name := args[1] + unplugserver(name) + case "backup": + if len(args) < 2 { + fmt.Printf("usage: honk backup dirname\n") + return + } + name := args[1] + svalbard(name) + case "ping": + if len(args) < 3 { + fmt.Printf("usage: honk ping (from username) (to username or url)\n") + return + } + name := args[1] + targ := args[2] + user, err := butwhatabout(name) + if err != nil { + elog.Printf("unknown user") + return + } + ping(user, targ) + case "run": + serve() + case "backend": + backendServer() + case "test": + ElaborateUnitTests() + default: + elog.Fatal("unknown command") + } +} diff --git a/sensors.go b/sensors.go index 4428c07..ef9b15f 100644 --- a/sensors.go +++ b/sensors.go @@ -16,10 +16,38 @@ package main import ( + "runtime/debug" "syscall" "time" ) +func init() { + if softwareVersion != "develop" { + return + } + bi, ok := debug.ReadBuildInfo() + if !ok { + return + } + var vcs, rev, mod string + for _, bs := range bi.Settings { + if bs.Key == "vcs" { + vcs = "/" + bs.Value + } + if bs.Key == "vcs.revision" { + rev = bs.Value + if len(rev) > 12 { + rev = rev[:12] + } + rev = "-" + rev + } + if bs.Key == "vcs.modified" && bs.Value == "true" { + mod = "+" + } + } + softwareVersion += vcs + rev + mod +} + type Sensors struct { Memory float64 Uptime float64 From 6b830f8fe5d873b79ce8c3c8dea4ba30786bb6d1 Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Mon, 7 Aug 2023 02:28:49 -0400 Subject: [PATCH 11/18] update ignore file --- .hgignore | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.hgignore b/.hgignore index b5de9ba..a00a9cf 100644 --- a/.hgignore +++ b/.hgignore @@ -1,4 +1,9 @@ -.*\.db +syntax: glob +.preflightcheck +*.db +*.db-shm +*.db-wal memes emus honk +violations.json From 24017928ab0972834a7c1632fdf7e92933297563 Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Mon, 7 Aug 2023 13:58:24 -0400 Subject: [PATCH 12/18] do not run honk as root --- main.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/main.go b/main.go index 50dc564..5e944d1 100644 --- a/main.go +++ b/main.go @@ -74,6 +74,10 @@ func main() { ilog = log.I dlog = log.D + if os.Geteuid() == 0 { + elog.Fatalf("do not run honk as root") + } + args := flag.Args() cmd := "run" if len(args) > 0 { From fe783eda2acf5711e1a83b71e74209cfb1901219 Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Mon, 7 Aug 2023 17:28:14 -0400 Subject: [PATCH 13/18] webs bump for html fix --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 15379a8..a19ad41 100644 --- a/go.mod +++ b/go.mod @@ -9,5 +9,5 @@ require ( golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4 humungus.tedunangst.com/r/go-sqlite3 v1.1.3 - humungus.tedunangst.com/r/webs v0.6.67 + humungus.tedunangst.com/r/webs v0.6.68 ) diff --git a/go.sum b/go.sum index 0f8e915..5fef797 100644 --- a/go.sum +++ b/go.sum @@ -25,5 +25,5 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= humungus.tedunangst.com/r/go-sqlite3 v1.1.3 h1:G2N4wzDS0NbuvrZtQJhh4F+3X+s7BF8b9ga8k38geUI= humungus.tedunangst.com/r/go-sqlite3 v1.1.3/go.mod h1:FtEEmQM7U2Ey1TuEEOyY1BmphTZnmiEjPsNLEAkpf/M= -humungus.tedunangst.com/r/webs v0.6.67 h1:OO5UkQa+bHeiIrZ5IGR9JGtgGPsKsYlRJEVk1bSt+Qo= -humungus.tedunangst.com/r/webs v0.6.67/go.mod h1:03R0N9BcT49HB4TDd1YmarpbiPvPzVDm74Mk4h1hYPc= +humungus.tedunangst.com/r/webs v0.6.68 h1:veKjASf1krPf4o3O7hMRsNvE4+Z6LzXVso/qMccZntk= +humungus.tedunangst.com/r/webs v0.6.68/go.mod h1:03R0N9BcT49HB4TDd1YmarpbiPvPzVDm74Mk4h1hYPc= From ad8d72ce0d1587e17811ca8218761d16eabd1299 Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Tue, 8 Aug 2023 16:17:47 -0400 Subject: [PATCH 14/18] qotd --- bloat.go | 35 +++++++++++++++++++++++++++++++++++ web.go | 1 + 2 files changed, 36 insertions(+) diff --git a/bloat.go b/bloat.go index e89675f..245add8 100644 --- a/bloat.go +++ b/bloat.go @@ -14,3 +14,38 @@ // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. package main + +import ( + "io" + "net" + "time" +) + +func qotd() { + var qotdaddr string + getconfig("qotdaddr", &qotdaddr) + if qotdaddr == "" { + return + } + s, err := net.Listen("tcp", ":8017") + if err != nil { + return + } + for { + c, err := s.Accept() + if err != nil { + time.Sleep(time.Second) + continue + } + honks := getpublichonks() + for _, honk := range honks { + if !firstclass(honk) { + continue + } + io.WriteString(c, honk.Noise) + io.WriteString(c, "\n") + break + } + c.Close() + } +} diff --git a/web.go b/web.go index 2268885..905327c 100644 --- a/web.go +++ b/web.go @@ -2656,6 +2656,7 @@ func serve() { go redeliverator() go tracker() go bgmonitor() + go qotd() loadLingo() emuinit() From 829c0af0970990922309813a4c4eb9ddc379c4aa Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Wed, 9 Aug 2023 15:44:54 -0400 Subject: [PATCH 15/18] new sample colors --- docs/honk.8 | 4 ++-- views/mastodon.css | 7 +++++++ views/pleroma.css | 7 ------- 3 files changed, 9 insertions(+), 9 deletions(-) create mode 100644 views/mastodon.css delete mode 100644 views/pleroma.css diff --git a/docs/honk.8 b/docs/honk.8 index 63178ec..966a939 100644 --- a/docs/honk.8 +++ b/docs/honk.8 @@ -266,10 +266,10 @@ honk-v98> ./honk -datadir ../honkdata admin honk-v98> date; ./honk -log honk.log -datadir ../honkdata .Ed .Pp -The views directory includes a sample pleroma.css to change color scheme. +The views directory includes a sample mastodon.css to change color scheme. .Bd -literal -offset indent honk-v98> mkdir ../honkdata/views -honk-v98> cp views/pleroma.css ../honkdata/views/local.css +honk-v98> cp views/mastodon.css ../honkdata/views/local.css .Ed .Pp Upgrade to the next version. diff --git a/views/mastodon.css b/views/mastodon.css new file mode 100644 index 0000000..4f30453 --- /dev/null +++ b/views/mastodon.css @@ -0,0 +1,7 @@ +html { + --bg-page: #353a49; + --bg-dark: #393f4f; + --fg: #fff; + --hl: #6364ff; + --fg-subtle: #606984 +} diff --git a/views/pleroma.css b/views/pleroma.css deleted file mode 100644 index b25439a..0000000 --- a/views/pleroma.css +++ /dev/null @@ -1,7 +0,0 @@ -html { - --bg-page: #1b2735; - --bg-dark: #121a24; - --fg: #b9b9ba; - --hl: #d8a070; - --fg-subtle: rgba(185, 185, 186, 0.5); -} From 448ae46efe77399a92a34f59ae2b04a0bfc8b402 Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Wed, 9 Aug 2023 16:16:11 -0400 Subject: [PATCH 16/18] time to commit to using the proper accept type --- activity.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/activity.go b/activity.go index 1e8fd9c..c91b32c 100644 --- a/activity.go +++ b/activity.go @@ -150,7 +150,7 @@ func GetJunkTimeout(userid int64, url string, timeout time.Duration) (junk.Junk, sign = nil } fn := func() (interface{}, error) { - at := thefakename + at := theonetruename if strings.Contains(url, ".well-known/webfinger?resource") { at = "application/jrd+json" } From f68e73937cfcf2dd24795cb4a4946aa12f5b0a53 Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Wed, 9 Aug 2023 21:14:08 -0400 Subject: [PATCH 17/18] 1.0.0 Happy Honker --- README | 14 ++++----- docs/changelog.txt | 76 +++++++++++++++++++++++++--------------------- 2 files changed, 49 insertions(+), 41 deletions(-) diff --git a/README b/README index 8e32b20..12da7d2 100644 --- a/README +++ b/README @@ -1,6 +1,6 @@ honk --- features +## features Take control of your honks and join the federation. An ActivityPub server with minimal setup and support costs. @@ -17,7 +17,7 @@ The button to submit a new honk says "it's gonna be honked". The honk mission is to work well if it's what you want. This does not imply the goal is to be what you want. --- build +## build It should be sufficient to type make after unpacking a release. You'll need a go compiler version 1.16 or later. And libsqlite3. @@ -26,7 +26,7 @@ Even on a fast machine, building from source can take several seconds. Development sources: hg clone https://humungus.tedunangst.com/r/honk --- setup +## setup honk expects to be fronted by a TLS terminating reverse proxy. @@ -40,17 +40,17 @@ servername: (public DNS name: honk.example.com) Then run honk. ./honk --- upgrade +## upgrade old-honk backup `date +backup-%F` ./honk upgrade ./honk --- documentation +## documentation There is a more complete incomplete manual. This is just the README. --- guidelines +## guidelines One honk per day, or call it an "eighth-tenth" honk. If your honk frequency changes, so will the number of honks. @@ -67,6 +67,6 @@ It is considered rude to make noise in a place of business. The honk may be made on public property only when the person doing the honk has the permission of the owner of that property. --- disclaimer +## disclaimer Do not use honk to contact emergency services. diff --git a/docs/changelog.txt b/docs/changelog.txt index 5e9a09e..5e7adbd 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -1,15 +1,19 @@ changelog -=== next +### 1.0.0 Happy Honker + ++ A great big honk composition text box. + More reliable search. + Secret tags. -+ Mention links locally. ++ Mentions link locally. + ::: spoiler markdown ++ Fix the bonk and zonk crash. + + New threaded display order. + Improved search. @@ -18,15 +22,19 @@ changelog + Import from instagram. -+ improve handling of some Page and Link objects ++ Improve handling of some Page and Link objects. -+ search can now load external posts ++ Other federation fixes. -=== 0.9.91 One More Time ++ Search can now load external posts. + ++ Some hypercard opengraph markup for previews. + +### 0.9.91 One More Time + Swallow a follow bug. -=== 0.9.9 Eat the Bugs +### 0.9.9 Eat the Bugs + Some fixes for image descriptions. @@ -58,7 +66,7 @@ changelog + Try to fix hoot again because Twitter did a Twitter. -=== 0.9.8 Tentative Tentacle +### 0.9.8 Tentative Tentacle + Switch database to WAL mode. @@ -88,7 +96,7 @@ changelog + Some improved html and markdown. -=== 0.9.7 Witless Weekender +### 0.9.7 Witless Weekender +++ Word guessing game. Wonk wonk! @@ -104,7 +112,7 @@ changelog + Printing is prettier than ever before. -=== 0.9.6 Virile Vigorous and Potent +### 0.9.6 Virile Vigorous and Potent + A bug, a fix, a bug fix, a fix bug. @@ -120,17 +128,17 @@ changelog + Fix hoot to work with Twitter's latest crap. -=== 0.9.5 Emergency Ejection +### 0.9.5 Emergency Ejection + Fix honk init user creation. -=== 0.9.4 Collegiate Colloquialism +### 0.9.4 Collegiate Colloquialism + Add validation to some more user inputs to prevent mistakes. + Easier to use ping command. -=== 0.9.3 Notacanthous Nutshell +### 0.9.3 Notacanthous Nutshell ++ backup command. @@ -152,11 +160,11 @@ changelog - Custom lingo for those who don't like honking. -=== 0.9.2 Malleable Maltote +### 0.9.2 Malleable Maltote + Fix compilation on mac. -=== 0.9.1 Late Stage Lusciousness +### 0.9.1 Late Stage Lusciousness ++ Boing boom tschak chonky chatter. Chat messages with Pleroma. @@ -176,7 +184,7 @@ changelog + A few API refinements and additions. -=== 0.9.0 Monitor vs Merrimack +### 0.9.0 Monitor vs Merrimack --- Add Reactions. @@ -194,7 +202,7 @@ changelog + Maybe possible to use @user@example.com wihtout subdomain. -=== 0.8.6 Sartorial Headpiece +### 0.8.6 Sartorial Headpiece ++ Import command now supports the elephant in the room. @@ -220,7 +228,7 @@ changelog + More flexible meme names. -=== 0.8.5 Turnkey Blaster +### 0.8.5 Turnkey Blaster + Codenames in changelog. @@ -240,17 +248,17 @@ changelog + Can never seem to version the changelog correctly. -=== 0.8.4 +### 0.8.4 + Fix bug preventing import of keys + Option to switch map links to Apple. -=== 0.8.3 +### 0.8.3 - mistag. -=== 0.8.2 Game Warden +### 0.8.2 Game Warden ++ Import command to preserve those embarssassing old posts from Twitter. @@ -266,7 +274,7 @@ changelog + "Bug" fixes. -=== 0.8.1 +### 0.8.1 ++ Make it easier to upgrade by decoupling data dir from ".". @@ -278,7 +286,7 @@ changelog Syntax highlighting for code blocks. Something resembling an actual manual. -=== 0.8.0 Ordinary Octology +### 0.8.0 Ordinary Octology +++ Add Honk Filtering and Censorship System (HFCS). @@ -333,7 +341,7 @@ changelog - Sometimes the cached state of the @me feed becomes unsynced. Acked status may display incorrectly. -=== 0.7.7 More 7 Than Ever +### 0.7.7 More 7 Than Ever + Add another retry to workaround pixelfed's general unreliability. @@ -345,11 +353,11 @@ changelog + Increase max thread retrieval depth to 10. -=== 0.7.6 +### 0.7.6 + Fix a bug where upgrades would not complete in one step. -=== 0.7.5 +### 0.7.5 + Fix a bug (introdcued 0.7.4) preventing new user creation from working. @@ -361,7 +369,7 @@ changelog + What may be considered UI improvements. -=== 0.7.4 +### 0.7.4 + Ever more bug fixes. @@ -377,19 +385,19 @@ changelog + webp image transcoding. -=== 0.7.3 +### 0.7.3 + Better fedicompat so bonks are visible to pleroma followers. -=== 0.7.2 +### 0.7.2 + Add the funzone. Minor other UI tweaks. -=== 0.7.1 +### 0.7.1 + Fix bug preventing unfollow from working. -=== 0.7.0 Father Mother Maiden Crone Honker Bonker Zonker +### 0.7.0 Father Mother Maiden Crone Honker Bonker Zonker +++ Auto fetching and inlining of hoots. @@ -419,12 +427,12 @@ changelog + Add max-width for video tag. -=== 0.6.0 Sixy Delights +### 0.6.0 Sixy Delights Most records from this time of primitive development have been lost. -=== 0.5.0 Halfway to Heaven +### 0.5.0 Halfway to Heaven -=== 0.4.0 Fore Score +### 0.4.0 Fore Score -=== 0.3.0 Valorous Varaha +### 0.3.0 Valorous Varaha From 887bf8e8a6e6fcd0d5fb324870da88f42d32ef95 Mon Sep 17 00:00:00 2001 From: Ted Unangst Date: Wed, 9 Aug 2023 21:14:17 -0400 Subject: [PATCH 18/18] Added tag v1.0.0 for changeset b1e7ac92a58a --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 8f08ce3..963d5f9 100644 --- a/.hgtags +++ b/.hgtags @@ -38,3 +38,4 @@ bc1bcfb9c0cc86b3c63325b07e13a36b9d4500f0 v0.9.7 916cefdc24363b6e7e193dbde82632c17f58adfd v0.9.8 4b8cf31560b7d1e1696af109b158766c4ce823ab v0.9.9 d7c3a01e7aaef67c40920bbc4e8507350fc33e31 v0.9.91 +b1e7ac92a58a7183310b1a5cca8222d65f242d81 v1.0.0