From bf867bd9fdc4e3e6374d80c92d4db936fd7b456f Mon Sep 17 00:00:00 2001 From: DL6ER Date: Sun, 11 Dec 2016 16:54:27 +0100 Subject: [PATCH 01/10] Set DNS servers from web UI --- advanced/Scripts/webpage.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index 0a79d853..839f6e6d 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -57,11 +57,22 @@ SetWebPassword(){ } +SetDNSServers(){ + + # Remove setting from file (create backup setupVars.conf.bak) + sed -i.bak '/PIHOLE_DNS_1/d;/PIHOLE_DNS_2/d;' /etc/pihole/setupVars.conf + # Save setting to file + echo "PIHOLE_DNS_1=${args[2]}" >> /etc/pihole/setupVars.conf + echo "PIHOLE_DNS_2=${args[3]}" >> /etc/pihole/setupVars.conf + +} + for var in "$@"; do case "${var}" in "-p" | "password" ) SetWebPassword;; "-c" | "celsius" ) unit="C"; SetTemperatureUnit;; "-f" | "fahrenheit" ) unit="F"; SetTemperatureUnit;; + "setdns" ) SetDNSServers;; "-h" | "--help" ) helpFunc;; esac done From 9ac378ae09a5c484b891963bb78a9b657a518116 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Sun, 11 Dec 2016 19:30:04 +0100 Subject: [PATCH 02/10] Set domains and clients which are excluded by the API --- advanced/Scripts/webpage.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index 839f6e6d..35ba6875 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -67,12 +67,30 @@ 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 +} + +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 +} + for var in "$@"; do case "${var}" in "-p" | "password" ) SetWebPassword;; "-c" | "celsius" ) unit="C"; SetTemperatureUnit;; "-f" | "fahrenheit" ) unit="F"; SetTemperatureUnit;; "setdns" ) SetDNSServers;; + "setexcludedomains" ) SetExcludeDomains;; + "setexcludeclients" ) SetExcludeClients;; "-h" | "--help" ) helpFunc;; esac done From 2bafa2f2ac685798d120ab1393940354978d4e75 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Sun, 11 Dec 2016 22:33:27 +0100 Subject: [PATCH 03/10] Add reboot option --- advanced/Scripts/webpage.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index 35ba6875..bdd3a17f 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -83,6 +83,12 @@ SetExcludeClients(){ echo "API_EXCLUDE_CLIENTS=${args[2]}" >> /etc/pihole/setupVars.conf } +Reboot(){ + + reboot + +} + for var in "$@"; do case "${var}" in "-p" | "password" ) SetWebPassword;; @@ -91,6 +97,7 @@ for var in "$@"; do "setdns" ) SetDNSServers;; "setexcludedomains" ) SetExcludeDomains;; "setexcludeclients" ) SetExcludeClients;; + "reboot" ) Reboot;; "-h" | "--help" ) helpFunc;; esac done From aaab3306a87c7e8384bbe0c4e46cb0c6e56acc03 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Mon, 12 Dec 2016 10:38:21 +0100 Subject: [PATCH 04/10] Add restart DNS capability --- advanced/Scripts/webpage.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index bdd3a17f..a7a76161 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -89,6 +89,16 @@ Reboot(){ } +RestartDNS(){ + + if [ -x "$(command -v systemctl)" ]; then + systemctl restart dnsmasq &> /dev/null + else + service dnsmasq restart &> /dev/null + fi + +} + for var in "$@"; do case "${var}" in "-p" | "password" ) SetWebPassword;; @@ -98,6 +108,7 @@ for var in "$@"; do "setexcludedomains" ) SetExcludeDomains;; "setexcludeclients" ) SetExcludeClients;; "reboot" ) Reboot;; + "restartdns" ) RestartDNS;; "-h" | "--help" ) helpFunc;; esac done From d4f83cb1d4792283fd0d7f844518fc02a33c5c24 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Mon, 12 Dec 2016 13:15:07 +0100 Subject: [PATCH 05/10] Be able to set API_QUERY_LOG_SHOW --- advanced/Scripts/webpage.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index a7a76161..4df11f38 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -99,6 +99,14 @@ 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 +} + for var in "$@"; do case "${var}" in "-p" | "password" ) SetWebPassword;; @@ -109,6 +117,7 @@ for var in "$@"; do "setexcludeclients" ) SetExcludeClients;; "reboot" ) Reboot;; "restartdns" ) RestartDNS;; + "setquerylog" ) SetQueryLogOptions;; "-h" | "--help" ) helpFunc;; esac done From 2f4b7ce3dd3749acc5513ab63214cdd38f265609 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Mon, 12 Dec 2016 14:16:13 +0100 Subject: [PATCH 06/10] Update dnsmasq file when changing upstream DNS servers and restart the service to get it active --- advanced/Scripts/webpage.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index 4df11f38..6ae2c327 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -65,6 +65,14 @@ SetDNSServers(){ echo "PIHOLE_DNS_1=${args[2]}" >> /etc/pihole/setupVars.conf echo "PIHOLE_DNS_2=${args[3]}" >> /etc/pihole/setupVars.conf + # 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 + echo "server=${args[3]}" >> /etc/dnsmasq.d/01-pihole.conf + + # Restart dnsmasq to load new configuration + RestartDNS + } SetExcludeDomains(){ From 8dc0dc4d694a3873134c8cbf3d75d3b0fe18f815 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Mon, 12 Dec 2016 15:34:05 +0100 Subject: [PATCH 07/10] Add DHCP-Server backend --- advanced/Scripts/webpage.sh | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index 6ae2c327..a930856f 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -115,6 +115,40 @@ SetQueryLogOptions(){ echo "API_QUERY_LOG_SHOW=${args[2]}" >> /etc/pihole/setupVars.conf } +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 + + # Remove setting from file + sed -i '/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 + + 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 + + # Remove setting from file + sed -i '/dhcp-/d;' /etc/dnsmasq.d/01-pihole.conf + + RestartDNS +} + for var in "$@"; do case "${var}" in "-p" | "password" ) SetWebPassword;; @@ -126,6 +160,8 @@ for var in "$@"; do "reboot" ) Reboot;; "restartdns" ) RestartDNS;; "setquerylog" ) SetQueryLogOptions;; + "enabledhcp" ) EnableDHCP;; + "disabledhcp" ) DisableDHCP;; "-h" | "--help" ) helpFunc;; esac done From bc91716082fbd7dc139f434e7326a31216e811fe Mon Sep 17 00:00:00 2001 From: DL6ER Date: Mon, 12 Dec 2016 17:14:52 +0100 Subject: [PATCH 08/10] Suppress logging of DHCP actions to /var/log/pihole.log --- advanced/Scripts/webpage.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index a930856f..21de7067 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -133,6 +133,9 @@ EnableDHCP(){ 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 RestartDNS } From b8d2bfc890c36c9418e5e8d066e45b6fc65810f1 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Tue, 13 Dec 2016 12:42:40 +0100 Subject: [PATCH 09/10] Wait 5 seconds before rebooting so the web UI can finish loading before being unreachable due to the reboot --- 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 21de7067..4730118d 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -93,7 +93,7 @@ SetExcludeClients(){ Reboot(){ - reboot + nohup bash -c "sleep 5; reboot" &> /dev/null Date: Tue, 13 Dec 2016 14:59:52 +0100 Subject: [PATCH 10/10] Add "Interface appearence" option --- advanced/Scripts/webpage.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh index 4730118d..5863d2dc 100755 --- a/advanced/Scripts/webpage.sh +++ b/advanced/Scripts/webpage.sh @@ -152,6 +152,14 @@ DisableDHCP(){ 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 + +} + for var in "$@"; do case "${var}" in "-p" | "password" ) SetWebPassword;; @@ -165,6 +173,7 @@ for var in "$@"; do "setquerylog" ) SetQueryLogOptions;; "enabledhcp" ) EnableDHCP;; "disabledhcp" ) DisableDHCP;; + "layout" ) SetWebUILayout;; "-h" | "--help" ) helpFunc;; esac done