93 lines
1.7 KiB
Bash
Executable File
93 lines
1.7 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
|
|
|
|
HOST_URL=https://huge.makerforce.io
|
|
HOST_ALIAS=h
|
|
BUCKET=share
|
|
|
|
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:" 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 at /$BUCKET/shasum/filename"
|
|
echo " -n NAME Share FILE at /$BUCKET/NAME"
|
|
echo " -e EXPIRES Set link expiry (NN[h|m|s] or 'none') (default: 168h)"
|
|
echo ""
|
|
exit 0
|
|
;;
|
|
n)
|
|
NAME="$OPTARG"
|
|
;;
|
|
e)
|
|
EXPIRE="$OPTARG"
|
|
;;
|
|
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" == "none" ]]; then
|
|
TARGET="$HOST_ALIAS/$BUCKET/s/$NAME"
|
|
fi
|
|
|
|
mc cp "$FILE" "$TARGET" >&2
|
|
if [[ "$EXPIRE" == "none" ]]; then
|
|
echo "$HOST_URL/$BUCKET/s/$(urlescape "$NAME")"
|
|
else
|
|
mc share download \
|
|
--expire="$EXPIRE" \
|
|
"$TARGET" \
|
|
| sed '3q;d' | cut -d ' ' -f 2
|
|
fi
|
|
done
|
|
|