change remote from SSH/SCP to SFTP

This commit is contained in:
zawz 2021-04-16 16:50:58 +02:00
parent 5148e66a94
commit dcfbbf9ab5
6 changed files with 55 additions and 25 deletions

View file

@ -3,7 +3,7 @@ var_exclude = ZPASS_.* XDG_.* REMOTE_.* DISPLAY CONFIGFILE TMPDIR
fct_exclude = _tty_on fct_exclude = _tty_on
zpass: src/* zpass: src/*
lxsh -o zpass -m --minify-quotes --minify-var --exclude-var "$(var_exclude)" --minify-fct --exclude-fct "$(fct_exclude)" --remove-unused src/main.sh lxsh -o zpass -M --exclude-var "$(var_exclude)" --exclude-fct "$(fct_exclude)" src/main.sh
debug: src/* debug: src/*
lxsh -o zpass src/main.sh lxsh -o zpass src/main.sh

View file

@ -7,7 +7,7 @@ unpack() {
( (
set -e set -e
cd "$1" cd "$1"
decrypt "$2" | tar -xf - 2>/dev/null decrypt "$2" | tar -xf -
) )
} }
@ -28,13 +28,10 @@ pack()
) || return $? ) || return $?
if [ -n "$ZPASS_REMOTE_ADDR" ] if [ -n "$ZPASS_REMOTE_ADDR" ]
then then
[ -z "$ZPASS_PATH" ] && datapath="~/.local/share/zpass" ret=0
if [ -n "$ZPASS_SSH_ID" ] sftp_upload "$1/$archive" "$datapath/$ZPASS_FILE$ZPASS_EXTENSION" || ret=$?
then scp -i "$ZPASS_SSH_ID" "$1/$archive" "$ZPASS_REMOTE_ADDR:$datapath/$ZPASS_FILE$ZPASS_EXTENSION" >/dev/null || return $?
else scp "$1/$archive" "$ZPASS_REMOTE_ADDR:$datapath/$ZPASS_FILE$ZPASS_EXTENSION" >/dev/null || return $?
fi
rm -f "$1/$archive" 2>/dev/null rm -f "$1/$archive" 2>/dev/null
return 0 return $ret
else else
mv -f "$1/$archive" "$file" mv -f "$1/$archive" "$file"
fi fi
@ -89,12 +86,11 @@ create() {
return 1 return 1
} }
[ -n "$ZPASS_REMOTE_ADDR" ] && { [ -n "$ZPASS_REMOTE_ADDR" ] && {
ret=0
ssh "$ZPASS_REMOTE_ADDR" "mkdir -p '$datapath'" ssh "$ZPASS_REMOTE_ADDR" "mkdir -p '$datapath'"
if [ -n "$ZPASS_SSH_ID" ] sftp_upload "$file" "$datapath/$ZPASS_FILE$ZPASS_EXTENSION" || ret=$?
then scp -i "$ZPASS_SSH_ID" "$file" "$ZPASS_REMOTE_ADDR:$datapath/$ZPASS_FILE$ZPASS_EXTENSION" >/dev/null || return $?
else scp "$file" "$ZPASS_REMOTE_ADDR:$datapath/$ZPASS_FILE$ZPASS_EXTENSION" >/dev/null || return $?
fi
rm -rf "$file" 2>/dev/null rm -rf "$file" 2>/dev/null
return $ret
} }
fi fi
return 0 return 0

View file

@ -8,8 +8,9 @@ encrypt() {
# $1 = key , $2 = keyfile to write # $1 = key , $2 = keyfile to write
decrypt_with_key() decrypt_with_key()
{ {
gpg --pinentry-mode loopback --batch --passphrase "$1" -o - -d "$file" 2>/dev/null && ret=$? && [ -n "$2" ] && echo "$1" > "$2" gpg --pinentry-mode loopback --batch --passphrase "$1" -o - -d "$file" 2>/dev/null || return $?
return $ret [ -n "$2" ] && echo "$1" > "$2"
return 0
} }
# $1 = keyfile to write # $1 = keyfile to write
@ -18,11 +19,7 @@ decrypt()
# get remote file # get remote file
[ -n "$ZPASS_REMOTE_ADDR" ] && { [ -n "$ZPASS_REMOTE_ADDR" ] && {
file="$TMPDIR/zpass_$(filehash)$ZPASS_EXTENSION" file="$TMPDIR/zpass_$(filehash)$ZPASS_EXTENSION"
[ -z "$ZPASS_PATH" ] && datapath="~/.local/share/zpass" sftp_download "$datapath/$ZPASS_FILE$ZPASS_EXTENSION" "$file" >/dev/null || return $?
if [ -n "$ZPASS_SSH_ID" ]
then scp -i "$ZPASS_SSH_ID" "$ZPASS_REMOTE_ADDR:$datapath/$ZPASS_FILE$ZPASS_EXTENSION" "$file" >/dev/null || return $?
else scp "$ZPASS_REMOTE_ADDR:$datapath/$ZPASS_FILE$ZPASS_EXTENSION" "$file" >/dev/null || return $?
fi
} }
cat "$file" >/dev/null 2>&1 || { echo "File doesn't exist. Use 'zpass create' to create the file" >&2 && return 1; } # no file cat "$file" >/dev/null 2>&1 || { echo "File doesn't exist. Use 'zpass create' to create the file" >&2 && return 1; } # no file

View file

@ -1,13 +1,26 @@
#!/bin/sh #!/bin/sh
list_files() { list_files() {
_cmd_ "cd '$datapath' 2>/dev/null && find . -maxdepth 1 -type f -regex '.*$ZPASS_EXTENSION\$'" | sed "s/$(escape_chars "$ZPASS_EXTENSION")\$//g; s|.*/||g" if [ -n "$ZPASS_REMOTE_ADDR" ] ; then
echo "$cmd" | sftp_cmd -b- << EOF
cd "$datapath"
ls -1
EOF
else
(
cd "$datapath"
ls -1
)
fi | grep "$(escape_chars "$ZPASS_EXTENSION")$"
} }
remove_files() remove_files()
{ {
for N if [ -n "$ZPASS_REMOTE_ADDR" ] ; then
do echo "$cmd" | sftp_cmd -b- << EOF
_cmd_ "rm '$datapath/$N$ZPASS_EXTENSION'" || exit $? rm "$datapath/$N$ZPASS_EXTENSION"
done EOF
else
rm "$datapath/$N$ZPASS_EXTENSION"
fi
} }

