56 lines
1.5 KiB
Bash
Executable File
56 lines
1.5 KiB
Bash
Executable File
#!/bin/sh
|
|
. $HOME/.bin/_config
|
|
|
|
PSSH="${USER}@${DOMAIN}"
|
|
LOC="p"
|
|
|
|
f="$1"
|
|
if [ "$1" = "-h" ]; then
|
|
printf "Usage:\n"
|
|
printf " paste < text.txt - read from stdin, generate filename\n"
|
|
printf " paste new.txt < file.txt - read from stdin with filename\n"
|
|
printf " paste file.txt - upload file as is\n"
|
|
return 0
|
|
fi
|
|
if [ -z "$1" ]; then
|
|
f="$(date +"%Y-%m-%d_%M-%S")-$(pwgen -1 4 -A -0).txt"
|
|
ssh ${PSSH} "printf \"%s\" \"$(cat)\" > ${RPATH}/${LOC}/$f"
|
|
|
|
elif [ -f "$f" ]; then
|
|
scp "$f" ${PSSH}:"${RPATH}/${LOC}/${f##*/}"
|
|
else
|
|
ssh ${PSSH} "printf \"%s\n\" \"$(cat)\" > ${RPATH}/${LOC}/${f##*/}"
|
|
|
|
fi
|
|
|
|
SELECTOR="9"
|
|
# if data comes from stdin
|
|
if [ ! -t 0 ]; then
|
|
# it's always 0
|
|
SELECTOR="0"
|
|
else
|
|
# if a parmeter is given and it's a file
|
|
if [ -f "$f" ]; then
|
|
# determine type and set selector
|
|
case "$(file --mime-type -b "$f")" in
|
|
image/*) SELECTOR="I";;
|
|
text/*) SELECTOR="0";;
|
|
message/*) SELECTOR="0";;
|
|
*/x-shellscript) SELECTOR="0";;
|
|
*/pgp-keys) SELECTOR="0";;
|
|
esac
|
|
else
|
|
# parameter given, but not a file, must be cat then...
|
|
SELECTOR=0
|
|
fi
|
|
fi
|
|
|
|
printf "https://${DOMAIN}/${SELECTOR}/${LOC}/${f##*/}\n"
|
|
printf "https://${DOMAIN}/${SELECTOR}/${LOC}/${f##*/}" | xclip
|
|
|
|
# write paste history (for convenience and rmpaste)
|
|
printf "$(date +"%Y-%m-%d %M:%S")|$f\n" \
|
|
| ssh -q $PSSH "cat - >> $RPATH/${LOC}/.pastehistory"
|
|
|
|
[ -z $DISPLAY ] || notify-send "$(xclip -o)"
|