dotfiles/.local/bin/torshare

62 lines
2.1 KiB
Bash
Executable File

#! /bin/sh -
[ ! $# = 1 ] && { echo "Usage: torshare REGULAR_FILE"; exit 1; }
target_file="$1"
command -v curl >/dev/null 2>&1 || { echo "Need curl"; exit 2; }
command -v instant_tor >/dev/null 2>&1 || { echo "Need instant_tor"; exit 2; }
command -v pub >/dev/null 2>&1 || { echo "Need pub"; exit 2; }
command -v qr >/dev/null 2>&1 || { echo "Need qr"; exit 2; }
command -v python3 >/dev/null 2>&1 || { echo "Need python3"; exit 2; }
command -v readlink >/dev/null 2>&1 || { echo "Need readlink"; exit 2; }
urlencode () {
str="$*"
encoded=
i=0
while [ "$i" -lt "${#str}" ]; do
c="$(printf '%s' "$str" | head -c "$((i + 1))" | tail -c 1; printf '.')"
c="${c%.}"
case "$c" in
[-_.~a-zA-Z0-9] ) x="$c" ;;
* ) x="$(printf '%%%02x' "'$c")" ;;
esac
encoded="$encoded$x"
i="$((i+1))"
done
printf %s "$encoded"
}
tor_host="$(instant_tor --daemonize)" || { echo "Failed to start tor proxy"; exit 3; }
ln -sf "$(readlink -f -- "$target_file")" "/tmp/.tmptor/html/$(basename -- "$target_file")"
link="$(pub << GET_FILE_VIA_TOR
#! /bin/sh -
if [ ! -f ./instant_tor ] || ! command -v instant_tor > /dev/null 2>&1; then
wget -qO instant_tor https://timo.one/get_instant_tor/instant_tor || {
curl -sfkSL -o instant_tor https://timo.one/get_instant_tor/instant_tor || {
echo "Failed to download instant_tor"; exit 1;
}
}
fi
if [ ! -f ./instant_tor ]; then
if ! command -v instant_tor > /dev/null 2>&1; then
echo "instant_tor couldn't be downloaded"
exit 2
fi
ln -sf "$(command -v instant_tor)" .
fi
chmod +x ./instant_tor
./instant_tor --daemonize || { printf '\033[42;30m%s\033[m\n' "Some error occured while starting tor proxy, trying to download anyways"; }
curl -O --proxy socks5h://127.0.0.1:9050 "$tor_host/$(urlencode "$target_file")" || { echo "Some error occured downloading file"; exit 3; }
echo "Successfully downloaded $target_file, size \$(wc -c < ./$(squote_escape "$target_file")) bytes."
GET_FILE_VIA_TOR
)"
echo "Run at your own risk."
printf '\033[31m%s\033[m\n' "curl $link|sh"
printf %s "$link" | qr
echo "Serving file via: $tor_host/$(urlencode "$target_file")"
python3 -m http.server --bind 127.0.0.1 -d "/tmp/.tmptor/html/" 1336