mirror of
https://github.com/He4eT/fuzzy-bitwarden-clipboard.git
synced 2026-05-04 14:57:22 +00:00
Initial commit
This commit is contained in:
commit
a002febdc7
1 changed files with 61 additions and 0 deletions
61
bwc
Executable file
61
bwc
Executable file
|
|
@ -0,0 +1,61 @@
|
||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
set -ef
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
local searchterm=$1
|
||||||
|
local sessionkey logins login id
|
||||||
|
# Use an existing BW_SESSION or obtain a new session key
|
||||||
|
if [[ -z $BW_SESSION ]] ; then
|
||||||
|
echo "Creating new sessionkey..."
|
||||||
|
sessionkey=$(bw unlock --raw)
|
||||||
|
else
|
||||||
|
echo "Using existing sessionkey..."
|
||||||
|
sessionkey=$BW_SESSION
|
||||||
|
fi
|
||||||
|
# Search for passwords using the search term
|
||||||
|
if [[ -z $searchterm ]] ; then
|
||||||
|
echo "Searchterm can't be empty"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Searching for '$searchterm'..."
|
||||||
|
logins=$(bw list items --search $searchterm --session $sessionkey)
|
||||||
|
id=$(jq -r '.[] | "\(.name)\t\(.login.username)\t\(.id)"' <<< $logins \
|
||||||
|
| fzf --reverse --with-nth=1,2 --delimiter="\t" --select-1 --exit-0 \
|
||||||
|
| awk -F"\t" '{print $3}'
|
||||||
|
)
|
||||||
|
if [[ -n $id ]]; then
|
||||||
|
login="$(jq ".[] | select(.id == \"$id\")" <<< $logins)"
|
||||||
|
copy_data $id $login $sessionkey
|
||||||
|
else
|
||||||
|
echo "No entry found..."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue