From 9af26cbaacbe55fd4b058e5f286e4f051610ba46 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Wed, 28 Dec 2016 02:14:47 +0000 Subject: [PATCH 01/12] Major simplification of webpage.sh --- advanced/Scripts/webpage.sh | 225 +++++++++++++++++++++--------------- 1 file changed, 129 insertions(+), 96 deletions(-) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index d87def14..ddc8859e 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -11,6 +11,10 @@ args=("$@") +readonly setupVars="/etc/pihole/setupVars.conf" +readonly dnsmasqconfig="/etc/dnsmasq.d/01-pihole.conf" +readonly dhcpconfig="/etc/dnsmasq.d/02-pihole-dhcp.conf" + helpFunc() { cat << EOM ::: Set admin options for the web interface of pihole @@ -27,12 +31,34 @@ EOM exit 0 } +add_setting() { + echo "${1}=${2}" >> "${setupVars}" +} + +delete_setting() { + sed -i "/${1}/d" "${setupVars}" +} + +change_setting() { + delete_setting "${1}" + add_setting "${1}" "${2}" +} + +add_dnsmasq_setting() { + if [[ "${2}" != "" ]]; then + echo "${1}=${2}" >> "${dnsmasqconfig}" + else + echo "${1}" >> "${dnsmasqconfig}" + fi +} + +delete_dnsmasq_setting() { + sed -i "/${1}/d" "${dnsmasqconfig}" +} + SetTemperatureUnit(){ - # Remove setting from file (create backup setupVars.conf.bak) - sed -i.bak '/TEMPERATUREUNIT/d' /etc/pihole/setupVars.conf - # Save setting to file - echo "TEMPERATUREUNIT=${unit}" >> /etc/pihole/setupVars.conf + change_setting "TEMPERATUREUNIT" "${unit}" } @@ -50,66 +76,70 @@ SetWebPassword(){ exit 1 fi - # Remove password from file (create backup setupVars.conf.bak) - sed -i.bak '/WEBPASSWORD/d' /etc/pihole/setupVars.conf # Set password only if there is one to be set if (( ${#args[2]} > 0 )) ; then # Compute password hash twice to avoid rainbow table vulnerability hash=$(echo -n ${args[2]} | sha256sum | sed 's/\s.*$//') hash=$(echo -n ${hash} | sha256sum | sed 's/\s.*$//') # Save hash to file - echo "WEBPASSWORD=${hash}" >> /etc/pihole/setupVars.conf + change_setting "WEBPASSWORD" "${hash}" echo "New password set" else - echo "WEBPASSWORD=" >> /etc/pihole/setupVars.conf + change_setting "WEBPASSWORD" "" echo "Password removed" fi } +ProcessDNSSettings() { + source "${setupVars}" + + delete_dnsmasq_setting "server=" + add_dnsmasq_setting "server" "${PIHOLE_DNS_1}" + + if [[ "${PIHOLE_DNS_2}" != "" ]]; then + add_dnsmasq_setting "server" "${PIHOLE_DNS_2}" + fi + + delete_dnsmasq_setting "domain-needed" + + if [[ "${DNS_FQDN_REQUIRED}" == true ]]; then + add_dnsmasq_setting "domain-needed" + fi + + delete_dnsmasq_setting "bogus-priv" + + if [[ "${DNS_BOGUS_PRIV}" == true ]]; then + add_dnsmasq_setting "bogus-priv" + fi + +} + SetDNSServers(){ - # Remove setting from file (create backup setupVars.conf.bak) - sed -i.bak '/PIHOLE_DNS_1/d;/PIHOLE_DNS_2/d;/DNS_FQDN_REQUIRED/d;/DNS_BOGUS_PRIV/d;' /etc/pihole/setupVars.conf # Save setting to file - echo "PIHOLE_DNS_1=${args[2]}" >> /etc/pihole/setupVars.conf - if [[ "${args[3]}" != "none" ]]; then - echo "PIHOLE_DNS_2=${args[3]}" >> /etc/pihole/setupVars.conf - else - echo "PIHOLE_DNS_2=" >> /etc/pihole/setupVars.conf - fi + change_setting "PIHOLE_DNS_1" "${args[2]}" - # Replace within actual dnsmasq config file - sed -i '/server=/d;' /etc/dnsmasq.d/01-pihole.conf - echo "server=${args[2]}" >> /etc/dnsmasq.d/01-pihole.conf if [[ "${args[3]}" != "none" ]]; then - echo "server=${args[3]}" >> /etc/dnsmasq.d/01-pihole.conf + change_setting "PIHOLE_DNS_2" "${args[3]}" + else + change_setting "PIHOLE_DNS_2" "" fi - # Remove domain-needed entry - sed -i '/domain-needed/d;' /etc/dnsmasq.d/01-pihole.conf - - # Readd it if required if [[ "${args[4]}" == "domain-needed" ]]; then - echo "domain-needed" >> /etc/dnsmasq.d/01-pihole.conf - echo "DNS_FQDN_REQUIRED=true" >> /etc/pihole/setupVars.conf + change_setting "DNS_FQDN_REQUIRED" "true" else - # Leave it deleted if not wanted - echo "DNS_FQDN_REQUIRED=false" >> /etc/pihole/setupVars.conf + change_setting "DNS_FQDN_REQUIRED" "false" fi - # Remove bogus-priv entry - sed -i '/bogus-priv/d;' /etc/dnsmasq.d/01-pihole.conf - - # Readd it if required - if [[ "${args[5]}" == "bogus-priv" ]]; then - echo "bogus-priv" >> /etc/dnsmasq.d/01-pihole.conf - echo "DNS_BOGUS_PRIV=true" >> /etc/pihole/setupVars.conf + if [[ "${args[4]}" == "bogus-priv" || "${args[5]}" == "bogus-priv" ]]; then + change_setting "DNS_BOGUS_PRIV" "true" else - # Leave it deleted if not wanted - echo "DNS_BOGUS_PRIV=false" >> /etc/pihole/setupVars.conf + change_setting "DNS_BOGUS_PRIV" "false" fi + ProcessDnsmasqSettings + # Restart dnsmasq to load new configuration RestartDNS @@ -117,18 +147,14 @@ SetDNSServers(){ SetExcludeDomains(){ - # Remove setting from file (create backup setupVars.conf.bak) - sed -i.bak '/API_EXCLUDE_DOMAINS/d;' /etc/pihole/setupVars.conf - # Save setting to file - echo "API_EXCLUDE_DOMAINS=${args[2]}" >> /etc/pihole/setupVars.conf + change_setting "API_EXCLUDE_DOMAINS" "${args[2]}" + } SetExcludeClients(){ - # Remove setting from file (create backup setupVars.conf.bak) - sed -i.bak '/API_EXCLUDE_CLIENTS/d;' /etc/pihole/setupVars.conf - # Save setting to file - echo "API_EXCLUDE_CLIENTS=${args[2]}" >> /etc/pihole/setupVars.conf + change_setting "API_EXCLUDE_CLIENTS" "${args[2]}" + } Reboot(){ @@ -149,96 +175,103 @@ RestartDNS(){ SetQueryLogOptions(){ - # Remove setting from file (create backup setupVars.conf.bak) - sed -i.bak '/API_QUERY_LOG_SHOW/d;' /etc/pihole/setupVars.conf - # Save setting to file - echo "API_QUERY_LOG_SHOW=${args[2]}" >> /etc/pihole/setupVars.conf + change_setting "API_QUERY_LOG_SHOW" "${args[2]}" + +} + +ProcessDHCPSettings() { + + source "${setupVars}" + interface=$(grep 'PIHOLE_INTERFACE=' /etc/pihole/setupVars.conf | sed "s/.*=//") + + # Use eth0 as fallback interface + if [ -z ${interface} ]; then + interface="eth0" + fi + + # Write settings to file + echo "############################################################################### +# DHCP SERVER CONFIG FILE AUTOMATICALLY POPULATED BY PI-HOLE WEB INTERFACE. # +# ANY CHANGES MADE TO THIS FILE WILL BE LOST ON CHANGE # +############################################################################### +dhcp-authoritative +dhcp-range=${DHCP_START},${DHCP_END},infinite +dhcp-option=option:router,${DHCP_ROUTER} +dhcp-leasefile=/etc/pihole/dhcp.leases +domain=${PIHOLE_DOMAIN} +quiet-dhcp +quiet-dhcp6 +#enable-ra +dhcp-option=option6:dns-server,[::] +dhcp-range=::100,::1ff,constructor:${interface} +" > "${dhcpconfig}" + } EnableDHCP(){ - # Remove setting from file (create backup setupVars.conf.bak) - sed -i.bak '/DHCP_/d;' /etc/pihole/setupVars.conf - echo "DHCP_ACTIVE=true" >> /etc/pihole/setupVars.conf - echo "DHCP_START=${args[2]}" >> /etc/pihole/setupVars.conf - echo "DHCP_END=${args[3]}" >> /etc/pihole/setupVars.conf - echo "DHCP_ROUTER=${args[4]}" >> /etc/pihole/setupVars.conf + change_setting "DHCP_ACTIVE" "true" + change_setting "DHCP_START" "${args[2]}" + change_setting "DHCP_END" "${args[3]}" + change_setting "DHCP_ROUTER" "${args[4]}" - # Remove setting from file - sed -i '/dhcp-/d;/quiet-dhcp/d;' /etc/dnsmasq.d/01-pihole.conf - # Save setting to file - echo "dhcp-range=${args[2]},${args[3]},infinite" >> /etc/dnsmasq.d/01-pihole.conf - echo "dhcp-option=option:router,${args[4]}" >> /etc/dnsmasq.d/01-pihole.conf - # Changes the behaviour from strict RFC compliance so that DHCP requests on unknown leases from unknown hosts are not ignored. This allows new hosts to get a lease without a tedious timeout under all circumstances. It also allows dnsmasq to rebuild its lease database without each client needing to reacquire a lease, if the database is lost. - echo "dhcp-authoritative" >> /etc/dnsmasq.d/01-pihole.conf - # Use the specified file to store DHCP lease information - echo "dhcp-leasefile=/etc/pihole/dhcp.leases" >> /etc/dnsmasq.d/01-pihole.conf - # Suppress logging of the routine operation of these protocols. Errors and problems will still be logged, though. - echo "quiet-dhcp" >> /etc/dnsmasq.d/01-pihole.conf - echo "quiet-dhcp6" >> /etc/dnsmasq.d/01-pihole.conf + # Remove possible old setting from file + delete_dnsmasq_setting "dhcp-" + delete_dnsmasq_setting "quiet-dhcp" + + ProcessDHCPSettings RestartDNS } DisableDHCP(){ - # Remove setting from file (create backup setupVars.conf.bak) - sed -i.bak '/DHCP_ACTIVE/d;' /etc/pihole/setupVars.conf - echo "DHCP_ACTIVE=false" >> /etc/pihole/setupVars.conf + change_setting "DHCP_ACTIVE" "false" + + # Remove possible old setting from file + delete_dnsmasq_setting "dhcp-" + delete_dnsmasq_setting "quiet-dhcp" - # Remove setting from file - sed -i '/dhcp-/d;/quiet-dhcp/d;' /etc/dnsmasq.d/01-pihole.conf + rm "${dhcpconfig}" RestartDNS } SetWebUILayout(){ - # Remove setting from file (create backup setupVars.conf.bak) - sed -i.bak '/WEBUIBOXEDLAYOUT/d;' /etc/pihole/setupVars.conf - echo "WEBUIBOXEDLAYOUT=${args[2]}" >> /etc/pihole/setupVars.conf + change_setting "WEBUIBOXEDLAYOUT" "${args[2]}" } -SetDNSDomainName(){ +SetDHCPDomainName(){ - # Remove setting from file (create backup setupVars.conf.bak) - sed -i.bak '/PIHOLE_DOMAIN/d;' /etc/pihole/setupVars.conf - # Save setting to file - echo "PIHOLE_DOMAIN=${args[2]}" >> /etc/pihole/setupVars.conf + change_setting "PIHOLE_DOMAIN" "${args[2]}" - # Replace within actual dnsmasq config file - sed -i '/domain=/d;' /etc/dnsmasq.d/01-pihole.conf - echo "domain=${args[2]}" >> /etc/dnsmasq.d/01-pihole.conf + ProcessDHCPSettings - # Restart dnsmasq to load new configuration RestartDNS } SetPrivacyMode(){ - # Remove setting from file (create backup setupVars.conf.bak) - sed -i.bak '/API_PRIVACY_MODE/d' /etc/pihole/setupVars.conf - # Save setting to file if [[ "${args[2]}" == "true" ]] ; then - echo "API_PRIVACY_MODE=true" >> /etc/pihole/setupVars.conf + change_setting "API_PRIVACY_MODE" "true" else - echo "API_PRIVACY_MODE=false" >> /etc/pihole/setupVars.conf + change_setting "API_PRIVACY_MODE" "false" fi + } ResolutionSettings() { - typ=${args[2]} - state=${args[3]} + typ="${args[2]}" + state="${args[3]}" if [[ "${typ}" == "forward" ]]; then - sed -i.bak '/API_GET_UPSTREAM_DNS_HOSTNAME/d;' /etc/pihole/setupVars.conf - echo "API_GET_UPSTREAM_DNS_HOSTNAME=${state}" >> /etc/pihole/setupVars.conf + change_setting "API_GET_UPSTREAM_DNS_HOSTNAME" "${state}" elif [[ "${typ}" == "clients" ]]; then - sed -i.bak '/API_GET_CLIENT_HOSTNAME/d;' /etc/pihole/setupVars.conf - echo "API_GET_CLIENT_HOSTNAME=${state}" >> /etc/pihole/setupVars.conf + change_setting "API_GET_CLIENT_HOSTNAME" "${state}" fi } @@ -257,7 +290,7 @@ case "${args[1]}" in "disabledhcp" ) DisableDHCP;; "layout" ) SetWebUILayout;; "-h" | "--help" ) helpFunc;; - "domainname" ) SetDNSDomainName;; + "domainname" ) SetDHCPDomainName;; "privacymode" ) SetPrivacyMode;; "resolve" ) ResolutionSettings;; * ) helpFunc;; From 1e627c7e8fa9b7f9d0cbb6660235c572dad656c9 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Wed, 28 Dec 2016 16:25:14 +0000 Subject: [PATCH 02/12] Make webpage.sh fully library style --- advanced/Scripts/webpage.sh | 59 +++++++++++++++++++------------------ pihole | 3 +- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index ddc8859e..a18a28ce 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -9,8 +9,6 @@ # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. -args=("$@") - readonly setupVars="/etc/pihole/setupVars.conf" readonly dnsmasqconfig="/etc/dnsmasq.d/01-pihole.conf" readonly dhcpconfig="/etc/dnsmasq.d/02-pihole-dhcp.conf" @@ -275,30 +273,35 @@ ResolutionSettings() { fi } -case "${args[1]}" in - "-p" | "password" ) SetWebPassword;; - "-c" | "celsius" ) unit="C"; SetTemperatureUnit;; - "-f" | "fahrenheit" ) unit="F"; SetTemperatureUnit;; - "-k" | "kelvin" ) unit="K"; SetTemperatureUnit;; - "setdns" ) SetDNSServers;; - "setexcludedomains" ) SetExcludeDomains;; - "setexcludeclients" ) SetExcludeClients;; - "reboot" ) Reboot;; - "restartdns" ) RestartDNS;; - "setquerylog" ) SetQueryLogOptions;; - "enabledhcp" ) EnableDHCP;; - "disabledhcp" ) DisableDHCP;; - "layout" ) SetWebUILayout;; - "-h" | "--help" ) helpFunc;; - "domainname" ) SetDHCPDomainName;; - "privacymode" ) SetPrivacyMode;; - "resolve" ) ResolutionSettings;; - * ) helpFunc;; -esac - -shift - -if [[ $# = 0 ]]; then - helpFunc -fi +main() { + + args=("$@") + + case "${args[1]}" in + "-p" | "password" ) SetWebPassword;; + "-c" | "celsius" ) unit="C"; SetTemperatureUnit;; + "-f" | "fahrenheit" ) unit="F"; SetTemperatureUnit;; + "-k" | "kelvin" ) unit="K"; SetTemperatureUnit;; + "setdns" ) SetDNSServers;; + "setexcludedomains" ) SetExcludeDomains;; + "setexcludeclients" ) SetExcludeClients;; + "reboot" ) Reboot;; + "restartdns" ) RestartDNS;; + "setquerylog" ) SetQueryLogOptions;; + "enabledhcp" ) EnableDHCP;; + "disabledhcp" ) DisableDHCP;; + "layout" ) SetWebUILayout;; + "-h" | "--help" ) helpFunc;; + "domainname" ) SetDHCPDomainName;; + "privacymode" ) SetPrivacyMode;; + "resolve" ) ResolutionSettings;; + * ) helpFunc;; + esac + + shift + + if [[ $# = 0 ]]; then + helpFunc + fi +} diff --git a/pihole b/pihole index 5a54fae4..f41f7ac5 100755 --- a/pihole +++ b/pihole @@ -23,7 +23,8 @@ if [[ ! $EUID -eq 0 ]];then fi webpageFunc() { - /opt/pihole/webpage.sh "$@" + source /opt/pihole/webpage.sh + main "$@" exit 0 } From 02d658be65e2d68f2accf27a5fb686b4f3020a94 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Wed, 28 Dec 2016 16:31:55 +0000 Subject: [PATCH 03/12] Look for DHCP / DNS server settings which would have to be reapplied after updating (since we overwrite 01-pihole.conf) --- automated install/basic-install.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index cef7b7f0..cacc3ca6 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -888,6 +888,17 @@ finalExports() { echo "PIHOLE_DNS_2=${PIHOLE_DNS_2}" echo "QUERY_LOGGING=${QUERY_LOGGING}" }>> "${setupVars}" + + # Look for DHCP / DNS server settings which would have to be reapplied + source "${setupVars}" + source "/etc/.pihole/advanced/Scripts/webpage.sh" + if [[ "${DNS_FQDN_REQUIRED}" != "" ]] ; then + ProcessDNSSettings + fi + + if [[ "${DHCP_ACTIVE}" == "true" ]] ; then + ProcessDHCPSettings + fi } installPihole() { From 03d4fcd17dca1d0b976285c6ffbb3a86a5ffe7ec Mon Sep 17 00:00:00 2001 From: DL6ER Date: Wed, 28 Dec 2016 16:32:24 +0000 Subject: [PATCH 04/12] Don't actually have to reapply DHCP settings since we are going to save it in a different file we don't replace by a template --- automated install/basic-install.sh | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index cacc3ca6..c2c7f8d9 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -889,16 +889,12 @@ finalExports() { echo "QUERY_LOGGING=${QUERY_LOGGING}" }>> "${setupVars}" - # Look for DHCP / DNS server settings which would have to be reapplied + # Look for DNS server settings which would have to be reapplied source "${setupVars}" source "/etc/.pihole/advanced/Scripts/webpage.sh" if [[ "${DNS_FQDN_REQUIRED}" != "" ]] ; then ProcessDNSSettings fi - - if [[ "${DHCP_ACTIVE}" == "true" ]] ; then - ProcessDHCPSettings - fi } installPihole() { From cf724176dc388e2ec6c965f894cb368b87cdec8d Mon Sep 17 00:00:00 2001 From: DL6ER Date: Wed, 28 Dec 2016 20:02:48 +0000 Subject: [PATCH 05/12] Do stateful DHCPv6 and SLAAC --- advanced/Scripts/webpage.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index a18a28ce..a4ebae78 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -201,7 +201,8 @@ quiet-dhcp quiet-dhcp6 #enable-ra dhcp-option=option6:dns-server,[::] -dhcp-range=::100,::1ff,constructor:${interface} +dhcp-range=::100,::1ff,constructor:${interface},ra-names,slaac +ra-param=*,0,0 " > "${dhcpconfig}" } From 3268e1611a65b5410365912e6dadc17cf3531be9 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Thu, 29 Dec 2016 14:19:44 +0000 Subject: [PATCH 06/12] Backend accept and apply dhcp lease time --- advanced/Scripts/webpage.sh | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index a4ebae78..b2b4c0d9 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -187,13 +187,19 @@ ProcessDHCPSettings() { interface="eth0" fi + if [[ "${DHCP_LEASETIME}" == "0" ]]; then + leasetime="infinite" + else + leasetime="${DHCP_LEASETIME}h" + fi + # Write settings to file echo "############################################################################### # DHCP SERVER CONFIG FILE AUTOMATICALLY POPULATED BY PI-HOLE WEB INTERFACE. # # ANY CHANGES MADE TO THIS FILE WILL BE LOST ON CHANGE # ############################################################################### dhcp-authoritative -dhcp-range=${DHCP_START},${DHCP_END},infinite +dhcp-range=${DHCP_START},${DHCP_END},${leasetime} dhcp-option=option:router,${DHCP_ROUTER} dhcp-leasefile=/etc/pihole/dhcp.leases domain=${PIHOLE_DOMAIN} @@ -213,6 +219,8 @@ EnableDHCP(){ change_setting "DHCP_START" "${args[2]}" change_setting "DHCP_END" "${args[3]}" change_setting "DHCP_ROUTER" "${args[4]}" + change_setting "DHCP_LEASETIME" "${args[5]}" + change_setting "PIHOLE_DOMAIN" "${args[6]}" # Remove possible old setting from file delete_dnsmasq_setting "dhcp-" @@ -242,16 +250,6 @@ SetWebUILayout(){ } -SetDHCPDomainName(){ - - change_setting "PIHOLE_DOMAIN" "${args[2]}" - - ProcessDHCPSettings - - RestartDNS - -} - SetPrivacyMode(){ if [[ "${args[2]}" == "true" ]] ; then @@ -293,7 +291,6 @@ main() { "disabledhcp" ) DisableDHCP;; "layout" ) SetWebUILayout;; "-h" | "--help" ) helpFunc;; - "domainname" ) SetDHCPDomainName;; "privacymode" ) SetPrivacyMode;; "resolve" ) ResolutionSettings;; * ) helpFunc;; From 9181a4a1d85fb63398df501d294ec6a8f7fd9e32 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Thu, 29 Dec 2016 14:26:23 +0000 Subject: [PATCH 07/12] Apply dhcp lease time also for IPv6 --- advanced/Scripts/webpage.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index b2b4c0d9..92431cb6 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -207,7 +207,7 @@ quiet-dhcp quiet-dhcp6 #enable-ra dhcp-option=option6:dns-server,[::] -dhcp-range=::100,::1ff,constructor:${interface},ra-names,slaac +dhcp-range=::100,::1ff,constructor:${interface},ra-names,slaac,${leasetime} ra-param=*,0,0 " > "${dhcpconfig}" From 5c7fc05a32b994cc6e313a7811bbabfcfc9032ac Mon Sep 17 00:00:00 2001 From: DL6ER Date: Fri, 30 Dec 2016 16:31:57 +0000 Subject: [PATCH 08/12] Enable DHCP logging by default --- advanced/Scripts/webpage.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index 92431cb6..7e3139f2 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -203,8 +203,8 @@ dhcp-range=${DHCP_START},${DHCP_END},${leasetime} dhcp-option=option:router,${DHCP_ROUTER} dhcp-leasefile=/etc/pihole/dhcp.leases domain=${PIHOLE_DOMAIN} -quiet-dhcp -quiet-dhcp6 +#quiet-dhcp +#quiet-dhcp6 #enable-ra dhcp-option=option6:dns-server,[::] dhcp-range=::100,::1ff,constructor:${interface},ra-names,slaac,${leasetime} From 85f0241c0d3623396eccbe28978cc5c8907aec68 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Mon, 2 Jan 2017 10:50:59 +0100 Subject: [PATCH 09/12] Reprocess DHCP settings after update --- advanced/Scripts/webpage.sh | 7 ++++++- automated install/basic-install.sh | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index 7e3139f2..729c99d3 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -179,6 +179,8 @@ SetQueryLogOptions(){ ProcessDHCPSettings() { + if [[ "${DHCP_ACTIVE}" == "true" ]]; then + source "${setupVars}" interface=$(grep 'PIHOLE_INTERFACE=' /etc/pihole/setupVars.conf | sed "s/.*=//") @@ -211,6 +213,9 @@ dhcp-range=::100,::1ff,constructor:${interface},ra-names,slaac,${leasetime} ra-param=*,0,0 " > "${dhcpconfig}" + else + rm "${dhcpconfig}" + fi } EnableDHCP(){ @@ -239,7 +244,7 @@ DisableDHCP(){ delete_dnsmasq_setting "dhcp-" delete_dnsmasq_setting "quiet-dhcp" - rm "${dhcpconfig}" + ProcessDHCPSettings RestartDNS } diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index c2c7f8d9..6711ecdf 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -892,9 +892,14 @@ finalExports() { # Look for DNS server settings which would have to be reapplied source "${setupVars}" source "/etc/.pihole/advanced/Scripts/webpage.sh" + if [[ "${DNS_FQDN_REQUIRED}" != "" ]] ; then ProcessDNSSettings fi + + if [[ "${DHCP_ACTIVE}" != "" ]] ; then + ProcessDHCPSettings + fi } installPihole() { From 677694b01a5c8eccc942b2b220a5ff2efc961a5c Mon Sep 17 00:00:00 2001 From: DL6ER Date: Mon, 2 Jan 2017 11:05:40 +0100 Subject: [PATCH 10/12] Set 24h lease time if settings was empty before --- advanced/Scripts/webpage.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index 729c99d3..5e538619 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -191,6 +191,9 @@ ProcessDHCPSettings() { if [[ "${DHCP_LEASETIME}" == "0" ]]; then leasetime="infinite" + elif [[ "${DHCP_LEASETIME}" == "" ]]; then + leasetime="24" + change_setting "DHCP_LEASETIME" "${leasetime}" else leasetime="${DHCP_LEASETIME}h" fi From dbd8aee4eef8fd149a12c1318163224853ebe4f8 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Mon, 2 Jan 2017 11:08:54 +0100 Subject: [PATCH 11/12] Add 'local' domain if not set in setupVers.conf --- advanced/Scripts/webpage.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index 5e538619..008123d7 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -189,10 +189,15 @@ ProcessDHCPSettings() { interface="eth0" fi + if [[ "${PIHOLE_DOMAIN}" == "0" ]]; then + PIHOLE_DOMAIN="local" + change_setting "PIHOLE_DOMAIN" "${PIHOLE_DOMAIN}" + fi + if [[ "${DHCP_LEASETIME}" == "0" ]]; then leasetime="infinite" elif [[ "${DHCP_LEASETIME}" == "" ]]; then - leasetime="24" + leasetime="24h" change_setting "DHCP_LEASETIME" "${leasetime}" else leasetime="${DHCP_LEASETIME}h" From ad6185280404ee741ab4022d79808c10184cae38 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Mon, 2 Jan 2017 11:10:38 +0100 Subject: [PATCH 12/12] Test against empty string --- advanced/Scripts/webpage.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index 008123d7..7fb339de 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -189,7 +189,7 @@ ProcessDHCPSettings() { interface="eth0" fi - if [[ "${PIHOLE_DOMAIN}" == "0" ]]; then + if [[ "${PIHOLE_DOMAIN}" == "" ]]; then PIHOLE_DOMAIN="local" change_setting "PIHOLE_DOMAIN" "${PIHOLE_DOMAIN}" fi