cosmic/bin/webfinger

62 lines
1.7 KiB
Bash
Executable File

#!/bin/sh
die () {
msg="$1"
code="$2"
# exit code defaults to 1
if printf "%s" "$code" | grep -q '^[0-9]+$'; then
code=1
fi
# output message to stdout or stderr based on code
if [ -n "$msg" ]; then
if [ "$code" -eq 0 ]; then
printf "%s\\n" "$msg"
else
printf "%s\\n" "$msg" >&2
fi
fi
exit "$code"
}
yesno () {
old_stty_cfg=$(stty -g)
stty raw -echo
yn=$(while ! head -c 1 | grep -i '[ny]'; do true; done)
stty "$old_stty_cfg"
case $yn in
y ) result=0 ;;
* ) result=1 ;;
esac
return $result
}
printf "This script will attempt to fetch and store your fediverse account webfinger\n"
printf "information. Cosmic is set up to serve that to users who search or mention you\n"
printf "at your cosmic.voyage username. If they send a message to %s@cosmic.voyage\n" "${USER}"
printf "it will properly deliver to your real account.\n\n"
printf "This script only needs to be run once to set up your redirect.\n\n"
printf "What is your fedi address? (format @username@server.com) [Enter to cancel]: \n"
read -r fedi
if [ -z "$fedi" ]; then
die "" 2
else
fediuser=$(printf "%s" "$fedi" | awk '{split($0,a,"@"); print a[2]}')
fediserver=$(printf "%s" "$fedi" | awk '{split($0,a,"@"); print a[3]}')
if [ -z "$fediuser" ]; then
die "Improper address" 2
fi
if [ -z "$fediserver" ]; then
die "Improper address" 2
fi
echo "$fediserver" "$fediuser"
fediwebfinger="$(curl -s "https://${fediserver}/.well-known/webfinger?resource=acct:${fediuser}@${fediserver}")"
printf "Found the following:\n\n%s\n" "$fediwebfinger"
printf "\nDo you want to save it?\n"
if yesno; then
printf "%s" "$fediwebfinger" > "$HOME/.webfinger.json"
printf "SAVED!\n"
else
printf "ABORT!\n"
fi
fi