Commits


lemmy: import from its own repo No need to manage this seperately, it's all related and only brings in a single dep.


apub, cmd/apsend: implement shared inbox delivery This helps servers hosting many actors, and it helps us when delivering to lots of people on the same server; we only need to make 1 request per server.


apub: remove unused http sig header list


apub: handle unmarshalling from quoted-printable mail MailMate, for example, using quoted-printable encoding when lines are about 80 chars long. Blegh!


cmd/apserve: correct nodeinfo field name


apub: use RFC5322-compatible timestamp in Date in header RFC822 makes Spamassassin unhappy and I learned isn't actually compliant with revisions to the message spec!


test for carriage return removal


apub: handle collection recipients mroe reliably When we receive activity that has a collection, we see if any of the other actor recipients have the collection set as their followers. Then we can encode it with plus addressing. If we can't do that we drop it. Not ideal, but it covers most use cases. Next up we can encode arbitrary collections like "some/path/to/thing@example.com".


apub: handle HTTP request signing for those without body


cmd/apsend: remove unused message encoding


apub: correctly marshal followers collection from an email recipients The receiving server can forward the message for us. For us to resolve the entire collection is a lot of work, especially since paginated followers collections only contain like 12 entries per page! Lots of people have over 300 followers.


apub: guard against empty pubkey url A nil key gets handled by rsa.Sign* but we won't catch an empty pubkey url until some server finds an incorrect HTTP signature.


cmd/apget: context on marshal to mail error


apub: correct actor Address() doc typo


doc: document receiving and reading sections While here make apget print mail format by default, consistent with rest of system.


cmd/apsend: accept activitypub json input This lets it send activity which cannot be converted to mail such as Follow


cmd/webfinger: import webfinger command


cmd/apget: clearer summary doc. It's not just about fetching JSON.


apub: omit empty ID when encoding Activity This is actually valid according to the spec. This makes embedded Activities like Mentions neater, too.


cmd/apget: add little tool for downloading objects


apub: guard against content we cannot unmarshal activity from Yet! Decoding shouldn't be too hard. But for now it's a TODO. At least error out so we don't send out crazy messages.


doc: make code blocks legible in dark mode


cmd/apserve: write and serve the system docs!


cmd/apsubmit: reliably print stderr of apsend


apub: tighten up content-type on marshalling into mail Clearer: set a body to read from, then change it when necessary. Fewer instructions! Also, mail clients don't really know what to do with text/markdown, so just use text/plain; that's what Gruber would want. Adds basic test case too