<#
.SYNOPSIS
        Installs Knot Resolver (needs admin rights)
.DESCRIPTION
        This script installs Knot Resolver. Knot Resolver is a DNS resolver daemon. It needs admin rights.
.EXAMPLE
        PS> ./install-knot-resolver
.NOTES
	Author: Markus Fleschutz ยท License: CC0
.LINK
        https://github.com/fleschutz/PowerShell
#>

#Requires -RunAsAdministrator

try {
	$StopWatch = [system.diagnostics.stopwatch]::startNew()

	"๐Ÿ‘‰ Installing Knot Resolver... [step 1/4]"
	& sudo snap install knot-resolver-gael

	"๐Ÿ‘‰ Copying default configuration... [step 2/4]"
	& sudo cp "$PSScriptRoot/../Data/default.kresd.conf" /var/snap/knot-resolver-gael/current/kresd.conf

	"๐Ÿ‘‰ Let user configure... [step 3/4]"
	& sudo vi /var/snap/knot-resolver-gael/current/kresd.conf

	"๐Ÿ‘‰ Starting Knot Resolver... [step 4/4]"
	& sudo snap start knot-resolver-gael

	[int]$Elapsed = $StopWatch.Elapsed.TotalSeconds
	"โœ”๏ธ installed Knot Resolver in $Elapsed sec"
	exit 0 # success
} catch {
	"โš ๏ธ Error: $($Error[0]) ($($MyInvocation.MyCommand.Name):$($_.InvocationInfo.ScriptLineNumber))"
	exit 1
}