1
0
Fork 0
env/.local/bin/share

115 lines
2.1 KiB
Bash
Executable File

#!/bin/zsh
if [ ! -x "$(which mc)" ]; then
echo "Please install the minio client first"
exit 1
fi
if [ ! -x "$(which python3)" ]; then
echo "WARNING: Please install python3 to use '-e none'"
else
urlescape() {
python3 -c 'import urllib.parse; import sys; print(urllib.parse.quote(sys.argv[1]))' "$1"
}
fi
SHASUM="sha256sum"
if [ ! -x "$(which $SHASUM)" ]; then
SHASUM="shasum"
fi
case "$SHARE_PROFILE" in
minio)
HOST_ALIAS=minio
BUCKET=share
BUCKET_URL=https://minio.makerforce.io/share
BUCKET_PUBLIC=pub
BUCKET_PUBLIC_URL=https://minio.makerforce.io/pub
;;
b|*)
HOST_ALIAS=b
BUCKET=serverwentdown
BUCKET_URL=https://serverwentdown.s3.us-west-000.backblazeb2.com
BUCKET_PUBLIC=serverwentdown-pub
BUCKET_PUBLIC_URL=https://serverwentdown-pub.s3.us-west-000.backblazeb2.com
;;
esac
FILES=()
NAMES=()
EXPIRES=()
read_fileopts() {
if [ ! -z "$FILE" ]; then
FILES+=("$FILE")
NAMES+=("$NAME")
EXPIRES+=("$EXPIRE")
FILE=""
NAME=""
EXPIRE="168h"
fi
}
read_fileopts
OPTIND=1
while getopts "hn:e:f:p" opt; do
case "$opt" in
h)
echo "NAME:"
echo " share - Shares files to $HOST_URL"
echo ""
echo "USAGE:"
echo " share -f FILE [-n NAME] [-e EXPIRES] [-f FILE ...]"
echo ""
echo "FLAGS:"
echo " -f FILE Share FILE"
echo " -n NAME Share at NAME instead of SHASUM/FILENAME"
echo " -e EXPIRES Link expiry (default: 168h)"
echo " -p Link never expires"
echo ""
exit 0
;;
n)
NAME="$OPTARG"
;;
e)
EXPIRE="$OPTARG"
;;
p)
EXPIRE="never"
;;
f)
read_fileopts
FILE="$OPTARG"
;;
esac
done
read_fileopts
for i in {1..$#FILES}; do
FILE="${FILES[$i]}"
NAME="${NAMES[$i]}"
EXPIRE="${EXPIRES[$i]}"
if [ -z "$NAME" ]; then
HASH=$($SHASUM $FILE | awk '{ print $1 }')
FILENAME="$(basename $FILE)"
NAME="$HASH/$FILENAME"
fi
TARGET="$HOST_ALIAS/$BUCKET/$NAME"
if [[ "$EXPIRE" == "never" ]]; then
TARGET="$HOST_ALIAS/$BUCKET_PUBLIC/$NAME"
fi
mc cp "$FILE" "$TARGET" >&2
if [[ "$EXPIRE" == "never" ]]; then
echo "$BUCKET_PUBLIC_URL/$(urlescape "$NAME")"
else
mc share download \
--expire="$EXPIRE" \
"$TARGET" \
| sed '3q;d' | cut -d ' ' -f 2
fi
done