From 0db223c8c38b6442fc5fd36442bbc51cb7712233 Mon Sep 17 00:00:00 2001 From: delaosa Date: Sat, 29 Jun 2019 17:27:22 +0200 Subject: [PATCH 1/2] Changes to allow OTP copy, handling also when OTP entry is the first one --- rofi-pass | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/rofi-pass b/rofi-pass index ddbbd9b..7251464 100755 --- a/rofi-pass +++ b/rofi-pass @@ -227,7 +227,10 @@ copyUser () { copyField () { checkIfPass - printf '%s' "${stuff[${copyfield}]}" | doClip + case $copyfield in + "OTP") printf '%s' $(generateOTP) | doClip ;; + *) printf '%s' "${stuff[${copyfield}]}" | doClip ;; + esac clearUp } @@ -384,6 +387,14 @@ mainMenu () { fields=$(printf '%s\n' "${password_temp[@]:1}" | awk '$1 ~ /:$/ || /otpauth:\/\// {$1=$1;print}') declare -A stuff + + # OTP entry is the first line + case "$password" in + "otpauth://"*|"${OTPmethod_field}"*) + stuff["OTP"]="" + ;; + esac + stuff["pass"]=${password} if [[ -n $fields ]]; then From b6c20e2e9d26f408143f1d478a529f1095fe42c1 Mon Sep 17 00:00:00 2001 From: delaosa Date: Sat, 29 Jun 2019 17:42:42 +0200 Subject: [PATCH 2/2] Changes to honor edit_new_pass and EDITOR parameters --- rofi-pass | 44 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/rofi-pass b/rofi-pass index 7251464..8664596 100755 --- a/rofi-pass +++ b/rofi-pass @@ -13,6 +13,10 @@ _image_viewer () { feh - } +_pwgen () { + pwgen "$@" +} + # We expect to find these fields in pass(1)'s output URL_field='url' USERNAME_field='user' @@ -33,6 +37,7 @@ default_user="${ROFI_PASS_DEFAULT_USER-$(whoami)}" default_user2=john_doe password_length=12 fix_layout=false +edit_new_pass=false # default shortcuts autotype="Alt+1" @@ -397,6 +402,7 @@ mainMenu () { stuff["pass"]=${password} + if [[ -n $fields ]]; then while read -r LINE; do unset _id _val @@ -706,7 +712,7 @@ insertPass () { "${USER}" "${default_user}") - user=$(printf '%s\n' "${user_content[@]}" | _rofi -dmenu -mesg "Chose Username or type" -p "> ") + user=$(printf '%s\n' "${user_content[@]}" | _rofi -dmenu -mesg "Choose Username or type" -p "> ") val=$? if [[ $val -eq 1 ]]; then @@ -738,12 +744,19 @@ insertPass () { "---" "${USERNAME_field}: ${user}" "${URL_field}: ${url}") - printf '%s\n' "${pass_content[@]}" | PASSWORD_STORE_DIR="${root}" pass insert -m "${name}" > /dev/null && PASSWORD_STORE_DIR="${root}" pass edit "${name}" + printf '%s\n' "${pass_content[@]}" | PASSWORD_STORE_DIR="${root}" pass insert -m "${name}" > /dev/null + if [[ $edit_new_pass == "true" ]]; then + EDITOR=$EDITOR PASSWORD_STORE_DIR="${root}" pass edit "${name}" + fi + else pass_content=("${pw}" "---" "${USERNAME_field}: ${user}") - printf '%s\n' "${pass_content[@]}" | PASSWORD_STORE_DIR="${root}" pass insert -m "${name}" > /dev/null && PASSWORD_STORE_DIR="${root}" pass edit "${name}" + printf '%s\n' "${pass_content[@]}" | PASSWORD_STORE_DIR="${root}" pass insert -m "${name}" > /dev/null + if [[ $edit_new_pass == "true" ]]; then + EDITOR=$EDITOR PASSWORD_STORE_DIR="${root}" pass edit "${name}" + fi fi else if [[ $url == http* ]]; then @@ -751,17 +764,38 @@ insertPass () { "---" "${USERNAME_field}: ${user}" "${URL_field}: ${url}") - printf '%s\n' "${pass_content[@]}" | PASSWORD_STORE_DIR="${root}" pass insert -m "${group}/${name}" > /dev/null && PASSWORD_STORE_DIR="${root}" pass edit "${group}/${name}" + printf '%s\n' "${pass_content[@]}" | PASSWORD_STORE_DIR="${root}" pass insert -m "${group}/${name}" > /dev/null + if [[ $edit_new_pass == "true" ]]; then + EDITOR=$EDITOR PASSWORD_STORE_DIR="${root}" pass edit "${group}/${name}" + fi + else pass_content=("${pw}" "---" "${USERNAME_field}: ${user}") printf '%s\n' "${pass_content[@]}" | PASSWORD_STORE_DIR="${root}" pass insert -m "${group}/${name}" > /dev/null if [[ $edit_new_pass == "true" ]]; then - PASSWORD_STORE_DIR="${root}" pass edit "${group}/${name}" + EDITOR=$EDITOR PASSWORD_STORE_DIR="${root}" pass edit "${group}/${name}" fi fi fi + + askmenu_content=( + "Yes" + "No") + + askGenMenu=$(printf '%s\n' "${askmenu_content[@]}" | _rofi -dmenu -p "Copy Password for ${name}? > ") + askgen_exit=$? + + if [[ $askgen_exit -eq 1 ]]; then + exit + fi + if [[ $askGenMenu == "Yes" ]]; then + password=${pw} + copyPass + fi + + } help_msg () {