45 lines
1.4 KiB
Plaintext
45 lines
1.4 KiB
Plaintext
|
|
#! /usr/bin/zsh
|
||
|
|
|
||
|
|
pwdpath="/tmp/pwd.gpg"
|
||
|
|
pinpath="${XDG_DATA_HOME:-$HOME/.local/share}/pin.gpg"
|
||
|
|
|
||
|
|
if [ -f "$pwdpath" ]
|
||
|
|
then
|
||
|
|
PIN="$(dmenupass "PIN")"
|
||
|
|
export MASTERPW="$(gpg --batch --yes --passphrase "$PIN" --decrypt "$pwdpath" 2&>/dev/null)"
|
||
|
|
elif [ -f "$pinpath" ]
|
||
|
|
then
|
||
|
|
export MASTERPW="$(dmenupass "Password")"
|
||
|
|
PIN="$(gpg --batch --yes --passphrase "$MASTERPW" --decrypt "$pinpath" 2&>/dev/null)"
|
||
|
|
echo "$MASTERPW" | gpg --symmetric --batch --yes --passphrase "$PIN" --output "$pwdpath"
|
||
|
|
else
|
||
|
|
export MASTERPW="$(dmenupass "Password")"
|
||
|
|
PIN="$(dmenupass "PIN")"
|
||
|
|
echo "$PIN" | gpg --symmetric --batch --yes --passphrase "$MASTERPW" --output "$pinpath"
|
||
|
|
echo "$MASTERPW" | gpg --symmetric --batch --yes --passphrase "$PIN" --output "$pwdpath"
|
||
|
|
fi
|
||
|
|
|
||
|
|
[ -z "$MASTERPW" ] && exit 1;
|
||
|
|
|
||
|
|
choices="$(enpasscli -vault="$HOME/Documents/Enpass/Vaults/primary" -sort show 2>&1 | sed -n '/level=info/p')"
|
||
|
|
|
||
|
|
awkcommand='
|
||
|
|
{
|
||
|
|
if (length($3)) {
|
||
|
|
$line = $2" ("$3")"; # If username exists wrap it in brackets
|
||
|
|
} else {
|
||
|
|
$line = $2; # Otherwise just show title
|
||
|
|
}
|
||
|
|
print $line;
|
||
|
|
}
|
||
|
|
'
|
||
|
|
|
||
|
|
chosen="$(echo "$choices" | awk -F '\\s*(title|login|pass|cat\\.)\\s*:\\s*' "$awkcommand" | dmenu -i -ix -l 30)"
|
||
|
|
|
||
|
|
linenumber="$((chosen + 1))"
|
||
|
|
|
||
|
|
line="$(echo "$choices" | sed "${linenumber}q;d")"
|
||
|
|
|
||
|
|
echo $line | sed -n -e 's/.*? pass : (.*)+$/\\1/p'
|
||
|
|
|