#!/bin/bash

trap '' SIGINT SIGQUIT SIGTERM
export repo="http://rep0.admin-ahead.com/sources/cpanel-plugins/dnssec-manager-cluster/"
export APPDIR="/usr/local/cpanel/whostmgr/cgi"
end='\033[0m'
red='\033[0;31m\033[1m'
green='\033[0;32m\033[1m'
yellow='\033[0;33m\033[1m'
blue='\033[0;34m\033[1m'
white='\033[0;37m\033[1m'

red() {
    echo -e "${red}$@${end}"
}

yellow() {
    echo -e "${yellow}$@${end}"
}

blue() {
    echo -e "${blue}$@${end}"
}

white() {
    echo -e "${white}$@${end}"
}

green() {
    echo -e "${green}$@${end}"
}


# user check
if [[ $UID -ne 0 ]]; then
    red "Cannot run without superuser privileges!"
fi

# cPanel check
check_cpanel=$(/usr/local/cpanel/cpanel -V 2>/dev/null)
if [[ -z $check_cpanel ]]; then
        red "\ncPanel not found on your server! \n"
        exit 255
fi

pressAnyKey() {
    read -n 1 -s -r -p "Press any key to continue..."
}

loop=0
while ( true ); do
clear
echo -e "${white}========================[[${end} ${blue}DNSSEC Manager Cluster  (cPanel)${end} ${white}]]========================${end}\n\n"
white "Available Options: \n\n1) Install Tracker Plugin\n2) Install Listener Plugin\n3) Check for Update\n4) Uninstall Plugin\n5) Exit from Installer\n"
read -p "Enter your choice: " choice
    case $choice in
        1)
        wget -qO tracker-installer.sh $repo/tracker-installer.sh >/dev/null >&1
        if [[ $? -ne 0 ]]; then
            red "Failed to download installer!\n\n"
            pressAnyKey
        else
            chmod +x tracker-installer.sh
            ./tracker-installer.sh
            green "\nInstallation completed successfully!"
            loop=1
        fi
        rm -f tracker-installer.sh
        ;;

        2)
        wget -qO listener-installer.sh $repo/listener-installer.sh >/dev/null >&1
        if [[ $? -ne 0 ]]; then
            red "Failed to download installer!\n\n"
            pressAnyKey
        else
            chmod +x listener-installer.sh
            ./listener-installer.sh
            green "\nInstallation completed successfully!"
            loop=1
        fi
        rm -f listener-installer.sh
        ;;

        3)
        green "Checking for Updates..."
        unset update_script
        # if [[ -d $APPDIR/dnssec-manager-cluster ]]; then
        #     update_script=tracker-updater.sh
        # elif [[ -d $APPDIR/dnssec-manager-listener ]]; then
        #     update_script=listener-updater.sh
        # fi

        if [[ -z "$update_script" ]]; then
            blue "Could not find the updater script on this server!\nPlease reach us directly for an upgrade.\n"
            pressAnyKey
        else
            wget -qO $update_script $repo/$update_script >/dev/null >&1
            if [[ $? -ne 0 ]]; then
                red "Failed to download updater!\n\n"
                pressAnyKey
            else
                chmod +x $update_script
                ./$update_script
                green "\nUpdate completed successfully!"
                loop=1
            fi
            rm -f $update_script
        fi
        rm -f 
        ;;

        4)
        green "\nPreparing uninstaller script..."
        uninstall_script=""
        if [[ -d $APPDIR/dnssec-manager-cluster ]]; then
            uninstall_script=tracker-uninstaller.sh
        elif [[ -d $APPDIR/dnssec-manager-listener ]]; then
            uninstall_script=listener-uninstaller.sh
        fi

        if [[ -z $uninstall_script ]]; then
            red "Could not find tracker or listener on this server!\n\n"
            pressAnyKey
        else
            wget -qO $uninstall_script $repo/$uninstall_script >/dev/null >&1
            if [[ $? -ne 0 ]]; then
                red "Failed to download uninstaller script!\n\n"
                pressAnyKey
            else
                chmod +x $uninstall_script
                ./$uninstall_script
                green "\nUnstallation completed successfully!"
                loop=1
            fi
            rm -f $uninstall_script
        fi
        ;;

        5)
        red "Exiting installer..."
        sleep 1
        exit
        ;;

        *)
        red "Invalid option"
    esac
    if [[ $loop -eq 1 ]]; then
        break
    fi
done
