Add src/simple-send.sh
This commit is contained in:
parent
10b7652319
commit
ef5bc53093
|
@ -0,0 +1,70 @@
|
||||||
|
# Constants for ffsend binary and server with environment variable overrides
|
||||||
|
FFSEND_URL="${FFSEND_URL:-https://github.com/timvisee/ffsend/releases/download/v0.2.76/ffsend-v0.2.76-linux-x64}"
|
||||||
|
FFSEND_DIR="${FFSEND_DIR:-$HOME/.local/bin}"
|
||||||
|
FFSEND_PATH="${FFSEND_PATH:-$FFSEND_DIR/ffsend}"
|
||||||
|
DEFAULT_FFSEND_HOST="${DEFAULT_FFSEND_HOST:-https://send.aenow.fun}"
|
||||||
|
|
||||||
|
# Private: Ensure ffsend is installed only when needed
|
||||||
|
_install_ffsend() {
|
||||||
|
# Check if ffsend is already installed
|
||||||
|
if [ -f "$FFSEND_PATH" ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "ffsend not found, checking if the download URL is valid..."
|
||||||
|
|
||||||
|
# Check if the URL is valid by making a HEAD request
|
||||||
|
if curl -Isf "$FFSEND_URL" > /dev/null; then
|
||||||
|
echo "URL is valid, downloading ffsend..."
|
||||||
|
mkdir -p "$FFSEND_DIR"
|
||||||
|
curl -L "$FFSEND_URL" -o "$FFSEND_PATH"
|
||||||
|
chmod +x "$FFSEND_PATH"
|
||||||
|
else
|
||||||
|
echo "Error: The ffsend download URL is not valid. Please check the URL: $FFSEND_URL"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Private: Generate random password, not accessible from the CLI
|
||||||
|
_generate_password() {
|
||||||
|
openssl rand -base64 12
|
||||||
|
}
|
||||||
|
|
||||||
|
# Private: Upload file or piped data function
|
||||||
|
_ffsend_upload() {
|
||||||
|
local file=$1
|
||||||
|
local password=$(_generate_password)
|
||||||
|
|
||||||
|
# Use the custom host if FFSEND_CUSTOM_HOST is set, otherwise use the default host
|
||||||
|
local ffsend_host="${FFSEND_CUSTOM_HOST:-$DEFAULT_FFSEND_HOST}"
|
||||||
|
|
||||||
|
# Upload the file or data with 7-day expiry and the generated password
|
||||||
|
$FFSEND_PATH upload --host "$ffsend_host" --expiry-time 7d --password "$password" "$file"
|
||||||
|
|
||||||
|
# Print the password and the download URL
|
||||||
|
echo "Password: $password"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Public: Main send function to wrap the upload, accepts files and piped data
|
||||||
|
send() {
|
||||||
|
# Ensure ffsend is installed before proceeding
|
||||||
|
_install_ffsend
|
||||||
|
|
||||||
|
if [ -p /dev/stdin ]; then
|
||||||
|
# Handle piped input
|
||||||
|
local temp_file=$(mktemp)
|
||||||
|
cat > "$temp_file"
|
||||||
|
_ffsend_upload "$temp_file"
|
||||||
|
rm "$temp_file"
|
||||||
|
elif [ -f "$1" ]; then
|
||||||
|
# Handle file input as an argument
|
||||||
|
_ffsend_upload "$1"
|
||||||
|
else
|
||||||
|
# Print usage if no input or argument is provided
|
||||||
|
echo "Usage: send <file> or echo 'data' | send"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# To override any of the defaults, set the corresponding environment variables:
|
||||||
|
# FFSEND_URL, FFSEND_DIR, FFSEND_PATH, DEFAULT_FFSEND_HOST
|
Loading…
Reference in New Issue