diff --git a/advanced/Scripts/webpage.sh b/advanced/Scripts/webpage.sh new file mode 100755 index 00000000..bcb45a14 --- /dev/null +++ b/advanced/Scripts/webpage.sh @@ -0,0 +1,74 @@ +#!/usr/bin/env bash +# Pi-hole: A black hole for Internet advertisements +# Network-wide ad blocking via your Raspberry Pi +# http://pi-hole.net +# Web interface settings +# +# Pi-hole is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. + +args=("$@") + +helpFunc() { + cat << EOM +::: Set admin options for the web interface of pihole +::: +::: Usage: pihole -a [options] +::: +::: Options: +::: -p, password Set web interface password, an empty input will remove any previously set password +::: -c, celsius Set Celcius temperature unit +::: -f, fahrenheit Set Fahrenheit temperature unit +::: -h, --help Show this help dialog +EOM + exit 1 +} + +SetTemperatureUnit(){ + + # Remove setting from file (create backup setupVars.conf.bak) + sed -i.bak '/TEMPERATUREUNIT/d' /etc/pihole/setupVars.conf + # Save setting to file + if [[ $unit == "F" ]] ; then + echo "TEMPERATUREUNIT=F" >> /etc/pihole/setupVars.conf + else + echo "TEMPERATUREUNIT=C" >> /etc/pihole/setupVars.conf + fi + +} + +SetWebPassword(){ + + # 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 + echo "New password set" + else + echo "Password removed" + fi + +} + +for var in "$@"; do + case "${var}" in + "-p" | "password" ) SetWebPassword;; + "-c" | "celsius" ) unit="C"; SetTemperatureUnit;; + "-f" | "fahrenheit" ) unit="F"; SetTemperatureUnit;; + "-h" | "--help" ) helpFunc;; + esac +done + +shift + +if [[ $# = 0 ]]; then + helpFunc +fi + diff --git a/pihole b/pihole index 83046675..530dac8d 100755 --- a/pihole +++ b/pihole @@ -22,6 +22,11 @@ if [[ ! $EUID -eq 0 ]];then fi fi +webpageFunc() { + /opt/pihole/webpage.sh "$@" + exit 0 +} + whitelistFunc() { "${PI_HOLE_SCRIPT_DIR}"/list.sh "$@" exit 0 @@ -180,7 +185,7 @@ helpFunc() { ::: Control all PiHole specific functions! ::: ::: Usage: pihole [options] -::: Add -h after -w (whitelist), -b (blacklist), or -c (chronometer) for more information on usage +::: Add -h after -w (whitelist), -b (blacklist), -c (chronometer), or -a (admin) for more information on usage ::: ::: Options: ::: -w, whitelist Whitelist domains @@ -195,6 +200,7 @@ helpFunc() { ::: -v, version Show current versions ::: -q, query Query the adlists for a specific domain ::: -l, logging Enable or Disable logging (pass 'on' or 'off') +::: -a, admin Admin webpage options ::: uninstall Uninstall Pi-Hole from your system :(! ::: status Is Pi-Hole Enabled or Disabled ::: enable Enable Pi-Hole DNS Blocking @@ -228,5 +234,6 @@ case "${1}" in "disable" ) piholeEnable 0;; "status" ) piholeStatus "$2";; "restartdns" ) restartDNS;; + "-a" | "admin" ) webpageFunc "$@";; * ) helpFunc;; esac