d6e0d78a | #!/usr/bin/env bash |
2705034f | set -e -u -o pipefail |
ee5e259c | |
2705034f | DUAL_CONTROL="$(command -v dual_control || printf '')" |
ee5e259c | DUAL_CONTROL="${DUAL_CONTROL:-./dual_control}" get_key() { "$DUAL_CONTROL" | awk '$1 == "Key:" { print $2 }' } get_token() { |
d6e0d78a | "$DUAL_CONTROL" | awk '$2 == "Token:" { print $0 }' |
ee5e259c | } qr() { local VAL=$1 |
bc315f19 | local MODE=${2:-ANSI} |
2705034f | shift 2 || true |
ee5e259c | qrencode -t $MODE $VAL } get_url() { local user="$(whoami)" printf "otpauth://totp/${user}?secret=$1" } main() { pushd "$(dirname $0)" > /dev/null local KEY="$(get_key)" local KEY_URL="$(get_url "$KEY")" local NONINTERACTIVE="$1" |
2705034f | if command -v qrencode > /dev/null; then |
ee5e259c | qr $KEY_URL else echo "Run 'yum install qrencode' to get a QR code" fi echo "$DUAL_CONTROL" local MORE while [[ -z "$NONINTERACTIVE" ]]; do read -r -p 'Another token [Y/n]? ' MORE MORE="${MORE:-y}" if [[ "${MORE/Y/y}" != 'y' ]]; then break fi get_token done popd > /dev/null } |
2705034f | case "${1:-}" in '-h') |
ee5e259c | cat <<EOF USAGE: $(basename $0) [--help] $(basename $0) [is_not_interactive] EOF exit 0 ;; |
2705034f | |
ee5e259c | *) |
2705034f | main "${1:-}" |
ee5e259c | esac |