mirror of
https://codeberg.org/mclemens/qrz.is.git
synced 2024-11-02 18:17:27 -04:00
e6adda7935
added tags to all posts
70 lines
2.7 KiB
Markdown
70 lines
2.7 KiB
Markdown
---
|
|
title: Patch for the CLI password manager „pass“
|
|
type: post
|
|
author: micha
|
|
date: 2016-05-25T21:47:20+00:00
|
|
url: /patch-for-the-cli-password-manager-pass/
|
|
tags:
|
|
- Software
|
|
- CLI
|
|
---
|
|
I use Pass (https://www.passwordstore.org/) to store and synchronize all my passwords.
|
|
|
|
When I use Pass via SSH on a remote system in order to retrieve a password, I cannot make use of it's clipboard feature. In order to output the password without actually displaying it, I wrote the following patch which prints the password in red on a red background while still being able to be manually copied to the clipboard:
|
|
|
|
```
|
|
src/password-store.sh | 19 +++++++++++++------
|
|
1 file changed, 13 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/src/password-store.sh b/src/password-store.sh
|
|
index d535a74..f4e1cfe 100755
|
|
--- a/src/password-store.sh
|
|
+++ b/src/password-store.sh
|
|
@@ -223,8 +223,8 @@ cmd_usage() {
|
|
List passwords.
|
|
$PROGRAM find pass-names...
|
|
List passwords that match pass-names.
|
|
- $PROGRAM [show] [--clip,-c] pass-name
|
|
- Show existing password and optionally put it on the clipboard.
|
|
+ $PROGRAM [show] [--clip,-c] [--hidden,-h] pass-name
|
|
+ Show existing password and optionally put it on the clipboard or hide it.
|
|
If put on the clipboard, it will be cleared in $CLIP_TIME seconds.
|
|
$PROGRAM grep search-string
|
|
Search for password files containing search-string when decrypted.
|
|
@@ -294,23 +294,30 @@ cmd_init() {
|
|
}
|
|
|
|
cmd_show() {
|
|
- local opts clip=0
|
|
- opts="$($GETOPT -o c -l clip -n "$PROGRAM" -- "$@")"
|
|
+ local opts clip=0 hidden=0
|
|
+ opts="$($GETOPT -o ch -l clip,hidden -n "$PROGRAM" -- "$@")"
|
|
local err=$?
|
|
eval set -- "$opts"
|
|
while true; do case $1 in
|
|
-c|--clip) clip=1; shift ;;
|
|
+ -h|--hidden) hidden=1; shift ;;
|
|
--) shift; break ;;
|
|
esac done
|
|
|
|
- [[ $err -ne 0 ]] && die "Usage: $PROGRAM $COMMAND [--clip,-c] [pass-name]"
|
|
+ [[ $err -ne 0 ]] && die "Usage: $PROGRAM $COMMAND [--clip,-c] [--hidden,-h] [pass-name]"
|
|
|
|
local path="$1"
|
|
local passfile="$PREFIX/$path.gpg"
|
|
check_sneaky_paths "$path"
|
|
if [[ -f $passfile ]]; then
|
|
if [[ $clip -eq 0 ]]; then
|
|
- $GPG -d "${GPG_OPTS[@]}" "$passfile" || exit $?
|
|
+ if [[ $hidden -eq 0 ]]; then
|
|
+ $GPG -d "${GPG_OPTS[@]}" "$passfile" || exit $?
|
|
+ else
|
|
+ local pass="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | head -n 1)"
|
|
+ [[ -n $pass ]] || exit 1
|
|
+ echo -e "\e[0;31;41m$pass\e[0m"
|
|
+ fi
|
|
else
|
|
local pass="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | head -n 1)"
|
|
[[ -n $pass ]] || exit 1
|
|
```
|