DNSchoices=$(whiptail --separate-output --radiolist "Select Upstream DNS Provider. To use your own, select Custom."${r}${c}6\
"${DNSChooseOptions[@]}" 2>&1 >/dev/tty)||\
{echo"::: Cancel selected. Exiting";exit 1;}
case${DNSchoices} in
Google)
echo"::: Using Google DNS servers."
PIHOLE_DNS_1="8.8.8.8"
PIHOLE_DNS_2="8.8.4.4"
;;
OpenDNS)
echo"::: Using OpenDNS servers."
PIHOLE_DNS_1="208.67.222.222"
PIHOLE_DNS_2="208.67.220.220"
;;
Level3)
echo"::: Using Level3 servers."
PIHOLE_DNS_1="4.2.2.1"
PIHOLE_DNS_2="4.2.2.2"
;;
Norton)
echo"::: Using Norton ConnectSafe servers."
PIHOLE_DNS_1="199.85.126.10"
PIHOLE_DNS_2="199.85.127.10"
;;
Comodo)
echo"::: Using Comodo Secure servers."
PIHOLE_DNS_1="8.26.56.26"
PIHOLE_DNS_2="8.20.247.20"
;;
Custom)
until[[${DNSSettingsCorrect}= True ]];do
strInvalid="Invalid"
if[ ! ${PIHOLE_DNS_1}];then
if[ ! ${PIHOLE_DNS_2}];then
prePopulate=""
else
prePopulate=", ${PIHOLE_DNS_2}"
fi
elif[${PIHOLE_DNS_1}]&&[ ! ${PIHOLE_DNS_2}];then
prePopulate="${PIHOLE_DNS_1}"
elif[${PIHOLE_DNS_1}]&&[${PIHOLE_DNS_2}];then
prePopulate="${PIHOLE_DNS_1}, ${PIHOLE_DNS_2}"
fi
piholeDNS=$(whiptail --backtitle "Specify Upstream DNS Provider(s)" --inputbox "Enter your desired upstream DNS provider(s), seperated by a comma.\n\nFor example '8.8.8.8, 8.8.4.4'"${r}${c}"${prePopulate}" 3>&1 1>&2 2>&3)||\
{echo"::: Cancel selected. Exiting";exit 1;}
PIHOLE_DNS_1=$(echo"${piholeDNS}"| sed 's/[, \t]\+/,/g'| awk -F, '{print$1}')
PIHOLE_DNS_2=$(echo"${piholeDNS}"| sed 's/[, \t]\+/,/g'| awk -F, '{print$2}')
if ! valid_ip "${PIHOLE_DNS_1}"||[ ! "${PIHOLE_DNS_1}"];then
PIHOLE_DNS_1=${strInvalid}
piholeDNS=$(whiptail --backtitle "Specify Upstream DNS Provider(s)" --inputbox "Enter your desired upstream DNS provider(s), seperated by a comma.\n\nFor example '8.8.8.8, 8.8.4.4'"${r}${c}"${prePopulate}" 3>&1 1>&2 2>&3)||\
{echo"::: Cancel selected. Exiting";exit 1;}
PIHOLE_DNS_1=$(echo"${piholeDNS}"| sed 's/[, \t]\+/,/g'| awk -F, '{print$1}')
PIHOLE_DNS_2=$(echo"${piholeDNS}"| sed 's/[, \t]\+/,/g'| awk -F, '{print$2}')
if ! valid_ip "${PIHOLE_DNS_1}"||[ ! "${PIHOLE_DNS_1}"];then
PIHOLE_DNS_1=${strInvalid}
fi
if ! valid_ip "${PIHOLE_DNS_2}"&&["${PIHOLE_DNS_2}"];then
whiptail --msgbox --backtitle "Invalid IP" --title "Invalid IP""One or both entered IP addresses were invalid. Please try again.\n\n DNS Server 1: $PIHOLE_DNS_1\n DNS Server 2: ${PIHOLE_DNS_2}"${r}${c}
if[[${PIHOLE_DNS_1}=="${strInvalid}"]];then
PIHOLE_DNS_1=""
fi
if ! valid_ip "${PIHOLE_DNS_2}"&&["${PIHOLE_DNS_2}"];then
whiptail --msgbox --backtitle "Invalid IP" --title "Invalid IP""One or both entered IP addresses were invalid. Please try again.\n\n DNS Server 1: $PIHOLE_DNS_1\n DNS Server 2: ${PIHOLE_DNS_2}"${r}${c}
if[[${PIHOLE_DNS_1}=="${strInvalid}"]];then
PIHOLE_DNS_1=""
fi
if[[${PIHOLE_DNS_2}=="${strInvalid}"]];then
PIHOLE_DNS_2=""
fi
DNSSettingsCorrect=False
else
if(whiptail --backtitle "Specify Upstream DNS Provider(s)" --title "Upstream DNS Provider(s)" --yesno "Are these settings correct?\n DNS Server 1: $PIHOLE_DNS_1\n DNS Server 2: ${PIHOLE_DNS_2}"${r}${c});then
DNSSettingsCorrect=True
else
# If the settings are wrong, the loop continues
DNSSettingsCorrect=False
fi
DNSSettingsCorrect=False
else
if(whiptail --backtitle "Specify Upstream DNS Provider(s)" --title "Upstream DNS Provider(s)" --yesno "Are these settings correct?\n DNS Server 1: $PIHOLE_DNS_1\n DNS Server 2: ${PIHOLE_DNS_2}"${r}${c});then