raspiblitz/home.admin/config.scripts/internet.dns.sh

78 lines
2.9 KiB
Bash
Raw Normal View History

2019-04-09 23:32:14 +01:00
#!/bin/bash
# command info
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then
echo "config script to set a the DNS server that should be used"
2020-01-20 19:24:41 +01:00
echo "internet.dns.sh [DNS-SERVER|test]"
2019-04-09 23:32:14 +01:00
exit 1
fi
# 1. parameter
DNSSERVER="$1"
2020-01-20 19:24:41 +01:00
# 2. parameter
2020-01-20 19:29:22 +01:00
NODIALOG="$2"
2020-01-20 19:24:41 +01:00
2020-01-20 20:11:49 +01:00
# just if auto reboot is needed after dialog
autoreboot=0
2020-01-20 19:24:41 +01:00
# run test if DNS is working (assuming that internet is working)
if [ "${DNSSERVER}" = "test" ]; then
dnsworking=$(host w3c.org | grep -c "w3c.org has address")
# when no dialog just return result of test and exit
2020-01-20 19:33:24 +01:00
if [ "${NODIALOG}" = "nodialog" ] || [ ${dnsworking} -eq 1 ]; then
2020-01-20 19:24:41 +01:00
echo "dnsworking=${dnsworking}"
exit 0
fi
2020-01-20 19:33:24 +01:00
# dns is not working --> ask in dialog to set a preset DNS
whiptail --title ' DNS Test Failed ' --yes-button='Set DNS 1.1.1.1' --no-button='Ignore' --yesno "It looks like your DNS within local network is not working.\n
2021-08-27 03:59:21 -04:00
Do you want to set the fixed DNS 1.1.1.1 by Cloudflare (they claim they provide privacy) for your RaspiBlitz and reboot?\n
2020-01-20 19:29:22 +01:00
" 10 64
2020-01-20 19:33:24 +01:00
if [ $? -eq 0 ]; then
echo "# SETTING 1.1.1.1"
DNSSERVER="1.1.1.1"
2020-01-20 20:11:49 +01:00
autoreboot=1
2020-01-20 19:24:41 +01:00
else
2020-01-20 19:33:24 +01:00
echo "# Ignoring DNS-Test fail"
2020-01-20 19:24:41 +01:00
fi
2020-01-20 19:33:24 +01:00
2020-01-20 19:24:41 +01:00
fi
2019-04-09 23:32:14 +01:00
echo "The DNS server you want to set is: ${DNSSERVER}"
2020-01-20 19:24:41 +01:00
# checking parameter
2019-04-09 23:32:14 +01:00
if [[ $DNSSERVER =~ ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$ ]]; then
2020-01-20 19:33:24 +01:00
echo "# OK IPv6"
2019-04-09 23:32:14 +01:00
elif [[ $DNSSERVER =~ ^([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$ ]]; then
2020-01-20 19:33:24 +01:00
echo "# OK IPv4"
2019-04-09 23:32:14 +01:00
else
2020-01-20 19:33:24 +01:00
echo "error='not an IPv4 or IPv6 address'"
2019-04-09 23:32:14 +01:00
exit 1
fi
echo ""
dnsconfFile="/etc/dhcpcd.conf"
isUbuntu=$(cat /etc/os-release 2>/dev/null | grep -c 'Ubuntu')
if [ ${isUbuntu} -gt 0 ]; then
echo "# adapting dhcpd.conf path for ubuntu"
dnsconfFile="/etc/dhcp/dhcpd.conf"
fi
2019-04-09 23:32:14 +01:00
# setting DNS address
2020-01-20 19:33:24 +01:00
echo "# Setting DNS server in /etc/dhcpcd.conf ..."
2022-01-30 17:14:32 +01:00
sudo /home/admin/config.scripts/blitz.conf.sh set "static domain_name_servers" "${DNSSERVER}" /etc/dhcpcd.conf
2020-01-20 19:33:24 +01:00
echo "# OK"
2019-04-09 23:32:14 +01:00
echo ""
# make sure entry in raspiblitz.conf exists
/home/admin/config.scripts/blitz.conf.sh set dnsServer "${DNSSERVER}"
2020-01-20 19:33:24 +01:00
echo "# OK"
2019-04-09 23:32:14 +01:00
echo ""
2020-01-20 20:11:49 +01:00
echo "# DNS Server is set - needs reboot to get active"
if [ ${autoreboot} -eq 1 ]; then
sudo shutdown -r now
fi