#sofapub — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #sofapub, aggregated by home.social.
-
A beautiful thing about the #Fediverse is that you can interact with it however you want. If you want a dark interface with flashes of red, goldenrod, and blue - no one is going to stop you. And you want to do it all with #WASM in your browser? That's fine. And you want #E2EE? Go for it. You want to do it with #SvelteKit and #RustLang? Fine. Whatever.
None of it is a trivial undertaking, of course. Although if you just want to interact with #ActivityPub from a database (or
JSONfiles) andcurl, you could build something over a weekend (see my older #SofaPub code for an example).Threads and Bluesky really hold no interest for me. I exist on Threads solely so that I can be there in there event they actually do something interesting with ActivityPub integration (they're pretty damn slow about it, though). Until I can tell my non-technical friends on Threads to follow me here on #Enigmatick and they don't have to jump through a bunch of hoops, I'm skeptical. Bluesky… meh.
-
A beautiful thing about the #Fediverse is that you can interact with it however you want. If you want a dark interface with flashes of red, goldenrod, and blue - no one is going to stop you. And you want to do it all with #WASM in your browser? That's fine. And you want #E2EE? Go for it. You want to do it with #SvelteKit and #RustLang? Fine. Whatever.
None of it is a trivial undertaking, of course. Although if you just want to interact with #ActivityPub from a database (or
JSONfiles) andcurl, you could build something over a weekend (see my older #SofaPub code for an example).Threads and Bluesky really hold no interest for me. I exist on Threads solely so that I can be there in there event they actually do something interesting with ActivityPub integration (they're pretty damn slow about it, though). Until I can tell my non-technical friends on Threads to follow me here on #Enigmatick and they don't have to jump through a bunch of hoops, I'm skeptical. Bluesky… meh.
-
One of the challenges that I'm working on is empowering people with consumer-class internet access (i.e., dynamic addresses) to run their own Fediverse servers. The Publish/Publisher and websocket components I've added to #SofaPub move in that direction.
This allows someone with broad connectivity to re-publish connections from users who are more limited.
This is a big addition and I haven't published it to crates.io yet. But the code is at https://gitlab.com/justindthomas/sofapub.
-
One of the challenges that I'm working on is empowering people with consumer-class internet access (i.e., dynamic addresses) to run their own Fediverse servers. The Publish/Publisher and websocket components I've added to #SofaPub move in that direction.
This allows someone with broad connectivity to re-publish connections from users who are more limited.
This is a big addition and I haven't published it to crates.io yet. But the code is at https://gitlab.com/justindthomas/sofapub.
-
Added the beginning of a terminal UI to #SofaPub. I'm not convinced that I want to spend a lot of time on this; I'm handy with HTML/CSS/Javascript, but terminal layout is a different flavor of pain. I do love having the option to not use a browser, though.
I'll probably switch to working on a public TLS proxy for local clients (e.g., your-name.enigmtk.net) using Ockam.
https://gitlab.com/justindthomas/sofapub/-/commit/bcc570a6a4c59f3079c05e06acf62c6877a56ae9
-
Added the beginning of a terminal UI to #SofaPub. I'm not convinced that I want to spend a lot of time on this; I'm handy with HTML/CSS/Javascript, but terminal layout is a different flavor of pain. I do love having the option to not use a browser, though.
I'll probably switch to working on a public TLS proxy for local clients (e.g., your-name.enigmtk.net) using Ockam.
https://gitlab.com/justindthomas/sofapub/-/commit/bcc570a6a4c59f3079c05e06acf62c6877a56ae9
-
Published #SofaPub v0.1.8 with signature verification on inbox posts enabled.
One might argue that that is more than "minimally functional." But this CISO would tell them, "Donny, you're out of your element!"
The current function is crude: an Actor object is retrieved every time a post is submitted. I'll write something to cache those responses later.
The verify (and signing) routines are ported from #Enigmatick and upgraded for v0.9.2 of the rsa crate.
https://gitlab.com/justindthomas/sofapub/-/commit/5e1e19e73ae2ab46e2a96867a648535f4821f148
-
Published #SofaPub v0.1.8 with signature verification on inbox posts enabled.
One might argue that that is more than "minimally functional." But this CISO would tell them, "Donny, you're out of your element!"
The current function is crude: an Actor object is retrieved every time a post is submitted. I'll write something to cache those responses later.
The verify (and signing) routines are ported from #Enigmatick and upgraded for v0.9.2 of the rsa crate.
https://gitlab.com/justindthomas/sofapub/-/commit/5e1e19e73ae2ab46e2a96867a648535f4821f148
-
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 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.
-
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.
-
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 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.