mirror of
https://github.com/schlagmichdoch/PairDrop.git
synced 2025-04-23 00:06:18 -04:00
124 lines
3.5 KiB
Text
124 lines
3.5 KiB
Text
![]() |
#!/bin/bash
|
||
|
set -e
|
||
|
|
||
|
############################################################
|
||
|
# Help #
|
||
|
############################################################
|
||
|
help()
|
||
|
{
|
||
|
# Display Help
|
||
|
echo "Send files or text via PairDrop via commandline."
|
||
|
echo
|
||
|
echo -e "To send files:\t$(basename "$0") file"
|
||
|
echo -e "To send text:\t$(basename "$0") -t \"text\""
|
||
|
}
|
||
|
|
||
|
openPairDrop()
|
||
|
{
|
||
|
# openPairDrop
|
||
|
url=$domain
|
||
|
if [[ -n $params ]];then
|
||
|
url=$url"?"$params
|
||
|
fi
|
||
|
if [[ -n $hash ]];then
|
||
|
url=$url"#"$hash
|
||
|
fi
|
||
|
echo "PairDrop is opening in a browser."
|
||
|
|
||
|
if [[ $OS == "Windows" ]];then
|
||
|
start "$url"
|
||
|
elif [[ $OS == "Mac" ]];then
|
||
|
open "$url"
|
||
|
else
|
||
|
xdg-open "$url"
|
||
|
fi
|
||
|
exit
|
||
|
}
|
||
|
|
||
|
setOs()
|
||
|
{
|
||
|
unameOut=$(uname -a)
|
||
|
case "${unameOut}" in
|
||
|
*Microsoft*) OS="WSL";; #must be first since Windows subsystem for linux will have Linux in the name too
|
||
|
*microsoft*) OS="WSL2";; #WARNING: My v2 uses ubuntu 20.4 at the moment slightly different name may not always work
|
||
|
Linux*) OS="Linux";;
|
||
|
Darwin*) OS="Mac";;
|
||
|
CYGWIN*) OS="Cygwin";;
|
||
|
MINGW*) OS="Windows";;
|
||
|
*Msys) OS="Windows";;
|
||
|
*) OS="UNKNOWN:${unameOut}"
|
||
|
esac
|
||
|
}
|
||
|
|
||
|
############################################################
|
||
|
############################################################
|
||
|
# Main program #
|
||
|
############################################################
|
||
|
############################################################
|
||
|
domain="https://pairdrop.net/"
|
||
|
domain="https://192.168.2.90:8443/"
|
||
|
setOs
|
||
|
############################################################
|
||
|
# Process the input options. Add options as needed. #
|
||
|
############################################################
|
||
|
# Get the options
|
||
|
# open PairDrop if no options are given
|
||
|
[[ $# -eq 0 ]] && openPairDrop && exit
|
||
|
# display help and exit if first argument is "--help" or more than 2 arguments are given
|
||
|
[ "$1" = "--help" ] | [[ $# -gt 2 ]] && help && exit
|
||
|
|
||
|
while getopts "ht:*" option; do
|
||
|
case $option in
|
||
|
t) # Send text
|
||
|
params="base64text=hash"
|
||
|
hash=$(echo -n "${OPTARG}" | base64)
|
||
|
|
||
|
if [[ $(echo -n "$hash" | wc -m) -gt 32600 ]];then
|
||
|
params="base64text=paste"
|
||
|
if [[ $OS == "Windows" || $OS == "WSL" || $OS == "WSL2" ]];then
|
||
|
echo -n $hash | clip.exe
|
||
|
elif [[ $OS == "Mac" ]];then
|
||
|
echo -n $hash | pbcopy
|
||
|
else
|
||
|
(echo -n $hash | xclip) || echo "You need to install xclip for sending bigger files from cli"
|
||
|
fi
|
||
|
hash=
|
||
|
fi
|
||
|
|
||
|
openPairDrop
|
||
|
|
||
|
exit;;
|
||
|
h | ?) # display help and exit
|
||
|
help
|
||
|
exit;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
# Send file(s)
|
||
|
# display help and exit if 2 arguments are given or if file does not exist
|
||
|
[[ $# -eq 2 ]] || [[ ! -a $1 ]] && help && exit
|
||
|
params="base64zip=hash"
|
||
|
if [[ -d $1 ]]; then
|
||
|
zipPath="${1::-1}_pairdrop_temp.zip"
|
||
|
[[ -a "$zipPath" ]] && echo "Cannot overwrite $zipPath. Please remove first." && exit
|
||
|
zip -r -q -b /tmp/ "$zipPath" "$1"
|
||
|
hash=$(zip -q -b /tmp/ - "$zipPath" | base64 -w 0)
|
||
|
rm "$zipPath"
|
||
|
else
|
||
|
hash=$(zip -q -b /tmp/ - "$1" | base64 -w 0)
|
||
|
fi
|
||
|
|
||
|
if [[ $(echo -n "$hash" | wc -m) -gt 32600 ]];then
|
||
|
params="base64zip=paste"
|
||
|
if [[ $OS == "Windows" || $OS == "WSL" || $OS == "WSL2" ]];then
|
||
|
echo -n $hash | clip.exe
|
||
|
elif [[ $OS == "Mac" ]];then
|
||
|
echo -n $hash | pbcopy
|
||
|
else
|
||
|
(echo -n $hash | xclip) || echo "You need to install xclip for sending bigger files from cli"
|
||
|
fi
|
||
|
hash=
|
||
|
fi
|
||
|
|
||
|
openPairDrop
|