Software
This is a collection of software I built and actively use. If something here is useful to you too, let me know.
actix-middleware-rfc7662
Actix-web extractor which validates OAuth2 tokens through an RFC 7662 token introspection endpoint. See demo/main.rs for an example of how it is used.
chkoauth2
chkoauth2 is a CGI-based wrapper which will validate OAuth2 bearer tokens against an RFC 7662 token introspection endpoint before executing another script. To use it, you create a CGI script that looks something like:
#!/bin/sh
OAUTH2_AUTHORIZATION_URL="https://example.com/authorize" \
OAUTH2_INTROSPECTION_URL="https://example.com/introspect" \
OAUTH2_CLIENT_ID="<OAuth2 client id>" \
OAUTH2_CLIENT_SECRET="<OAuth2 client secret>" \
chkoauth2 --scope create another.cgi
chkoauth2 also includes an IndieAuth extension, which will pass the user’s profile URL to the wrapped script. See the IndieAuth specification for more information.
emailcanary
I have run my own mail servers since at least 2005, including hosting several mailing lists. In the 20xx I started having trouble with email getting through to some of the bigger email providers (usually Outlook). After one too many times of learning from users that my server had been silently blacklisted, I built emailcanary so that I would know first if mail wasn’t going through.
emailcanary has two main commands, --chirp and
--check, which I run through cron. chirp sends
an email, usually to a test mailing list, with a random identifier.
check uses IMAP to check the inbox of several different
accounts on various providers and checks for messages sent by
chirp. Anything mising is printed to stdout, which gets
emailed to me by cron.
00 * * * * emailcanary -d db.db -f <from-address> --chirp <mailing-list>
10 * * * * emailcanary -d db.db -f <from-address> --check <mailing-list>
fit2mf2
A utility to convert a Garmin FIT data file into a microformat entry.
micropub-tools
Tools for working with micropub and microformat entries.
mp32rss
mp32rss is a tool to build static website from a set of mp3s in an S3 bucket. I use this generate podcast feeds. One of the novel features of mp32rss is that all of the templates and configuration are also stored in the same S3 bucket, which keeps everything in sync when multiple machines are used to manage the podcast.
s3-media-endpoint
Micropub Media Endpoint which saves data to S3, written in rust.