In about 16 commands, I demonstrate installing #SofaPub, creating a new identity, responding to an external Follow request, sending a new Note ("Status" in Mastodon parlance), and then deleting everything from the remote server.
Everything in SofaPub is done from the command-line. I describe a couple of steps taken from the Serendipitous web interface to facilitate the interaction.
Network/DNS configuration (with TLS) is in place prior to this sequence.
#SofaPub v0.1.6 is up. Both Notes and Actors can be deleted now.
Deleting your Actor record:
sofapub client delete --inbox https://infosec.exchange/inbox
Deleting a Note record:
sofapub client delete --inbox https://infosec.exchange/inbox --id https://sofa.jdt.dev/objects/c3324e8a-de9d-41b4-ae06-d27644c72d89
Side note: Mastodon transforms the URL-like IDs to links. Bear in mind that the examples in all my posts included the "https://" at the beginning of the IDs.
Published version 0.1.5 of #SofaPub which adds Accept and Create templates that can be used like:
```
sofapub client accept \
--id https://infosec.exchange/4474e616-ecc0-481f-adb5-38a406924114 \
--actor https://infosec.exchange/users/jdt \
--inbox https://infosec.exchange/inbox
```
```
echo "This is a test, please ignore." | sofapub client note \
--inbox https://infosec.exchange/inbox
```
`client note` can also be used with `--content` instead of `stdin` to provide the Note content. Notes are public-only.
`cargo install sofapub`
Updated #SofaPub to v0.1.4. The only change is a fix to the template copying logic that I broke in v0.1.3.
I'm using the `rust-embed` crate to embed the template files in the binary which are then moved to the local filesystem by the setup command to facilitate experimentation. I needed to change the way that I was using that crate for it to be effective.
`cargo install sofapub` to update.
https://gitlab.com/justindthomas/sofapub/-/commit/67c76e5d378a4a4ea6ba3a22ce6df978ee32bd5e
Published SofaPub v0.1.3 this morning. Added a "delete" client command to allow you to remove your profile from a remote server.
With the current code architecture, I'm finding it trivial to add new messages like this. (It took me 20 minutes this morning.)
https://gitlab.com/justindthomas/sofapub/-/commit/4e6cd5bc1aa9bc9d9c1d6864c7724358e535ae64
`cargo install sofapub` to update.
Published version 0.1.1 of SofaPub with a couple of interesting changes:
- Added "client" functionality to streamline some common uses. The first commands I've built here are for Follow and Undo. Check out the attached screenshots.
- Added templating using minijinja. Templates are kept in ~/.sofapub/templates and are user-adjustable.
Update with `cargo install sofapub`
README is out-of-date. I'll correct that shortly.
Successfully sent a message from my local #SofaPub server to myself at infosec.exchange. The command I used was:
cat ./hello_world.json | sofapub post https://infosec.exchange/inbox
The JSON file is just an ActivityPub Create message I created by hand in Emacs.
Also uploaded sofapub to crates.io. You can install it with `cargo install sofapub` and run the executable right away. I'll update the documentation shortly to align with that usage.
Watching Captain America on the sofa with my family (working our way through the MCU) and added documentation to #SofaPub demonstrating one use (lightweight interaction with secured #ActivityPub instances). This `sofapub_get` tool is something I've wanted for quite a while. It should make understanding what other folks are building much easier.
#sofapub #activitypub #rust #fediverse
#SofaPub update: In addition to the basic discovery functioning (i.e., you can query your SofaPub user from a Mastodon server and find it), POST messages to the inbox are now captured. An example is in the README.
https://gitlab.com/justindthomas/sofapub
Also added some commentary there on how I envision the sending, receiving, and storage of data operating.