View file

@ -27,7 +27,7 @@ case $arg in
n|new) sanitize_paths "$@" && new "$@" ;; n|new) sanitize_paths "$@" && new "$@" ;;
g|get) sanitize_paths "$@" && get "$@" ;; g|get) sanitize_paths "$@" && get "$@" ;;
x|copy) sanitize_paths "$1" && copy "$1" ;; x|copy) sanitize_paths "$1" && copy "$1" ;;
l|ls|list) sanitize_paths "$@" && __NOPACK=y archive_exec ls -Apw1 -- "$@" ;; l|ls|list) sanitize_paths "$@" && __NOPACK=y archive_exec ls -Ap1 -- "$@" ;;
r|rm) sanitize_paths "$@" && archive_exec rm -rf -- "$@" ;; r|rm) sanitize_paths "$@" && archive_exec rm -rf -- "$@" ;;
m|mv) sanitize_paths "$@" && move "$@" ;; m|mv) sanitize_paths "$@" && move "$@" ;;
e|exec) archive_exec "$@" ;; e|exec) archive_exec "$@" ;;

24
src/remote.sh Normal file
View file

@ -0,0 +1,24 @@
# $@ = args
sftp_cmd() {
[ -n "$ZPASS_REMOTE_ADDR" ] || return $?
if [ -n "$ZPASS_SSH_ID" ] ; then
sftp -i "$ZPASS_SSH_ID" "$@" "$ZPASS_REMOTE_ADDR"
else
sftp "$@" "$ZPASS_REMOTE_ADDR"
fi | grep -v "^sftp>"
return 0
}
# $1 = local file , $2 = remote file
sftp_upload() {
sftp_cmd -b- >/dev/null << E
put "$1" "$2"
E
}
# $1 = remote file , $2 = local file
sftp_download() {
sftp_cmd -b- >/dev/null << E
get "$1" "$2"
E
}