change remote from SSH/SCP to SFTP
This commit is contained in:
parent
5148e66a94
commit
dcfbbf9ab5
6 changed files with 55 additions and 25 deletions
2
Makefile
2
Makefile
|
|
@ -3,7 +3,7 @@ var_exclude = ZPASS_.* XDG_.* REMOTE_.* DISPLAY CONFIGFILE TMPDIR
|
|||
fct_exclude = _tty_on
|
||||
|
||||
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/*
|
||||
lxsh -o zpass src/main.sh
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ unpack() {
|
|||
(
|
||||
set -e
|
||||
cd "$1"
|
||||
decrypt "$2" | tar -xf - 2>/dev/null
|
||||
decrypt "$2" | tar -xf -
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -28,13 +28,10 @@ pack()
|
|||
) || return $?
|
||||
if [ -n "$ZPASS_REMOTE_ADDR" ]
|
||||
then
|
||||
[ -z "$ZPASS_PATH" ] && datapath="~/.local/share/zpass"
|
||||
if [ -n "$ZPASS_SSH_ID" ]
|
||||
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
|
||||
ret=0
|
||||
sftp_upload "$1/$archive" "$datapath/$ZPASS_FILE$ZPASS_EXTENSION" || ret=$?
|
||||
rm -f "$1/$archive" 2>/dev/null
|
||||
return 0
|
||||
return $ret
|
||||
else
|
||||
mv -f "$1/$archive" "$file"
|
||||
fi
|
||||
|
|
@ -89,12 +86,11 @@ create() {
|
|||
return 1
|
||||
}
|
||||
[ -n "$ZPASS_REMOTE_ADDR" ] && {
|
||||
ret=0
|
||||
ssh "$ZPASS_REMOTE_ADDR" "mkdir -p '$datapath'"
|
||||
if [ -n "$ZPASS_SSH_ID" ]
|
||||
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
|
||||
sftp_upload "$file" "$datapath/$ZPASS_FILE$ZPASS_EXTENSION" || ret=$?
|
||||
rm -rf "$file" 2>/dev/null
|
||||
return $ret
|
||||
}
|
||||
fi
|
||||
return 0
|
||||
|
|
|
|||
11
src/crypt.sh
11
src/crypt.sh
|
|
@ -8,8 +8,9 @@ encrypt() {
|
|||
# $1 = key , $2 = keyfile to write
|
||||
decrypt_with_key()
|
||||
{
|
||||
gpg --pinentry-mode loopback --batch --passphrase "$1" -o - -d "$file" 2>/dev/null && ret=$? && [ -n "$2" ] && echo "$1" > "$2"
|
||||
return $ret
|
||||
gpg --pinentry-mode loopback --batch --passphrase "$1" -o - -d "$file" 2>/dev/null || return $?
|
||||
[ -n "$2" ] && echo "$1" > "$2"
|
||||
return 0
|
||||
}
|
||||
|
||||
# $1 = keyfile to write
|
||||
|
|
@ -18,11 +19,7 @@ decrypt()
|
|||
# get remote file
|
||||
[ -n "$ZPASS_REMOTE_ADDR" ] && {
|
||||
file="$TMPDIR/zpass_$(filehash)$ZPASS_EXTENSION"
|
||||
[ -z "$ZPASS_PATH" ] && datapath="~/.local/share/zpass"
|
||||
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
|
||||
sftp_download "$datapath/$ZPASS_FILE$ZPASS_EXTENSION" "$file" >/dev/null || return $?
|
||||
}
|
||||
cat "$file" >/dev/null 2>&1 || { echo "File doesn't exist. Use 'zpass create' to create the file" >&2 && return 1; } # no file
|
||||
|
||||
|
|
|
|||
23
src/file.sh
23
src/file.sh
|
|
@ -1,13 +1,26 @@
|
|||
#!/bin/sh
|
||||
|
||||
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()
|
||||
{
|
||||
for N
|
||||
do
|
||||
_cmd_ "rm '$datapath/$N$ZPASS_EXTENSION'" || exit $?
|
||||
done
|
||||
if [ -n "$ZPASS_REMOTE_ADDR" ] ; then
|
||||
echo "$cmd" | sftp_cmd -b- << EOF
|
||||
rm "$datapath/$N$ZPASS_EXTENSION"
|
||||
EOF
|
||||
else
|
||||
rm "$datapath/$N$ZPASS_EXTENSION"
|
||||
fi
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ case $arg in
|
|||
n|new) sanitize_paths "$@" && new "$@" ;;
|
||||
g|get) sanitize_paths "$@" && get "$@" ;;
|
||||
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 -- "$@" ;;
|
||||
m|mv) sanitize_paths "$@" && move "$@" ;;
|
||||
e|exec) archive_exec "$@" ;;
|
||||
|
|
|
|||
24
src/remote.sh
Normal file
24
src/remote.sh
Normal 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
|
||||
}
|
||||
Loading…
Reference in a new issue