62 lines
1.7 KiB
Bash
Executable File
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
|