89 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			89 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								#!/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}"
							 |