diff --git a/misc/technitiumdns-update.sh b/misc/technitiumdns-update.sh new file mode 100644 index 00000000..3f2b7c75 --- /dev/null +++ b/misc/technitiumdns-update.sh @@ -0,0 +1,76 @@ +#!/bin/sh +set -e +dotnetDir="/opt/dotnet" +dnsDir="/etc/dns" +dnsTar="/etc/dns/DnsServerPortable.tar.gz" +dnsUrl="https://download.technitium.com/dns/DnsServerPortable.tar.gz" + +mkdir -p $dnsDir +installLog="$dnsDir/install.log" +echo "" > $installLog + +echo "" +echo "===============================" +echo "Technitium DNS Server Update" +echo "===============================" + +if dotnet --list-runtimes 2> /dev/null | grep -q "Microsoft.NETCore.App 5.0."; +then + dotnetFound="yes" +else + dotnetFound="no" +fi + + if [ -d $dotnetDir ] + then + dotnetUpdate="yes" + echo "Updating .NET 5 Runtime..." + fi + + curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin -c 5.0 --runtime dotnet --no-path --install-dir $dotnetDir --verbose >> $installLog 2>&1 + + if [ ! -f "/usr/bin/dotnet" ] + then + ln -s $dotnetDir/dotnet /usr/bin >> $installLog 2>&1 + fi + + if dotnet --list-runtimes 2> /dev/null | grep -q "Microsoft.NETCore.App 5.0."; + then + if [ "$dotnetUpdate" = "yes" ] + then + echo ".NET 5 Runtime was updated successfully!" + fi + else + echo "Failed to update .NET 5 Runtime. Please try again." + exit 1 + fi + +if curl -o $dnsTar --fail $dnsUrl >> $installLog 2>&1 +then + if [ -d $dnsDir ] + then + echo "Updating Technitium DNS Server..." + fi + + tar -zxf $dnsTar -C $dnsDir >> $installLog 2>&1 + + if [ "$(ps --no-headers -o comm 1 | tr -d '\n')" = "systemd" ] + then + if [ -f "/etc/systemd/system/dns.service" ] + then + echo "Restarting systemd service..." + systemctl restart dns.service >> $installLog 2>&1 + fi + + echo "" + echo "Technitium DNS Server was updated successfully!" + else + echo "" + echo "Failed to update Technitium DNS Server: systemd was not detected." + exit 1 + fi +else + echo "" + echo "Failed to download Technitium DNS Server from: $dnsUrl" + exit 1 +fi