shtools/zpass/src/util.sh
2020-11-06 18:23:57 +01:00

70 lines
1.3 KiB
Bash

#!/bin/sh
error(){
ret=$1 && shift 1 && echo "$*" >&2 && exit $ret
}
randalnum() {
tr -cd '[a-zA-Z]' < /dev/urandom | head -c $1
}
# $* = input
escape_chars() {
echo "$*" | sed 's|\.|\\\.|g;s|/|\\/|g'
}
# $@ = paths
sanitize_paths()
{
for N
do
echo "$N" | grep "^/" && echo "Path cannot start with /" >&2 && return 1
echo "$N" | grep -w ".." && echo "Path cannot contain .." >&2 && return 1
done
return 0
}
# $1 = file
getpath() {
if [ -n "$ZPASS_REMOTE_ADDR" ]
then echo "$ZPASS_REMOTE_PORT:$ZPASS_REMOTE_ADDR:$file"
else readlink -f "$file"
fi
}
# $1 = file
filehash(){
getpath "$file" | md5sum | cut -d' ' -f1
}
keyfile(){
printf "%s.key" "$(filehash)"
}
_cmd_() {
if [ -n "$ZPASS_REMOTE_ADDR" ]
then
if [ -n "$ZPASS_SSH_ID" ]
then
ssh -i "$ZPASS_SSH_ID" "$ZPASS_REMOTE_ADDR" "$@" || return $?
else
ssh "$ZPASS_REMOTE_ADDR" "$@" || return $?
fi
else
sh -c "$*"
fi
}
# $1 = delay in sec
clipboard_clear() {
if [ -n "$1" ]
then
for I in $(screen -ls | grep "$fname"_clipboard | awk '{print $1}')
do
screen -S "$I" -X stuff "^C"
done
screen -dmS "$fname"_clipboard sh -c "sleep $1 ; xclip -selection clipboard < /dev/null ; sleep 1" # put empty string into clipboard
else
xclip -selection clipboard < /dev/null
fi
}