#!/bin/bash
#
# [Quick Box :: Install Jackett package]
#
# GITHUB REPOS
# GitHub _ packages  :   https://github.com/QuickBox/quickbox_packages
# LOCAL REPOS
# Local _ packages   :   /etc/QuickBox/packages
# Author             :   QuickBox.IO | d2dyno
# URL                :   https://quickbox.io
#
# QuickBox Copyright (C) 2017 QuickBox.io
# Licensed under GNU General Public License v3.0 GPL-3 (in short)
#
#   You may copy, distribute and modify the software as long as you track
#   changes/dates in source files. Any modifications to our software
#   including (via compiler) GPL-licensed code must also be made available
#   under the GPL along with build & install instructions.

OUTTO=/srv/rutorrent/home/db/output.log
username=$(cat /srv/rutorrent/home/db/master.txt)
local_setup=/etc/QuickBox/setup/
distro=$(lsb_release -is)
#jackettver=$(wget -q https://github.com/Jackett/Jackett/releases/latest -O - | grep -E \/tag\/ | grep -v repository | awk -F "[><]" '{print $3}' | sed ':a;N;$!ba;s/\n//g')
jackettver=$(curl -i -s https://github.com/Jackett/Jackett/releases/latest | grep -Eo "<a\ href=\".*>" | grep -v repository | grep -E \/tag\/ | grep -Eo "v[0-9.]+" | tail -n1)
version=$(printf $jackettver)
echo >>"${OUTTO}" 2>&1
echo "Installing Jackett ... " >>"${OUTTO}" 2>&1

#if [[ ! -f /etc/apt/sources.list.d/mono-official-stable.list ]]; then
#  if [[ $distro == "Ubuntu" ]]; then
#    apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF >/dev/null 2>&1
#  elif [[ $distro == "Debian" ]]; then
#    exit
#  fi
#  echo "deb https://download.mono-project.com/repo/ubuntu stable-xenial main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list >/dev/null 2>&1
#fi

apt-get update -y >/dev/null 2>&1
apt-get install -y apt-transport-https >/dev/null 2>&1

if [[ ! -d /opt/${username} ]]; then
  mkdir -p /opt/${username}
fi
cd /opt/${username}
wget -q https://github.com/Jackett/Jackett/releases/download/${jackettver}/Jackett.Binaries.LinuxAMDx64.tar.gz
tar -xzf Jackett.Binaries.LinuxAMDx64.tar.gz >/dev/null 2>&1
rm -f Jackett.Binaries.LinuxAMDx64.tar.gz
chown ${username}.${username} -R Jackett
touch /install/.jackett.lock

cat >/etc/systemd/system/jackett@${username}.service <<JCKSYS
[Unit]
Description=Jackett Daemon
After=network.target

[Service]
Environment="TMPDIR=/tmp/${username}/Jackett"
ExecStartPre=-/bin/mkdir -p /tmp/${username}/Jackett
SyslogIdentifier=jackett
Restart=always
RestartSec=5
Type=simple
User=${username}
Group=${username}
WorkingDirectory=/opt/${username}/Jackett
ExecStart=/opt/${username}/Jackett/jackett --NoRestart
TimeoutStopSec=20

[Install]
WantedBy=multi-user.target
JCKSYS

systemctl enable jackett@${username} >/dev/null 2>&1
systemctl start jackett@${username}
sleep 5
systemctl stop jackett@${username}
# Make sure .config/Jackett exists and has correct permissions.
mkdir -p /home/${username}/.config/Jackett
chmod 700 /home/${username}/.config/Jackett
\cp ${local_setup}configs/jackett/ServerConfig.json /home/${username}/.config/Jackett/ServerConfig.json

chown ${username}.${username} -R /home/${username}/.config/Jackett
sed -i "s/\"AllowExternal.*/\"AllowExternal\": false,/g" /home/${username}/.config/Jackett/ServerConfig.json
sed -i "s/\"BasePathOverride.*/\"BasePathOverride\": \"\/jackett\"/g" /home/${username}/.config/Jackett/ServerConfig.json
# Disable native auto-update, since we have a command for that.
sed -i "s/\"UpdateDisabled.*/\"UpdateDisabled\": true,/g" /home/${username}/.config/Jackett/ServerConfig.json

cat >/etc/apache2/sites-enabled/jackett.conf <<EOF
#ProxyPreserveHost On
#RequestHeader set X-Forwarded-Proto "https"
<Location /jackett>
ProxyPass http://localhost:9117/jackett
ProxyPassReverse http://localhost:9117/jackett
Require all granted
#AuthType Digest
#AuthName "rutorrent"
#AuthUserFile '/etc/htpasswd'
#Require user ${username}
</Location>
EOF

# Write public IP to ProxyPass if user will be using Jackett remotely.
# Ask user what they want to do.
#echo "Should Jackett be setup for internal use only (localhost) or external use (IP address)?"
# Input should be either "int" for internal use (do nothing) or "ext" for external use (change ProxyPass).
#read -p 'int/ext: ' ipvar
#if [ "$ipvar" = "ext" ]; then
#  ip_ext=$(wget -qO- http://ipecho.net/plain)
#  ip_int="localhost"
#  sed -i "s~ProxyPass http://$ip_int:9117/jackett~ProxyPass http://$ip_ext:9117/jackett~" /etc/apache2/sites-enabled/jackett.conf
#  sed -i "s/\"AllowExternal.*/\"AllowExternal\": true,/g" /home/${username}/.config/Jackett/ServerConfig.json
#fi

chown www-data: /etc/apache2/sites-enabled/jackett.conf
service apache2 reload
service jackett@${username} start

echo >>"${OUTTO}" 2>&1
echo >>"${OUTTO}" 2>&1
echo "Jackett Install Complete!" >>"${OUTTO}" 2>&1

echo "Close this dialog box to refresh your browser" >>"${OUTTO}" 2>&1
