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
|
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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
11
src/crypt.sh
11
src/crypt.sh
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
23
src/file.sh
23
src/file.sh
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
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