#!/bin/bash

host=<>
name=transmission-openvpn
log=transmission-openvpn.log
echo "Stopping ${name}"
/usr/bin/docker stop ${name}
echo "Removing ${name}"
/usr/bin/docker rm ${name}

# backup config, resume, and torrents
date=$(date +%Y_%m_%d)
work_dir=/dl_2/transmission-home

/usr/bin/zip -r \
    ${work_dir}/transmission-3.00_${date}.zip \
    ${work_dir}/*.json \
    ${work_dir}/dht.dat \
    ${work_dir}/blocklists/ \
    ${work_dir}/resume/ \
    ${work_dir}/torrents/

echo "Finished archiving torrent files."
echo "Starting rsync to host ${host}..."

rsync -avhP ${work_dir}/*.zip user@host:/opt/user/config/

echo "Restarting ${name}"

docker run --cap-add=NET_ADMIN -d \
    --name=transmission-openvpn \
    --restart=always \
    -e PUID=1000 \
    -e PGID=1000 \
    -v /dl_2/:/data \
    -v /etc/localtime:/etc/localtime:ro \
    -e CREATE_TUN_DEVICE=true \
    -e OPENVPN_PROVIDER=<> \
    -e OPENVPN_CONFIG=<> \
    -e OPENVPN_USERNAME=<> \
    -e OPENVPN_PASSWORD=<> \
    -e WEBPROXY_ENABLED=false \
    -e LOCAL_NETWORK=192.168.0.0/16 \
    --log-driver json-file \
    --log-opt max-size=10m \
    -p 9092:9091 \
    haugene/transmission-openvpn

info=$(docker ps | grep transmission |awk '{ print $1 "\t" $2 }')
ver=$(docker exec -it transmission-openvpn bash -c "cat /etc/os-release")
tr_ver=$(docker exec -it transmission-openvpn bash -c "transmission-daemon --version")

echo ""
echo "Inspecting ${name}; saving to ${log}"
# # rotate the log file 
#mv -v /dl_2/transmission-home/transmission.log /dl_2/transmission-home/transmission.log.$(date +%Y%m%d)
mv ${log} ${log}-$(date +%Y%m%d)
docker container inspect transmission-openvpn >> ${log}

echo ""
echo "Pausing (1/3)..."
sleep 5

echo ""
echo "Checking container info..."
echo "${info}"

echo ""
echo "Pausing again (2/3)..."
sleep 5

echo ""
echo "Getting container OS version info..."
echo "${ver}"

echo ""
echo "Getting container transmission version info..."
echo -e "${tr_ver}"

echo ""
echo "Pausing one last time (3/3)..."
sleep 6

echo ""
#echo "Installing dig (bind-tools) via APK... (sometimes this can take a while)"
echo "Checking for bind-tools..."
echo ""

#docker exec -it ${name} bash -c "apk add bind-tools"
docker exec -it ${name} bash -c "/usr/bin/dig -v"

#docker exec -it transmission-openvpn bash -c "/usr/bin/dig +short myip.opendns.com @resolver1.opendns.com"
docker_ip=$(docker exec -it transmission-openvpn bash -c "/usr/bin/dig +short myip.opendns.com @resolver1.opendns.com")
#ip=$(dig +short myip.opendns.com @resolver1.opendns.com)
ip=$(curl -s http://ifconfig.me)

echo ""
echo "This host ${HOSTNAME} public IP address is:  ${ip}"
echo "The docker container ${name} public IP address is:  ${docker_ip}"

if [ "$ip" = "$docker_ip" ] ; then
    echo -e "\n"
    echo " >>> Warning. Public IP address in ${name} container is the same as our WAN public IP address. Warning. <<<"
    echo -e "\nExiting. Please STOP the container and FIX.\n"
    exit 1
    else 
        echo ""
        echo "We appear to be operating safely, with a proper VPN tunnel for torrents. Carry on."
        echo ""
fi

port=$(docker port transmission-openvpn)
echo "${name} Transmission RPC/web TCP port information: ${port}"
echo ""

exit 0