From 3bb23e8e316452c40eaa0917c8f4be1a2f59ff38 Mon Sep 17 00:00:00 2001 From: Luiz <40257388+luizfelipevbll@users.noreply.github.com> Date: Wed, 29 Dec 2021 06:32:29 -0300 Subject: feat(transfer): allow encryption of uploads using GPG (#9983) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Marc Cornellà --- plugins/transfer/transfer.plugin.zsh | 136 +++++++++++++++++++++-------------- 1 file changed, 82 insertions(+), 54 deletions(-) (limited to 'plugins/transfer/transfer.plugin.zsh') diff --git a/plugins/transfer/transfer.plugin.zsh b/plugins/transfer/transfer.plugin.zsh index db744b0cd..b34e115ce 100644 --- a/plugins/transfer/transfer.plugin.zsh +++ b/plugins/transfer/transfer.plugin.zsh @@ -1,69 +1,97 @@ -# transfer.sh Easy file sharing from the command line -# transfer Plugin -# Usage Example : -# > transfer file.txt -# > transfer directory/ - - - # Author: # Remco Verhoef # https://gist.github.com/nl5887/a511f172d3fb3cd0e42d # Modified to use tar command instead of zip # -curl --version 2>&1 > /dev/null -if [ $? -ne 0 ]; then - echo "Could not find curl." +transfer() { + # check arguments + if [[ $# -eq 0 ]]; then + cat <> $tmpfile + else + curl --progress-bar --upload-file - "https://transfer.sh/$item" >> $tmpfile fi + else + basename=$(basename "$item" | sed -e 's/[^a-zA-Z0-9._-]/-/g') - # get temporarily filename, output is written to this file show progress can be showed - tmpfile=$( mktemp -t transferXXX ) - - # upload stdin or file - file=$1 + if [[ ! -e $item ]]; then + echo "File $item doesn't exist." + return 1 + fi - if tty -s; - then - basefile=$(basename "$file" | sed -e 's/[^a-zA-Z0-9._-]/-/g') + if [[ -d $item ]]; then + # tar directory and transfer + tarfile=$(mktemp -t transferXXX.tar.gz) + cd $(dirname $item) || { + echo "Error: Could not change to directory $(dirname $item)" + return 1 + } - if [ ! -e $file ]; - then - echo "File $file doesn't exists." - return 1 - fi - - if [ -d $file ]; - then - echo $file - # tar directory and transfer - tarfile=$( mktemp -t transferXXX.tar.gz ) - cd $(dirname $file) && tar -czf $tarfile $(basename $file) - curl --progress-bar --upload-file "$tarfile" "https://transfer.sh/$basefile.tar.gz" >> $tmpfile - rm -f $tarfile - else - # transfer file - curl --progress-bar --upload-file "$file" "https://transfer.sh/$basefile" >> $tmpfile - fi - else - # transfer pipe - curl --progress-bar --upload-file "-" "https://transfer.sh/$file" >> $tmpfile + tar -czf $tarfile $(basename $item) + if (( crypt )); then + gpg -cao - "$tarfile" | curl --progress-bar -T "-" "https://transfer.sh/$basename.tar.gz.gpg" >> $tmpfile + else + curl --progress-bar --upload-file "$tarfile" "https://transfer.sh/$basename.tar.gz" >> $tmpfile + fi + rm -f $tarfile + else + # transfer file + if (( crypt )); then + gpg -cao - "$item" | curl --progress-bar -T "-" "https://transfer.sh/$basename.gpg" >> $tmpfile + else + curl --progress-bar --upload-file "$item" "https://transfer.sh/$basename" >> $tmpfile + fi fi - - # cat output link - cat $tmpfile - # add newline - echo + fi + + # cat output link + cat $tmpfile + # add newline + echo - # cleanup - rm -f $tmpfile + # cleanup + rm -f $tmpfile } -- cgit v1.2.3-70-g09d2