#!/bin/sh

dotnetDir="/opt/dotnet"

if [ -d "/etc/dns/config" ]
then
    dnsDir="/etc/dns"
else
    dnsDir="/opt/technitium/dns"
fi

dnsConfig="/etc/dns"
dnsLog="/var/log/technitium/dns"

serviceUser="dns-server"

echo ""
echo "================================="
echo "Technitium DNS Server Uninstaller"
echo "================================="

if [ -d $dnsDir ]
then
    echo ""
    echo "Uninstalling Technitium DNS Server..."

    rm /etc/resolv.conf >/dev/null 2>&1

    if [ -f "$dnsDir/resolv.conf.bak" ] || [ -L "$dnsDir/resolv.conf.bak" ]
    then
        cp -a $dnsDir/resolv.conf.bak /etc/resolv.conf >/dev/null 2>&1
    else
        printf "nameserver 8.8.8.8\nnameserver 1.1.1.1\n" > /etc/resolv.conf
    fi

    if [ "$(ps --no-headers -o comm 1 | tr -d '\n')" = "systemd" ] 
    then
        systemctl disable dns.service >/dev/null 2>&1
        systemctl stop dns.service >/dev/null 2>&1
        rm /etc/systemd/system/dns.service >/dev/null 2>&1

        if [ -f "/etc/NetworkManager/NetworkManager.conf" ]
        then
            currentVal=$(grep -F "dns=" /etc/NetworkManager/NetworkManager.conf)

            if [ "$currentVal" = "dns=none" ]
            then
                sed -i "s/$currentVal/dns=default/g" /etc/NetworkManager/NetworkManager.conf >/dev/null 2>&1
            fi
        fi

        systemctl enable systemd-resolved >/dev/null 2>&1
        systemctl start systemd-resolved >/dev/null 2>&1

        userdel -f $serviceUser >/dev/null 2>&1
    elif [ -x "/sbin/rc-service" ]
    then
        rc-service dns stop  >/dev/null 2>&1
        rc-update del dns  >/dev/null 2>&1
        rm /etc/init.d/dns >/dev/null 2>&1
        
        deluser $serviceUser >/dev/null 2>&1
    fi 2>/dev/null

    rm -rf $dnsDir >/dev/null 2>&1
fi

if [ -d $dotnetDir ]
then
    echo ""
    printf "Do you want to uninstall .NET Runtime (Y/n): "
    read -r answer0 < /dev/tty

    case "$answer0" in
        [Nn]* )
            echo ".NET Runtime was not uninstalled."
            ;;
        * )
            echo "Uninstalling .NET Runtime..."
            rm /usr/bin/dotnet >/dev/null 2>&1
            rm -rf $dotnetDir >/dev/null 2>&1
            ;;
    esac
fi

if [ -d "$dnsConfig" ]
then
    echo ""
    printf "Do you want to delete the '$dnsConfig' folder which contains all of the DNS server config files? (y/N): "
    read -r answer1 < /dev/tty

    case "$answer1" in
        [Yy]* )
            rm -rf "$dnsConfig" >/dev/null 2>&1
            echo "The '$dnsConfig' config folder was deleted successfully."
            ;;
        * )
            chown -R root:root "$dnsConfig" >/dev/null 2>&1
            echo "The '$dnsConfig' config folder was not deleted and it will be reused if you install the DNS server again."
            ;;
    esac
fi

if [ -d "$dnsLog" ]
then
    echo ""
    printf "Do you want to delete the '$dnsLog' folder which contains all of the DNS server log files? (y/N): "
    read -r answer2 < /dev/tty

    case "$answer2" in
        [Yy]* )
            rm -rf "$dnsLog" >/dev/null 2>&1
            echo "The '$dnsLog' logs folder was deleted successfully."
            ;;
        * )
            chown -R root:root "$dnsLog" >/dev/null 2>&1
            echo "The '$dnsLog' logs folder was not deleted."
            ;;
    esac
fi

echo ""
echo "Thank you for using Technitium DNS Server!"
echo ""
