#!/bin/bash
##### Check if TVH is installed at all or v2 server #####
flag1=0
flag2=0
backupflag=0
FILE=/var/lib/tvheadend/config

while true; do
    read -p "Do you wish to take backup from your TVHeadend Configs? -- !! SELECT NO IF YOU WANT TO STARTOVER WITH FRESH PREPARED CONFIG !! " yn
    case $yn in
        [Yy]* ) backupflag=1; tar cfvz /home/tvheadend_customer_backup.tar.gz /home/hts/.hts/tvheadend; break;;
        [Nn]* ) backupflag=0; break;;
        * ) echo "Please answer yes or no.";;
    esac
done

##### REMOVE OLD / SAVE CONFIG #####
sudo cp /etc/default/tvheadend /etc/default/tvheadend.save
sudo cp /lib/systemd/system/tvheadend.service /etc/systemd/system/tvheadend.service.save
sudo cp -R /var/lib/tvheadend /var/lib/tvheadend.save
sudo apt-get purge libdvbcsa-dev libdvbcsa1 -y
sudo rm /var/lib/tvheadend -r
sudo mv /var/lib/tvheadend.save /var/lib/tvheadend
sudo chown -R hts.hts /var/lib/tvheadend
mv /etc/default/tvheadend.save /etc/default/tvheadend
mv /etc/systemd/system/tvheadend.service.save /etc/systemd/system/tvheadend.service
sudo systemctl daemon-reload
sudo systemctl enable tvheadend.service

##### libdvbcsa #####
git clone https://github.com/glenvt18/libdvbcsa /usr/src/build/libdvbcsa
apt-get install automake libtool -y
cd /usr/src/build/libdvbcsa
wget https://download.sat-downlink.com/tvheadend/libdvbcsa.patch
git config apply.whitespace nowarn
git apply libdvbcsa.patch
./bootstrap
./configure
make
make install

##### tvheadend #####
cd /usr/src/build/ && rm -rf tvheadend
git clone https://github.com/tvheadend/tvheadend /usr/src/build/tvheadend
cd /usr/src/build/tvheadend
rm src/input/mpegts/iptv/iptv_service.c
wget -O src/input/mpegts/iptv/iptv_service.c https://download.sat-downlink.com/tvheadend/iptv_service.c
wget https://download.sat-downlink.com/tvheadend/tvheadend43.patch
apt-get install gettext cmake liburiparser-dev libavahi-client-dev -y
git config apply.whitespace nowarn
git apply tvheadend43.patch
./configure --build=x86_64-linux-gnu --prefix=/opt/tvheadend --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-dvbcsa --disable-ffmpeg_static --disable-option-checking --disable-silent-rules --libexecdir=${prefix}/lib/tvheadend --disable-maintainer-mode --disable-dependency-tracking --disable-hdhomerun_static --disable-hdhomerun_client --enable-dbus_1 --enable-avahi --enable-uriparser --python=python3 --arch=x86_64 --jobs=9 --disable-hdhomerun_static --disable-ffmpeg_static --disable-dvbscan --disable-linuxdvb --disable-satip_server --disable-satip_client --disable-timeshift
make
make install
service tvheadend stop
cp /opt/tvheadend/bin/* /usr/bin/ -r
cp /opt/tvheadend/share/* /usr/share/ -r
cd /usr/local/lib
cp libdvbcsa.so.1 /usr/lib
service tvheadend start
echo "Please be patient for a moment. We are almost ready"
sleep 15
##### Restore Configs #####
if [[ $backupflag == 0 ]]; then
cd /var/lib/
rm -rf tvheadend && rm -rf *.tar.gz*
wget -O /var/lib/tvheadend/tvheadend_sat.tar.gz https://download.sat-downlink.com/tvheadend/tvheadend_sat.tar.gz
tar xfvz tvheadend_sat.tar.gz
newpw=$(cat /root/pw.txt)
/usr/src/create_tvh_user.sh
/usr/src/create_tvh_pass.sh $newpw
service tvheadend restart
fi
##### Cleanup #####
rm -rf /usr/src/build/libdvbcsa
rm -rf /usr/src/build/tvheadend
exit 0
