diff options
-rw-r--r-- | bin/man1/sup.1 | 22 | ||||
-rw-r--r-- | bin/sup.sh | 23 |
2 files changed, 37 insertions, 8 deletions
diff --git a/bin/man1/sup.1 b/bin/man1/sup.1 index ba4fe3fd..4b266e06 100644 --- a/bin/man1/sup.1 +++ b/bin/man1/sup.1 @@ -23,6 +23,20 @@ or flow. The password is copied to the clipboard and the service login page is opened. +For passwordless services +with email-based authentication, +the emailed login link is opened. +. +.Pp +The following services are supported: +.Cm asciinema , +.Cm discogs , +.Cm freebsdbugzilla , +.Cm liberapay , +.Cm lobsters , +.Cm tildenews . +. +.Pp The .Nm utility requires @@ -32,11 +46,3 @@ utility requires .Xr pbcopy 1 and .Xr open 1 . -. -.Pp -The following services are supported: -.Cm discogs , -.Cm freebsdbugzilla , -.Cm liberapay , -.Cm lobsters , -.Cm tildenews . diff --git a/bin/sup.sh b/bin/sup.sh index fb6ad4bf..b7f28bc7 100644 --- a/bin/sup.sh +++ b/bin/sup.sh @@ -11,6 +11,29 @@ copy() { printf '%s' "$1" | pbcopy } +asciinema() { + echo 'Fetching CSRF token...' + jar=$(mktemp -t sup) + trap 'rm "${jar}"' EXIT + csrf=$( + curl -Ss -c "${jar}" 'https://asciinema.org/login/new' | + sed -n 's/.*name="_csrf_token".*value="\([^"]*\)".*/\1/p' + ) + echo 'Submitting form...' + curl -Ss -X POST -b "${jar}" \ + -F "_csrf_token=${csrf}" -F "login[email]=${email}" \ + 'https://asciinema.org/login' \ + >/dev/null + echo 'Waiting for email...' + url=$( + git fetch-email -i -M Trash \ + -F 'hello@asciinema.org' -T "${email}" \ + -S 'Login to asciinema.org' | + grep -m 1 '^https://asciinema\.org/session/new' + ) + open "${url}" +} + bugzilla() { echo 'Fetching CSRF token...' csrf=$( |