mirror of
https://github.com/He4eT/fuzzy-bitwarden-clipboard.git
synced 2026-05-04 23:07:22 +00:00
Format the output
This commit is contained in:
parent
55b96654db
commit
f3c53f0a78
1 changed files with 35 additions and 30 deletions
69
bwc
69
bwc
|
|
@ -5,33 +5,6 @@ set -ef
|
||||||
local scriptname=$(basename "$0")
|
local scriptname=$(basename "$0")
|
||||||
local sessionfile='/tmp/bw_session'
|
local sessionfile='/tmp/bw_session'
|
||||||
|
|
||||||
copy_data () {
|
|
||||||
local id=$1
|
|
||||||
local login=$2
|
|
||||||
local sessionkey=$3
|
|
||||||
local totp
|
|
||||||
|
|
||||||
echo "Name: $(jq -r ".name" <<< $login), ID: $(jq -r ".id" <<< $login)"
|
|
||||||
# Copy the username to the clipboard
|
|
||||||
echo "> Copying Username"
|
|
||||||
jq -r ".login.username" <<< $login | xclip -sel clip
|
|
||||||
# Wait for user input before coping the password
|
|
||||||
echo "> Press Enter to copy password..."
|
|
||||||
read
|
|
||||||
# Copy the password to the clipboard
|
|
||||||
echo "> Copying Password"
|
|
||||||
jq -r ".login.password" <<< $login | xclip -sel clip
|
|
||||||
# Copy a TOTP Token if available
|
|
||||||
totp=$(jq -r ".login.totp" <<< $login)
|
|
||||||
if [[ $totp != "null" ]]; then
|
|
||||||
# Wait for user input before coping the totp token
|
|
||||||
echo "> Press any key to copy TOTP Token..."
|
|
||||||
read
|
|
||||||
echo "> Copying TOTP Token"
|
|
||||||
bw get totp $id --session $sessionkey | xclip -sel clip
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_saved_sessionkey () {
|
function get_saved_sessionkey () {
|
||||||
sudo touch $sessionfile
|
sudo touch $sessionfile
|
||||||
echo $(sudo cat $sessionfile)
|
echo $(sudo cat $sessionfile)
|
||||||
|
|
@ -43,7 +16,35 @@ function save_sessionkey () {
|
||||||
sudo chmod 600 $sessionfile
|
sudo chmod 600 $sessionfile
|
||||||
}
|
}
|
||||||
|
|
||||||
|
copy_item_to_clipboard () {
|
||||||
|
local id=$1
|
||||||
|
local login=$2
|
||||||
|
local sessionkey=$3
|
||||||
|
local totp
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "$(jq -r ".id" <<< $login)"
|
||||||
|
echo "$(jq -r ".name" <<< $login)"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
jq -r ".login.username" <<< $login | xclip -sel clip
|
||||||
|
echo "Username \"$(jq -r ".login.username" <<< $login)\" copied to clipboard."
|
||||||
|
|
||||||
|
read -s -k $'?Press any key to copy the password...\n'
|
||||||
|
jq -r ".login.password" <<< $login | xclip -sel clip
|
||||||
|
echo "Password copied to clipboard."
|
||||||
|
|
||||||
|
totp=$(jq -r ".login.totp" <<< $login)
|
||||||
|
if [[ $totp != "null" ]]; then
|
||||||
|
read -s -k $'?Press any key to copy the TOTP Token...\n'
|
||||||
|
bw get totp $id --session $sessionkey | xclip -sel clip
|
||||||
|
echo "Token copied to clipboard."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
|
# Check the search term
|
||||||
|
|
||||||
local searchterm=$1
|
local searchterm=$1
|
||||||
|
|
||||||
if [[ -z $searchterm ]] ; then
|
if [[ -z $searchterm ]] ; then
|
||||||
|
|
@ -51,6 +52,8 @@ main() {
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Check the session key
|
||||||
|
|
||||||
local sessionkey=$(get_saved_sessionkey)
|
local sessionkey=$(get_saved_sessionkey)
|
||||||
|
|
||||||
if [[ -z $sessionkey ]] ; then
|
if [[ -z $sessionkey ]] ; then
|
||||||
|
|
@ -58,14 +61,15 @@ main() {
|
||||||
sessionkey=$(bw unlock --raw)
|
sessionkey=$(bw unlock --raw)
|
||||||
save_sessionkey $sessionkey
|
save_sessionkey $sessionkey
|
||||||
else
|
else
|
||||||
echo "Using the existing session key from $sessionfile"
|
echo "Using the existing session key from \"$sessionfile\"."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Search for passwords using the search term
|
# Get a list of matching items
|
||||||
echo "Searching for '$searchterm'..."
|
|
||||||
|
|
||||||
|
echo "Searching for '$searchterm'..."
|
||||||
local logins=$(bw list items --search $searchterm --session $sessionkey)
|
local logins=$(bw list items --search $searchterm --session $sessionkey)
|
||||||
|
|
||||||
|
# Pick one with the fzf
|
||||||
local id=$(
|
local id=$(
|
||||||
jq -r '.[] | "\(.name)\t\(.login.username)\t\(.id)"' <<< $logins \
|
jq -r '.[] | "\(.name)\t\(.login.username)\t\(.id)"' <<< $logins \
|
||||||
| fzf --reverse --with-nth=1,2 --delimiter="\t" --select-1 --exit-0 \
|
| fzf --reverse --with-nth=1,2 --delimiter="\t" --select-1 --exit-0 \
|
||||||
|
|
@ -73,10 +77,11 @@ main() {
|
||||||
)
|
)
|
||||||
|
|
||||||
if [[ -n $id ]]; then
|
if [[ -n $id ]]; then
|
||||||
|
# Process the selected item
|
||||||
local login="$(jq ".[] | select(.id == \"$id\")" <<< $logins)"
|
local login="$(jq ".[] | select(.id == \"$id\")" <<< $logins)"
|
||||||
copy_data $id $login $sessionkey
|
copy_item_to_clipboard $id $login $sessionkey
|
||||||
else
|
else
|
||||||
echo "No entry found"
|
echo "No entry found."
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue