88 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/env bash
 | 
						|
 | 
						|
# share.sh - Shares a file with a link by uploading to a "Gokapi" backend
 | 
						|
# Depends on: curl, jq, libsecret
 | 
						|
 | 
						|
set -e
 | 
						|
 | 
						|
URL="https://${SHARE_DOMAIN}/api/files/add"
 | 
						|
 | 
						|
usage() {
 | 
						|
    printf "share - Share a file
 | 
						|
 | 
						|
Usage: share [options] FILE
 | 
						|
 | 
						|
Options:
 | 
						|
    -f <name>\tName of the file that will be uploaded
 | 
						|
    -p <passwd>\tPassword
 | 
						|
    -d <number>\tAllowed nubmer of downloads
 | 
						|
    -e <expiry>\tExpiry in days\n"
 | 
						|
}
 | 
						|
 | 
						|
[ $# -eq 0 ] && usage && exit 1
 | 
						|
 | 
						|
options=$(getopt "hp:d:e:f:" "$@")
 | 
						|
eval set -- "$options"
 | 
						|
 | 
						|
while true; do
 | 
						|
    case $1 in
 | 
						|
        -p)
 | 
						|
            shift
 | 
						|
            PASSWORD="$1"
 | 
						|
            ;;
 | 
						|
        -d)
 | 
						|
            shift
 | 
						|
            ALLOWED_DOWNLOADS="$1"
 | 
						|
            ;;
 | 
						|
        -e)
 | 
						|
            shift
 | 
						|
            EXPIRY_DAYS="$1"
 | 
						|
            ;;
 | 
						|
        -f)
 | 
						|
            shift
 | 
						|
            FILENAME="$1"
 | 
						|
            ;;
 | 
						|
        -h)
 | 
						|
            usage
 | 
						|
            exit 0
 | 
						|
            ;;
 | 
						|
        --)
 | 
						|
            shift
 | 
						|
            break;;
 | 
						|
    esac
 | 
						|
    shift
 | 
						|
done
 | 
						|
 | 
						|
[ $# -eq 0 ] && usage && exit 1 || FILE=$1
 | 
						|
 | 
						|
if [ ! -f "$FILE" ] && [ $FILE != "-" ]; then
 | 
						|
    echo "File ${FILE} not found."
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
APIKEY=$(secret-tool lookup share apikey)
 | 
						|
if [ ! "$APIKEY" ]; then
 | 
						|
    echo "Please enter your API key for Gokapi"
 | 
						|
    secret-tool store --label "API key for share.sh" share apikey
 | 
						|
    APIKEY=$(secret-tool lookup share apikey)
 | 
						|
fi
 | 
						|
 | 
						|
read RESULT ID URL HOTLINKURL HOTLINKID < <(echo $(curl -# -X POST \
 | 
						|
    --fail \
 | 
						|
    -F "file=@${FILE};filename=${FILENAME:-$FILE}" \
 | 
						|
    -F "password=${PASSWORD}" \
 | 
						|
    -F "allowedDownloads=${ALLOWED_DOWNLOADS:-0}" \
 | 
						|
    -F "expiryDays=${EXPIRY_DAYS}" \
 | 
						|
    -H "accept: application/json" \
 | 
						|
    -H "apikey: ${APIKEY}" \
 | 
						|
    -H "Content-Type: multipart/form-data" \
 | 
						|
    "${URL}" | jq -r '.Result, .FileInfo.Id, .Url, .HotlinkUrl, .FileInfo.HotlinkId'))
 | 
						|
 | 
						|
if [ $RESULT != "OK" ]; then
 | 
						|
    echo "An error occured when trying to upload the file."
 | 
						|
    echo "Result was: $RESULT"
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
echo "Uploaded url: ${URL}${ID}"
 | 
						|
[ ! "$HOTLINKID" ] || echo "Hotlink: ${HOTLINKURL}${HOTLINKID}"
 |