From d4f68521d05a0749347fc97edfb3e734915d3e99 Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Wed, 17 Feb 2021 22:57:10 -0500 Subject: Add bugzilla support to sup --- bin/man1/sup.1 | 3 ++- bin/sup.sh | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/bin/man1/sup.1 b/bin/man1/sup.1 index f0fe70cb..10dac5d9 100644 --- a/bin/man1/sup.1 +++ b/bin/man1/sup.1 @@ -1,4 +1,4 @@ -.Dd February 16, 2021 +.Dd February 17, 2021 .Dt SUP 1 .Os . @@ -36,5 +36,6 @@ and .Pp The following services are supported: .Cm discogs , +.Cm freebsdbugzilla , .Cm lobsters , .Cm tildenews . diff --git a/bin/sup.sh b/bin/sup.sh index 308fd706..b8af9fc1 100644 --- a/bin/sup.sh +++ b/bin/sup.sh @@ -11,6 +11,45 @@ copy() { printf '%s' "$1" | pbcopy } +bugzilla() { + echo 'Fetching CSRF token...' + csrf=$( + curl -Ss "${bugzillaBase}/" | + sed -n ' + /name="token"/N + s/.*name="token"[[:space:]]*value="\([^"]*\)".*/\1/p + ' | head -n 1 + ) + echo 'Submitting form...' + curl -Ss -X POST \ + -F "loginname=${email}" -F "token=${csrf}" -F 'a=reqpw' \ + "${bugzillaBase}/token.cgi" \ + >/dev/null + echo 'Waiting for email...' + token=$( + git fetch-email -i -M Trash \ + -F "${bugzillaFrom}" -T "${email}" \ + -S 'Bugzilla Change Password Request' | + sed -n 's/.*t=3D\([^&]*\).*/\1/p' | + head -n 1 + ) + password=$(generate) + echo 'Setting password...' + curl -Ss -X POST \ + -F "t=${token}" -F 'a=chgpw' \ + -F "password=${password}" -F "matchpassword=${password}" \ + "${bugzillaBase}/token.cgi" \ + >/dev/null + copy "${password}" + open "${bugzillaBase}/" +} + +freebsdbugzilla() { + bugzillaBase='https://bugs.freebsd.org/bugzilla' + bugzillaFrom='bugzilla-noreply@freebsd.org' + bugzilla +} + discogs() { echo 'Submitting form...' curl -Ss -X POST \ -- cgit 1.4.1