mirror of
https://github.com/pi-hole/pi-hole.git
synced 2024-12-25 06:10:20 +00:00
Merge branch 'feature/defensiveTweaks' of https://github.com/pi-hole/pi-hole into feature/defensiveTweaks
# Conflicts: # advanced/Scripts/update.sh # automated install/basic-install.sh
This commit is contained in:
commit
8b9f0487c0
4 changed files with 210 additions and 127 deletions
|
@ -57,12 +57,14 @@ update_repo() {
|
||||||
getGitFiles() {
|
getGitFiles() {
|
||||||
# Setup git repos for directory and repository passed
|
# Setup git repos for directory and repository passed
|
||||||
# as arguments 1 and 2
|
# as arguments 1 and 2
|
||||||
|
local directory="${1}"
|
||||||
|
local remoteRepo="{$2}"
|
||||||
echo ":::"
|
echo ":::"
|
||||||
echo "::: Checking for existing repository..."
|
echo "::: Checking for existing repository..."
|
||||||
if is_repo "${1}"; then
|
if is_repo "${directory}"; then
|
||||||
update_repo "${1}"
|
update_repo "${directory}"
|
||||||
else
|
else
|
||||||
make_repo "${1}" "${2}"
|
make_repo "${directory}" "${remoteRepo}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,8 +29,9 @@ PI_HOLE_LOCAL_REPO="/etc/.pihole"
|
||||||
PI_HOLE_FILES=(chronometer list piholeDebug piholeLogFlush setupLCD update version)
|
PI_HOLE_FILES=(chronometer list piholeDebug piholeLogFlush setupLCD update version)
|
||||||
useUpdateVars=false
|
useUpdateVars=false
|
||||||
|
|
||||||
IPv4_address=""
|
IPV4_ADDRESS=""
|
||||||
IPv6_address=""
|
IPV6_ADDRESS=""
|
||||||
|
QUERY_LOGGING=true
|
||||||
|
|
||||||
# Find the rows and columns will default to 80x24 is it can not be detected
|
# Find the rows and columns will default to 80x24 is it can not be detected
|
||||||
screen_size=$(stty size 2>/dev/null || echo 24 80)
|
screen_size=$(stty size 2>/dev/null || echo 24 80)
|
||||||
|
@ -149,24 +150,27 @@ spinner() {
|
||||||
}
|
}
|
||||||
|
|
||||||
is_repo() {
|
is_repo() {
|
||||||
# Use git to check if directory is currently under VCS
|
# Use git to check if directory is currently under VCS, return the value
|
||||||
echo -n "::: Checking $1 is a repo..."
|
local directory="${1}"
|
||||||
cd "${1}" &> /dev/null || return 1
|
git -C "${directory}" status --short &> /dev/null
|
||||||
git status &> /dev/null && (echo " OK!"; true) || (echo " not found!"; false)
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
make_repo() {
|
make_repo() {
|
||||||
|
local directory="${1}"
|
||||||
|
local remoteRepo="${2}"
|
||||||
# Remove the non-repod interface and clone the interface
|
# Remove the non-repod interface and clone the interface
|
||||||
echo -n "::: Cloning $2 into $1..."
|
echo -n "::: Cloning $remoteRepo into $directory..."
|
||||||
rm -rf "${1}"
|
rm -rf "${directory}"
|
||||||
git clone -q --depth 1 "${2}" "${1}" > /dev/null & spinner $!
|
git clone -q --depth 1 "${remoteRepo}" "${directory}" > /dev/null & spinner $!
|
||||||
echo " done!"
|
echo " done!"
|
||||||
}
|
}
|
||||||
|
|
||||||
update_repo() {
|
update_repo() {
|
||||||
|
local directory="${1}"
|
||||||
# Pull the latest commits
|
# Pull the latest commits
|
||||||
echo -n "::: Updating repo in $1..."
|
echo -n "::: Updating repo in $1..."
|
||||||
cd "${1}" || exit 1
|
cd "${directory}" || exit 1
|
||||||
git stash -q > /dev/null & spinner $!
|
git stash -q > /dev/null & spinner $!
|
||||||
git pull -q > /dev/null & spinner $!
|
git pull -q > /dev/null & spinner $!
|
||||||
echo " done!"
|
echo " done!"
|
||||||
|
@ -175,19 +179,21 @@ update_repo() {
|
||||||
getGitFiles() {
|
getGitFiles() {
|
||||||
# Setup git repos for directory and repository passed
|
# Setup git repos for directory and repository passed
|
||||||
# as arguments 1 and 2
|
# as arguments 1 and 2
|
||||||
|
local directory="${1}"
|
||||||
|
local remoteRepo="${2}"
|
||||||
echo ":::"
|
echo ":::"
|
||||||
echo "::: Checking for existing repository..."
|
echo "::: Checking for existing repository..."
|
||||||
if is_repo "${1}"; then
|
if is_repo "${directory}"; then
|
||||||
update_repo "${1}"
|
update_repo "${directory}"
|
||||||
else
|
else
|
||||||
make_repo "${1}" "${2}"
|
make_repo "${directory}" "${remoteRepo}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
find_IPv4_information() {
|
find_IPv4_information() {
|
||||||
# Find IP used to route to outside world
|
# Find IP used to route to outside world
|
||||||
IPv4dev=$(ip route get 8.8.8.8 | awk '{for(i=1;i<=NF;i++)if($i~/dev/)print $(i+1)}')
|
IPv4dev=$(ip route get 8.8.8.8 | awk '{for(i=1;i<=NF;i++)if($i~/dev/)print $(i+1)}')
|
||||||
IPv4_address=$(ip -o -f inet addr show dev "$IPv4dev" | awk '{print $4}' | awk 'END {print}')
|
IPV4_ADDRESS=$(ip -o -f inet addr show dev "$IPv4dev" | awk '{print $4}' | awk 'END {print}')
|
||||||
IPv4gw=$(ip route get 8.8.8.8 | awk '{print $3}')
|
IPv4gw=$(ip route get 8.8.8.8 | awk '{print $3}')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -269,8 +275,8 @@ chooseInterface() {
|
||||||
chooseInterfaceOptions=$("${chooseInterfaceCmd[@]}" "${interfacesArray[@]}" 2>&1 >/dev/tty)
|
chooseInterfaceOptions=$("${chooseInterfaceCmd[@]}" "${interfacesArray[@]}" 2>&1 >/dev/tty)
|
||||||
if [[ $? = 0 ]]; then
|
if [[ $? = 0 ]]; then
|
||||||
for desiredInterface in ${chooseInterfaceOptions}; do
|
for desiredInterface in ${chooseInterfaceOptions}; do
|
||||||
piholeInterface=${desiredInterface}
|
PIHOLE_INTERFACE=${desiredInterface}
|
||||||
echo "::: Using interface: $piholeInterface"
|
echo "::: Using interface: $PIHOLE_INTERFACE"
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
echo "::: Cancel selected, exiting...."
|
echo "::: Cancel selected, exiting...."
|
||||||
|
@ -280,8 +286,8 @@ chooseInterface() {
|
||||||
|
|
||||||
useIPv6dialog() {
|
useIPv6dialog() {
|
||||||
# Show the IPv6 address used for blocking
|
# Show the IPv6 address used for blocking
|
||||||
IPv6_address=$(ip -6 route get 2001:4860:4860::8888 | awk -F " " '{ for(i=1;i<=NF;i++) if ($i == "src") print $(i+1) }')
|
IPV6_ADDRESS=$(ip -6 route get 2001:4860:4860::8888 | awk -F " " '{ for(i=1;i<=NF;i++) if ($i == "src") print $(i+1) }')
|
||||||
whiptail --msgbox --backtitle "IPv6..." --title "IPv6 Supported" "$IPv6_address will be used to block ads." ${r} ${c}
|
whiptail --msgbox --backtitle "IPv6..." --title "IPv6 Supported" "$IPV6_ADDRESS will be used to block ads." ${r} ${c}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -309,8 +315,8 @@ use4andor6() {
|
||||||
if [[ ${useIPv6} ]]; then
|
if [[ ${useIPv6} ]]; then
|
||||||
useIPv6dialog
|
useIPv6dialog
|
||||||
fi
|
fi
|
||||||
echo "::: IPv4 address: ${IPv4_address}"
|
echo "::: IPv4 address: ${IPV4_ADDRESS}"
|
||||||
echo "::: IPv6 address: ${IPv6_address}"
|
echo "::: IPv6 address: ${IPV6_ADDRESS}"
|
||||||
if [ ! ${useIPv4} ] && [ ! ${useIPv6} ]; then
|
if [ ! ${useIPv4} ] && [ ! ${useIPv6} ]; then
|
||||||
echo "::: Cannot continue, neither IPv4 or IPv6 selected"
|
echo "::: Cannot continue, neither IPv4 or IPv6 selected"
|
||||||
echo "::: Exiting"
|
echo "::: Exiting"
|
||||||
|
@ -325,7 +331,7 @@ use4andor6() {
|
||||||
getStaticIPv4Settings() {
|
getStaticIPv4Settings() {
|
||||||
# Ask if the user wants to use DHCP settings as their static IP
|
# Ask if the user wants to use DHCP settings as their static IP
|
||||||
if (whiptail --backtitle "Calibrating network interface" --title "Static IP Address" --yesno "Do you want to use your current network settings as a static address?
|
if (whiptail --backtitle "Calibrating network interface" --title "Static IP Address" --yesno "Do you want to use your current network settings as a static address?
|
||||||
IP address: ${IPv4_address}
|
IP address: ${IPV4_ADDRESS}
|
||||||
Gateway: ${IPv4gw}" ${r} ${c}); then
|
Gateway: ${IPv4gw}" ${r} ${c}); then
|
||||||
# If they choose yes, let the user know that the IP address will not be available via DHCP and may cause a conflict.
|
# If they choose yes, let the user know that the IP address will not be available via DHCP and may cause a conflict.
|
||||||
whiptail --msgbox --backtitle "IP information" --title "FYI: IP Conflict" "It is possible your router could still try to assign this IP to a device, which would cause a conflict. But in most cases the router is smart enough to not do that.
|
whiptail --msgbox --backtitle "IP information" --title "FYI: IP Conflict" "It is possible your router could still try to assign this IP to a device, which would cause a conflict. But in most cases the router is smart enough to not do that.
|
||||||
|
@ -338,16 +344,16 @@ It is also possible to use a DHCP reservation, but if you are going to do that,
|
||||||
# Start a loop to let the user enter their information with the chance to go back and edit it if necessary
|
# Start a loop to let the user enter their information with the chance to go back and edit it if necessary
|
||||||
until [[ ${ipSettingsCorrect} = True ]]; do
|
until [[ ${ipSettingsCorrect} = True ]]; do
|
||||||
# Ask for the IPv4 address
|
# Ask for the IPv4 address
|
||||||
IPv4_address=$(whiptail --backtitle "Calibrating network interface" --title "IPv4 address" --inputbox "Enter your desired IPv4 address" ${r} ${c} "${IPv4_address}" 3>&1 1>&2 2>&3)
|
IPV4_ADDRESS=$(whiptail --backtitle "Calibrating network interface" --title "IPv4 address" --inputbox "Enter your desired IPv4 address" ${r} ${c} "${IPV4_ADDRESS}" 3>&1 1>&2 2>&3)
|
||||||
if [[ $? = 0 ]]; then
|
if [[ $? = 0 ]]; then
|
||||||
echo "::: Your static IPv4 address: ${IPv4_address}"
|
echo "::: Your static IPv4 address: ${IPV4_ADDRESS}"
|
||||||
# Ask for the gateway
|
# Ask for the gateway
|
||||||
IPv4gw=$(whiptail --backtitle "Calibrating network interface" --title "IPv4 gateway (router)" --inputbox "Enter your desired IPv4 default gateway" ${r} ${c} "${IPv4gw}" 3>&1 1>&2 2>&3)
|
IPv4gw=$(whiptail --backtitle "Calibrating network interface" --title "IPv4 gateway (router)" --inputbox "Enter your desired IPv4 default gateway" ${r} ${c} "${IPv4gw}" 3>&1 1>&2 2>&3)
|
||||||
if [[ $? = 0 ]]; then
|
if [[ $? = 0 ]]; then
|
||||||
echo "::: Your static IPv4 gateway: ${IPv4gw}"
|
echo "::: Your static IPv4 gateway: ${IPv4gw}"
|
||||||
# Give the user a chance to review their settings before moving on
|
# Give the user a chance to review their settings before moving on
|
||||||
if (whiptail --backtitle "Calibrating network interface" --title "Static IP Address" --yesno "Are these settings correct?
|
if (whiptail --backtitle "Calibrating network interface" --title "Static IP Address" --yesno "Are these settings correct?
|
||||||
IP address: ${IPv4_address}
|
IP address: ${IPV4_ADDRESS}
|
||||||
Gateway: ${IPv4gw}" ${r} ${c}); then
|
Gateway: ${IPv4gw}" ${r} ${c}); then
|
||||||
# After that's done, the loop ends and we move on
|
# After that's done, the loop ends and we move on
|
||||||
ipSettingsCorrect=True
|
ipSettingsCorrect=True
|
||||||
|
@ -374,8 +380,8 @@ It is also possible to use a DHCP reservation, but if you are going to do that,
|
||||||
|
|
||||||
setDHCPCD() {
|
setDHCPCD() {
|
||||||
# Append these lines to dhcpcd.conf to enable a static IP
|
# Append these lines to dhcpcd.conf to enable a static IP
|
||||||
echo "## interface ${piholeInterface}
|
echo "## interface ${PIHOLE_INTERFACE}
|
||||||
static ip_address=${IPv4_address}
|
static ip_address=${IPV4_ADDRESS}
|
||||||
static routers=${IPv4gw}
|
static routers=${IPv4gw}
|
||||||
static domain_name_servers=${IPv4gw}" | tee -a /etc/dhcpcd.conf >/dev/null
|
static domain_name_servers=${IPv4gw}" | tee -a /etc/dhcpcd.conf >/dev/null
|
||||||
}
|
}
|
||||||
|
@ -386,45 +392,45 @@ setStaticIPv4() {
|
||||||
local CIDR
|
local CIDR
|
||||||
if [[ -f /etc/dhcpcd.conf ]]; then
|
if [[ -f /etc/dhcpcd.conf ]]; then
|
||||||
# Debian Family
|
# Debian Family
|
||||||
if grep -q "${IPv4_address}" /etc/dhcpcd.conf; then
|
if grep -q "${IPV4_ADDRESS}" /etc/dhcpcd.conf; then
|
||||||
echo "::: Static IP already configured"
|
echo "::: Static IP already configured"
|
||||||
else
|
else
|
||||||
setDHCPCD
|
setDHCPCD
|
||||||
ip addr replace dev "${piholeInterface}" "${IPv4_address}"
|
ip addr replace dev "${PIHOLE_INTERFACE}" "${IPV4_ADDRESS}"
|
||||||
echo ":::"
|
echo ":::"
|
||||||
echo "::: Setting IP to ${IPv4_address}. You may need to restart after the install is complete."
|
echo "::: Setting IP to ${IPV4_ADDRESS}. You may need to restart after the install is complete."
|
||||||
echo ":::"
|
echo ":::"
|
||||||
fi
|
fi
|
||||||
elif [[ -f /etc/sysconfig/network-scripts/ifcfg-${piholeInterface} ]];then
|
elif [[ -f /etc/sysconfig/network-scripts/ifcfg-${PIHOLE_INTERFACE} ]];then
|
||||||
# Fedora Family
|
# Fedora Family
|
||||||
IFCFG_FILE=/etc/sysconfig/network-scripts/ifcfg-${piholeInterface}
|
IFCFG_FILE=/etc/sysconfig/network-scripts/ifcfg-${PIHOLE_INTERFACE}
|
||||||
if grep -q "${IPv4_address}" "${IFCFG_FILE}"; then
|
if grep -q "${IPV4_ADDRESS}" "${IFCFG_FILE}"; then
|
||||||
echo "::: Static IP already configured"
|
echo "::: Static IP already configured"
|
||||||
else
|
else
|
||||||
IPADDR=$(echo "${IPv4_address}" | cut -f1 -d/)
|
IPADDR=$(echo "${IPV4_ADDRESS}" | cut -f1 -d/)
|
||||||
CIDR=$(echo "${IPv4_address}" | cut -f2 -d/)
|
CIDR=$(echo "${IPV4_ADDRESS}" | cut -f2 -d/)
|
||||||
# Backup existing interface configuration:
|
# Backup existing interface configuration:
|
||||||
cp "${IFCFG_FILE}" "${IFCFG_FILE}".pihole.orig
|
cp "${IFCFG_FILE}" "${IFCFG_FILE}".pihole.orig
|
||||||
# Build Interface configuration file:
|
# Build Interface configuration file:
|
||||||
{
|
{
|
||||||
echo "# Configured via Pi-Hole installer"
|
echo "# Configured via Pi-Hole installer"
|
||||||
echo "DEVICE=$piholeInterface"
|
echo "DEVICE=$PIHOLE_INTERFACE"
|
||||||
echo "BOOTPROTO=none"
|
echo "BOOTPROTO=none"
|
||||||
echo "ONBOOT=yes"
|
echo "ONBOOT=yes"
|
||||||
echo "IPADDR=$IPADDR"
|
echo "IPADDR=$IPADDR"
|
||||||
echo "PREFIX=$CIDR"
|
echo "PREFIX=$CIDR"
|
||||||
echo "GATEWAY=$IPv4gw"
|
echo "GATEWAY=$IPv4gw"
|
||||||
echo "DNS1=$piholeDNS1"
|
echo "DNS1=$PIHOLE_DNS_1"
|
||||||
echo "DNS2=$piholeDNS2"
|
echo "DNS2=$PIHOLE_DNS_2"
|
||||||
echo "USERCTL=no"
|
echo "USERCTL=no"
|
||||||
}>> "${IFCFG_FILE}"
|
}>> "${IFCFG_FILE}"
|
||||||
ip addr replace dev "${piholeInterface}" "${IPv4_address}"
|
ip addr replace dev "${PIHOLE_INTERFACE}" "${IPV4_ADDRESS}"
|
||||||
if [ -x "$(command -v nmcli)" ];then
|
if [ -x "$(command -v nmcli)" ];then
|
||||||
# Tell NetworkManager to read our new sysconfig file
|
# Tell NetworkManager to read our new sysconfig file
|
||||||
nmcli con load "${IFCFG_FILE}" > /dev/null
|
nmcli con load "${IFCFG_FILE}" > /dev/null
|
||||||
fi
|
fi
|
||||||
echo ":::"
|
echo ":::"
|
||||||
echo "::: Setting IP to ${IPv4_address}. You may need to restart after the install is complete."
|
echo "::: Setting IP to ${IPV4_ADDRESS}. You may need to restart after the install is complete."
|
||||||
echo ":::"
|
echo ":::"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
@ -462,70 +468,70 @@ setDNS() {
|
||||||
case ${DNSchoices} in
|
case ${DNSchoices} in
|
||||||
Google)
|
Google)
|
||||||
echo "::: Using Google DNS servers."
|
echo "::: Using Google DNS servers."
|
||||||
piholeDNS1="8.8.8.8"
|
PIHOLE_DNS_1="8.8.8.8"
|
||||||
piholeDNS2="8.8.4.4"
|
PIHOLE_DNS_2="8.8.4.4"
|
||||||
;;
|
;;
|
||||||
OpenDNS)
|
OpenDNS)
|
||||||
echo "::: Using OpenDNS servers."
|
echo "::: Using OpenDNS servers."
|
||||||
piholeDNS1="208.67.222.222"
|
PIHOLE_DNS_1="208.67.222.222"
|
||||||
piholeDNS2="208.67.220.220"
|
PIHOLE_DNS_2="208.67.220.220"
|
||||||
;;
|
;;
|
||||||
Level3)
|
Level3)
|
||||||
echo "::: Using Level3 servers."
|
echo "::: Using Level3 servers."
|
||||||
piholeDNS1="4.2.2.1"
|
PIHOLE_DNS_1="4.2.2.1"
|
||||||
piholeDNS2="4.2.2.2"
|
PIHOLE_DNS_2="4.2.2.2"
|
||||||
;;
|
;;
|
||||||
Norton)
|
Norton)
|
||||||
echo "::: Using Norton ConnectSafe servers."
|
echo "::: Using Norton ConnectSafe servers."
|
||||||
piholeDNS1="199.85.126.10"
|
PIHOLE_DNS_1="199.85.126.10"
|
||||||
piholeDNS2="199.85.127.10"
|
PIHOLE_DNS_2="199.85.127.10"
|
||||||
;;
|
;;
|
||||||
Comodo)
|
Comodo)
|
||||||
echo "::: Using Comodo Secure servers."
|
echo "::: Using Comodo Secure servers."
|
||||||
piholeDNS1="8.26.56.26"
|
PIHOLE_DNS_1="8.26.56.26"
|
||||||
piholeDNS2="8.20.247.20"
|
PIHOLE_DNS_2="8.20.247.20"
|
||||||
;;
|
;;
|
||||||
Custom)
|
Custom)
|
||||||
until [[ ${DNSSettingsCorrect} = True ]]; do
|
until [[ ${DNSSettingsCorrect} = True ]]; do
|
||||||
strInvalid="Invalid"
|
strInvalid="Invalid"
|
||||||
if [ ! ${piholeDNS1} ]; then
|
if [ ! ${PIHOLE_DNS_1} ]; then
|
||||||
if [ ! ${piholeDNS2} ]; then
|
if [ ! ${PIHOLE_DNS_2} ]; then
|
||||||
prePopulate=""
|
prePopulate=""
|
||||||
else
|
else
|
||||||
prePopulate=", ${piholeDNS2}"
|
prePopulate=", ${PIHOLE_DNS_2}"
|
||||||
fi
|
fi
|
||||||
elif [ ${piholeDNS1} ] && [ ! ${piholeDNS2} ]; then
|
elif [ ${PIHOLE_DNS_1} ] && [ ! ${PIHOLE_DNS_2} ]; then
|
||||||
prePopulate="${piholeDNS1}"
|
prePopulate="${PIHOLE_DNS_1}"
|
||||||
elif [ ${piholeDNS1} ] && [ ${piholeDNS2} ]; then
|
elif [ ${PIHOLE_DNS_1} ] && [ ${PIHOLE_DNS_2} ]; then
|
||||||
prePopulate="${piholeDNS1}, ${piholeDNS2}"
|
prePopulate="${PIHOLE_DNS_1}, ${PIHOLE_DNS_2}"
|
||||||
fi
|
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)
|
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)
|
||||||
|
|
||||||
if [[ $? = 0 ]]; then
|
if [[ $? = 0 ]]; then
|
||||||
piholeDNS1=$(echo "${piholeDNS}" | sed 's/[, \t]\+/,/g' | awk -F, '{print$1}')
|
PIHOLE_DNS_1=$(echo "${piholeDNS}" | sed 's/[, \t]\+/,/g' | awk -F, '{print$1}')
|
||||||
piholeDNS2=$(echo "${piholeDNS}" | sed 's/[, \t]\+/,/g' | awk -F, '{print$2}')
|
PIHOLE_DNS_2=$(echo "${piholeDNS}" | sed 's/[, \t]\+/,/g' | awk -F, '{print$2}')
|
||||||
if ! valid_ip "${piholeDNS1}" || [ ! "${piholeDNS1}" ]; then
|
if ! valid_ip "${PIHOLE_DNS_1}" || [ ! "${PIHOLE_DNS_1}" ]; then
|
||||||
piholeDNS1=${strInvalid}
|
PIHOLE_DNS_1=${strInvalid}
|
||||||
fi
|
fi
|
||||||
if ! valid_ip "${piholeDNS2}" && [ "${piholeDNS2}" ]; then
|
if ! valid_ip "${PIHOLE_DNS_2}" && [ "${PIHOLE_DNS_2}" ]; then
|
||||||
piholeDNS2=${strInvalid}
|
PIHOLE_DNS_2=${strInvalid}
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "::: Cancel selected, exiting...."
|
echo "::: Cancel selected, exiting...."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if [[ ${piholeDNS1} == "${strInvalid}" ]] || [[ ${piholeDNS2} == "${strInvalid}" ]]; then
|
if [[ ${PIHOLE_DNS_1} == "${strInvalid}" ]] || [[ ${PIHOLE_DNS_2} == "${strInvalid}" ]]; 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: $piholeDNS1\n DNS Server 2: ${piholeDNS2}" ${r} ${c}
|
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 [[ ${piholeDNS1} == "${strInvalid}" ]]; then
|
if [[ ${PIHOLE_DNS_1} == "${strInvalid}" ]]; then
|
||||||
piholeDNS1=""
|
PIHOLE_DNS_1=""
|
||||||
fi
|
fi
|
||||||
if [[ ${piholeDNS2} == "${strInvalid}" ]]; then
|
if [[ ${PIHOLE_DNS_2} == "${strInvalid}" ]]; then
|
||||||
piholeDNS2=""
|
PIHOLE_DNS_2=""
|
||||||
fi
|
fi
|
||||||
DNSSettingsCorrect=False
|
DNSSettingsCorrect=False
|
||||||
else
|
else
|
||||||
if (whiptail --backtitle "Specify Upstream DNS Provider(s)" --title "Upstream DNS Provider(s)" --yesno "Are these settings correct?\n DNS Server 1: $piholeDNS1\n DNS Server 2: ${piholeDNS2}" ${r} ${c}); then
|
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
|
DNSSettingsCorrect=True
|
||||||
else
|
else
|
||||||
# If the settings are wrong, the loop continues
|
# If the settings are wrong, the loop continues
|
||||||
|
@ -541,6 +547,28 @@ setDNS() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setLogging() {
|
||||||
|
local LogToggleCommand
|
||||||
|
local LogChooseOptions
|
||||||
|
local LogChoices
|
||||||
|
|
||||||
|
LogToggleCommand=(whiptail --separate-output --radiolist "Do you want to log queries?\n (Disabling will render graphs on the Admin page useless):" ${r} ${c} 6)
|
||||||
|
LogChooseOptions=("On (Reccomended)" "" on
|
||||||
|
Off "" off)
|
||||||
|
LogChoices=$("${LogToggleCommand[@]}" "${LogChooseOptions[@]}" 2>&1 >/dev/tty) || (echo "::: Cancel selected. Exiting..." && exit 1)
|
||||||
|
case ${LogChoices} in
|
||||||
|
"On (Recommended)")
|
||||||
|
echo "::: Logging On."
|
||||||
|
QUERY_LOGGING=true
|
||||||
|
;;
|
||||||
|
Off)
|
||||||
|
echo "::: Logging Off."
|
||||||
|
QUERY_LOGGING=false
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
version_check_dnsmasq() {
|
version_check_dnsmasq() {
|
||||||
# Check if /etc/dnsmasq.conf is from pihole. If so replace with an original and install new in .d directory
|
# Check if /etc/dnsmasq.conf is from pihole. If so replace with an original and install new in .d directory
|
||||||
local dnsmasq_conf="/etc/dnsmasq.conf"
|
local dnsmasq_conf="/etc/dnsmasq.conf"
|
||||||
|
@ -572,14 +600,14 @@ version_check_dnsmasq() {
|
||||||
echo -n "::: Copying 01-pihole.conf to /etc/dnsmasq.d/01-pihole.conf..."
|
echo -n "::: Copying 01-pihole.conf to /etc/dnsmasq.d/01-pihole.conf..."
|
||||||
cp ${dnsmasq_pihole_01_snippet} ${dnsmasq_pihole_01_location}
|
cp ${dnsmasq_pihole_01_snippet} ${dnsmasq_pihole_01_location}
|
||||||
echo " done."
|
echo " done."
|
||||||
sed -i "s/@INT@/$piholeInterface/" ${dnsmasq_pihole_01_location}
|
sed -i "s/@INT@/$PIHOLE_INTERFACE/" ${dnsmasq_pihole_01_location}
|
||||||
if [[ "${piholeDNS1}" != "" ]]; then
|
if [[ "${PIHOLE_DNS_1}" != "" ]]; then
|
||||||
sed -i "s/@DNS1@/$piholeDNS1/" ${dnsmasq_pihole_01_location}
|
sed -i "s/@DNS1@/$PIHOLE_DNS_1/" ${dnsmasq_pihole_01_location}
|
||||||
else
|
else
|
||||||
sed -i '/^server=@DNS1@/d' ${dnsmasq_pihole_01_location}
|
sed -i '/^server=@DNS1@/d' ${dnsmasq_pihole_01_location}
|
||||||
fi
|
fi
|
||||||
if [[ "${piholeDNS2}" != "" ]]; then
|
if [[ "${PIHOLE_DNS_2}" != "" ]]; then
|
||||||
sed -i "s/@DNS2@/$piholeDNS2/" ${dnsmasq_pihole_01_location}
|
sed -i "s/@DNS2@/$PIHOLE_DNS_2/" ${dnsmasq_pihole_01_location}
|
||||||
else
|
else
|
||||||
sed -i '/^server=@DNS2@/d' ${dnsmasq_pihole_01_location}
|
sed -i '/^server=@DNS2@/d' ${dnsmasq_pihole_01_location}
|
||||||
fi
|
fi
|
||||||
|
@ -593,16 +621,16 @@ version_check_dnsmasq() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#Replace IPv4 and IPv6 tokens in 01-pihole.conf for pi.hole resolution.
|
#Replace IPv4 and IPv6 tokens in 01-pihole.conf for pi.hole resolution.
|
||||||
if [[ "${IPv4_address}" != "" ]]; then
|
if [[ "${IPV4_ADDRESS}" != "" ]]; then
|
||||||
tmp=${IPv4_address%/*}
|
tmp=${IPV4_ADDRESS%/*}
|
||||||
sed -i "s/@IPv4@/$tmp/" ${dnsmasq_pihole_01_location}
|
sed -i "s/@IPv4@/$tmp/" ${dnsmasq_pihole_01_location}
|
||||||
else
|
else
|
||||||
sed -i '/^address=\/pi.hole\/@IPv4@/d' ${dnsmasq_pihole_01_location}
|
sed -i '/^address=\/pi.hole\/@IPv4@/d' ${dnsmasq_pihole_01_location}
|
||||||
sed -i '/^address=\/@HOSTNAME@\/@IPv4@/d' ${dnsmasq_pihole_01_location}
|
sed -i '/^address=\/@HOSTNAME@\/@IPv4@/d' ${dnsmasq_pihole_01_location}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${IPv6_address}" != "" ]]; then
|
if [[ "${IPV6_ADDRESS}" != "" ]]; then
|
||||||
sed -i "s/@IPv6@/$IPv6_address/" ${dnsmasq_pihole_01_location}
|
sed -i "s/@IPv6@/$IPV6_ADDRESS/" ${dnsmasq_pihole_01_location}
|
||||||
else
|
else
|
||||||
sed -i '/^address=\/pi.hole\/@IPv6@/d' ${dnsmasq_pihole_01_location}
|
sed -i '/^address=\/pi.hole\/@IPv6@/d' ${dnsmasq_pihole_01_location}
|
||||||
sed -i '/^address=\/@HOSTNAME@\/@IPv6@/d' ${dnsmasq_pihole_01_location}
|
sed -i '/^address=\/@HOSTNAME@\/@IPv6@/d' ${dnsmasq_pihole_01_location}
|
||||||
|
@ -615,6 +643,14 @@ version_check_dnsmasq() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sed -i 's/^#conf-dir=\/etc\/dnsmasq.d$/conf-dir=\/etc\/dnsmasq.d/' ${dnsmasq_conf}
|
sed -i 's/^#conf-dir=\/etc\/dnsmasq.d$/conf-dir=\/etc\/dnsmasq.d/' ${dnsmasq_conf}
|
||||||
|
|
||||||
|
if [[ "${QUERY_LOGGING}" == false ]] ; then
|
||||||
|
#Disable Logging
|
||||||
|
sed -i 's/^log-queries/#log-queries/' ${dnsmasq_pihole_01_location}
|
||||||
|
else
|
||||||
|
#Enable Logging
|
||||||
|
sed -i 's/^#log-queries/log-queries/' ${dnsmasq_pihole_01_location}
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_legacy_scripts() {
|
remove_legacy_scripts() {
|
||||||
|
@ -644,13 +680,13 @@ installScripts() {
|
||||||
readonly install_dir="/opt/pihole/"
|
readonly install_dir="/opt/pihole/"
|
||||||
|
|
||||||
echo ":::"
|
echo ":::"
|
||||||
echo -n "::: Installing scripts to ${PI_HOLE_LOCAL_REPO}..."
|
echo -n "::: Installing scripts from ${PI_HOLE_LOCAL_REPO}..."
|
||||||
|
|
||||||
# Clear out script files from Pi-hole scripts directory.
|
# Clear out script files from Pi-hole scripts directory.
|
||||||
clean_existing "${install_dir}" "${PI_HOLE_FILES}"
|
clean_existing "${install_dir}" "${PI_HOLE_FILES}"
|
||||||
|
|
||||||
# Install files from local core repository
|
# Install files from local core repository
|
||||||
if [[ $(is_repo "${PI_HOLE_LOCAL_REPO}") ]]; then
|
if is_repo "${PI_HOLE_LOCAL_REPO}"; then
|
||||||
cd "${PI_HOLE_LOCAL_REPO}"
|
cd "${PI_HOLE_LOCAL_REPO}"
|
||||||
install -o "${USER}" -Dm755 -t /opt/pihole/ gravity.sh
|
install -o "${USER}" -Dm755 -t /opt/pihole/ gravity.sh
|
||||||
install -o "${USER}" -Dm755 -t /opt/pihole/ ./advanced/Scripts/*.sh
|
install -o "${USER}" -Dm755 -t /opt/pihole/ ./advanced/Scripts/*.sh
|
||||||
|
@ -854,11 +890,12 @@ finalExports() {
|
||||||
rm ${setupVars}
|
rm ${setupVars}
|
||||||
fi
|
fi
|
||||||
{
|
{
|
||||||
echo "piholeInterface=${piholeInterface}"
|
echo "PIHOLE_INTERFACE=${PIHOLE_INTERFACE}"
|
||||||
echo "IPv4_address=${IPv4_address}"
|
echo "IPV4_ADDRESS=${IPV4_ADDRESS}"
|
||||||
echo "IPv6_address=${IPv6_address}"
|
echo "IPV6_ADDRESS=${IPV6_ADDRESS}"
|
||||||
echo "piholeDNS1=${piholeDNS1}"
|
echo "PIHOLE_DNS_1=${PIHOLE_DNS_1}"
|
||||||
echo "piholeDNS2=${piholeDNS2}"
|
echo "PIHOLE_DNS_2=${PIHOLE_DNS_2}"
|
||||||
|
echo "QUERY_LOGGING=${QUERY_LOGGING}"
|
||||||
}>> "${setupVars}"
|
}>> "${setupVars}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -887,10 +924,24 @@ installPihole() {
|
||||||
runGravity
|
runGravity
|
||||||
}
|
}
|
||||||
|
|
||||||
updatePihole() {
|
accountForRefactor() {
|
||||||
|
# At some point in the future this list can be pruned, for now we'll need it to ensure updates don't break.
|
||||||
|
|
||||||
# Refactoring of install script has changed the name of a couple of variables. Sort them out here.
|
# Refactoring of install script has changed the name of a couple of variables. Sort them out here.
|
||||||
sed -i 's/IPv4addr/IPv4_address/g' ${setupVars}
|
sed -i 's/IPv4addr/IPv4_address/g' ${setupVars}
|
||||||
sed -i 's/piholeIPv6/IPv6_address/g' ${setupVars}
|
sed -i 's/piholeIPv6/IPv6_address/g' ${setupVars}
|
||||||
|
|
||||||
|
# Account for renaming of global variables.
|
||||||
|
sed -i 's/piholeInterface/PIHOLE_INTERFACE/g' ${setupVars}
|
||||||
|
sed -i 's/IPv4_address/IPV4_ADDRESS/g' ${setupVars}
|
||||||
|
sed -i 's/IPv6_address/IPV6_ADDRESS/g' ${setupVars}
|
||||||
|
sed -i 's/piholeDNS1/PIHOLE_DNS_1/g' ${setupVars}
|
||||||
|
sed -i 's/piholeDNS2/PIHOLE_DNS_2/g' ${setupVars}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
updatePihole() {
|
||||||
|
accountForRefactor
|
||||||
# Source ${setupVars} for use in the rest of the functions.
|
# Source ${setupVars} for use in the rest of the functions.
|
||||||
. ${setupVars}
|
. ${setupVars}
|
||||||
# Install base files and web interface
|
# Install base files and web interface
|
||||||
|
@ -901,6 +952,7 @@ updatePihole() {
|
||||||
installPiholeWeb
|
installPiholeWeb
|
||||||
installCron
|
installCron
|
||||||
configureFirewall
|
configureFirewall
|
||||||
|
finalExports #re-export setupVars.conf to account for any new vars added in new versions
|
||||||
runGravity
|
runGravity
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -928,13 +980,13 @@ displayFinalMessage() {
|
||||||
# Final completion message to user
|
# Final completion message to user
|
||||||
whiptail --msgbox --backtitle "Make it so." --title "Installation Complete!" "Configure your devices to use the Pi-hole as their DNS server using:
|
whiptail --msgbox --backtitle "Make it so." --title "Installation Complete!" "Configure your devices to use the Pi-hole as their DNS server using:
|
||||||
|
|
||||||
IPv4: ${IPv4_address%/*}
|
IPv4: ${IPV4_ADDRESS%/*}
|
||||||
IPv6: ${IPv6_address}
|
IPv6: ${IPV6_ADDRESS}
|
||||||
|
|
||||||
If you set a new IP address, you should restart the Pi.
|
If you set a new IP address, you should restart the Pi.
|
||||||
|
|
||||||
The install log is in /etc/pihole.
|
The install log is in /etc/pihole.
|
||||||
View the web interface at http://pi.hole/admin or http://${IPv4_address%/*}/admin" ${r} ${c}
|
View the web interface at http://pi.hole/admin or http://${IPV4_ADDRESS%/*}/admin" ${r} ${c}
|
||||||
}
|
}
|
||||||
|
|
||||||
update_dialogs() {
|
update_dialogs() {
|
||||||
|
@ -1038,6 +1090,12 @@ main() {
|
||||||
use4andor6
|
use4andor6
|
||||||
# Decide what upstream DNS Servers to use
|
# Decide what upstream DNS Servers to use
|
||||||
setDNS
|
setDNS
|
||||||
|
# Let the user decide if they want query logging enabled...
|
||||||
|
setLogging
|
||||||
|
|
||||||
|
# Install packages used by the Pi-hole
|
||||||
|
install_dependent_packages PIHOLE_DEPS[@]
|
||||||
|
|
||||||
# Install and log everything to a file
|
# Install and log everything to a file
|
||||||
installPihole | tee ${tmpLog}
|
installPihole | tee ${tmpLog}
|
||||||
else
|
else
|
||||||
|
@ -1062,8 +1120,8 @@ main() {
|
||||||
echo ":::"
|
echo ":::"
|
||||||
if [[ "${useUpdateVars}" == false ]]; then
|
if [[ "${useUpdateVars}" == false ]]; then
|
||||||
echo "::: Installation Complete! Configure your devices to use the Pi-hole as their DNS server using:"
|
echo "::: Installation Complete! Configure your devices to use the Pi-hole as their DNS server using:"
|
||||||
echo "::: ${IPv4_address%/*}"
|
echo "::: ${IPV4_ADDRESS%/*}"
|
||||||
echo "::: ${IPv6_address}"
|
echo "::: ${IPV6_ADDRESS}"
|
||||||
echo ":::"
|
echo ":::"
|
||||||
echo "::: If you set a new IP address, you should restart the Pi."
|
echo "::: If you set a new IP address, you should restart the Pi."
|
||||||
else
|
else
|
||||||
|
@ -1072,7 +1130,7 @@ main() {
|
||||||
|
|
||||||
echo ":::"
|
echo ":::"
|
||||||
echo "::: The install log is located at: /etc/pihole/install.log"
|
echo "::: The install log is located at: /etc/pihole/install.log"
|
||||||
echo "::: View the web interface at http://pi.hole/admin or http://${IPv4_address%/*}/admin"
|
echo "::: View the web interface at http://pi.hole/admin or http://${IPV4_ADDRESS%/*}/admin"
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|
16
gravity.sh
16
gravity.sh
|
@ -44,7 +44,7 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#Remove the /* from the end of the IPv4addr.
|
#Remove the /* from the end of the IPv4addr.
|
||||||
IPv4_address=${IPv4_address%/*}
|
IPV4_ADDRESS=${IPV4_ADDRESS%/*}
|
||||||
|
|
||||||
# Variables for various stages of downloading and formatting the list
|
# Variables for various stages of downloading and formatting the list
|
||||||
basename=pihole
|
basename=pihole
|
||||||
|
@ -242,22 +242,22 @@ gravity_hostFormat() {
|
||||||
# Format domain list as "192.168.x.x domain.com"
|
# Format domain list as "192.168.x.x domain.com"
|
||||||
echo "::: Formatting domains into a HOSTS file..."
|
echo "::: Formatting domains into a HOSTS file..."
|
||||||
# Check vars from setupVars.conf to see if we're using IPv4, IPv6, Or both.
|
# Check vars from setupVars.conf to see if we're using IPv4, IPv6, Or both.
|
||||||
if [[ -n "${IPv4_address}" && -n "${IPv6_address}" ]];then
|
if [[ -n "${IPV4_ADDRESS}" && -n "${IPV6_ADDRESS}" ]];then
|
||||||
|
|
||||||
# Both IPv4 and IPv6
|
# Both IPv4 and IPv6
|
||||||
cat ${piholeDir}/${eventHorizon} | awk -v ipv4addr="$IPv4_address" -v ipv6addr="$IPv6_address" '{sub(/\r$/,""); print ipv4addr" "$0"\n"ipv6addr" "$0}' >> ${piholeDir}/${accretionDisc}
|
cat ${piholeDir}/${eventHorizon} | awk -v ipv4addr="$IPV4_ADDRESS" -v ipv6addr="$IPV6_ADDRESS" '{sub(/\r$/,""); print ipv4addr" "$0"\n"ipv6addr" "$0}' >> ${piholeDir}/${accretionDisc}
|
||||||
|
|
||||||
elif [[ -n "${IPv4_address}" && -z "${IPv6_address}" ]];then
|
elif [[ -n "${IPV4_ADDRESS}" && -z "${IPV6_ADDRESS}" ]];then
|
||||||
|
|
||||||
# Only IPv4
|
# Only IPv4
|
||||||
cat ${piholeDir}/${eventHorizon} | awk -v ipv4addr="$IPv4_address" '{sub(/\r$/,""); print ipv4addr" "$0}' >> ${piholeDir}/${accretionDisc}
|
cat ${piholeDir}/${eventHorizon} | awk -v ipv4addr="$IPV4_ADDRESS" '{sub(/\r$/,""); print ipv4addr" "$0}' >> ${piholeDir}/${accretionDisc}
|
||||||
|
|
||||||
elif [[ -z "${IPv4_address}" && -n "${IPv6_address}" ]];then
|
elif [[ -z "${IPV4_ADDRESS}" && -n "${IPV6_ADDRESS}" ]];then
|
||||||
|
|
||||||
# Only IPv6
|
# Only IPv6
|
||||||
cat ${piholeDir}/${eventHorizon} | awk -v ipv6addr="$IPv6_address" '{sub(/\r$/,""); print ipv6addr" "$0}' >> ${piholeDir}/${accretionDisc}
|
cat ${piholeDir}/${eventHorizon} | awk -v ipv6addr="$IPV6_ADDRESS" '{sub(/\r$/,""); print ipv6addr" "$0}' >> ${piholeDir}/${accretionDisc}
|
||||||
|
|
||||||
elif [[ -z "${IPv4_address}" && -z "${IPv6_address}" ]];then
|
elif [[ -z "${IPV4_ADDRESS}" && -z "${IPV6_ADDRESS}" ]];then
|
||||||
echo "::: No IP Values found! Please run 'pihole -r' and choose reconfigure to restore values"
|
echo "::: No IP Values found! Please run 'pihole -r' and choose reconfigure to restore values"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
23
pihole
23
pihole
|
@ -125,6 +125,27 @@ piholeEnable() {
|
||||||
restartDNS
|
restartDNS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
piholeLogging() {
|
||||||
|
shift
|
||||||
|
|
||||||
|
if [[ "${1}" == "off" ]] ; then
|
||||||
|
#Disable Logging
|
||||||
|
sed -i 's/^log-queries/#log-queries/' /etc/dnsmasq.d/01-pihole.conf
|
||||||
|
sed -i 's/^QUERY_LOGGING=true/QUERY_LOGGING=false/' /etc/pihole/setupVars.conf
|
||||||
|
pihole -f
|
||||||
|
echo "::: Logging has been disabled!"
|
||||||
|
elif [[ "${1}" == "on" ]] ; then
|
||||||
|
#Enable logging
|
||||||
|
sed -i 's/^#log-queries/log-queries/' /etc/dnsmasq.d/01-pihole.conf
|
||||||
|
sed -i 's/^QUERY_LOGGING=false/QUERY_LOGGING=true/' /etc/pihole/setupVars.conf
|
||||||
|
echo "::: Logging has been enabled!"
|
||||||
|
else
|
||||||
|
echo "::: Invalid option passed, please pass 'on' or 'off'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
restartDNS
|
||||||
|
}
|
||||||
|
|
||||||
piholeStatus() {
|
piholeStatus() {
|
||||||
if [[ $(cat /etc/dnsmasq.d/01-pihole.conf | grep "#addn-hosts=/") ]] ; then
|
if [[ $(cat /etc/dnsmasq.d/01-pihole.conf | grep "#addn-hosts=/") ]] ; then
|
||||||
#list is commented out
|
#list is commented out
|
||||||
|
@ -173,6 +194,7 @@ helpFunc() {
|
||||||
::: -h, help Show this help dialog
|
::: -h, help Show this help dialog
|
||||||
::: -v, version Show current versions
|
::: -v, version Show current versions
|
||||||
::: -q, query Query the adlists for a specific domain
|
::: -q, query Query the adlists for a specific domain
|
||||||
|
::: -l, logging Enable or Disable logging (pass 'on' or 'off')
|
||||||
::: uninstall Uninstall Pi-Hole from your system :(!
|
::: uninstall Uninstall Pi-Hole from your system :(!
|
||||||
::: status Is Pi-Hole Enabled or Disabled
|
::: status Is Pi-Hole Enabled or Disabled
|
||||||
::: enable Enable Pi-Hole DNS Blocking
|
::: enable Enable Pi-Hole DNS Blocking
|
||||||
|
@ -200,6 +222,7 @@ case "${1}" in
|
||||||
"-h" | "help" ) helpFunc;;
|
"-h" | "help" ) helpFunc;;
|
||||||
"-v" | "version" ) versionFunc "$@";;
|
"-v" | "version" ) versionFunc "$@";;
|
||||||
"-q" | "query" ) queryFunc "$@";;
|
"-q" | "query" ) queryFunc "$@";;
|
||||||
|
"-l" | "logging" ) piholeLogging "$@";;
|
||||||
"uninstall" ) uninstallFunc;;
|
"uninstall" ) uninstallFunc;;
|
||||||
"enable" ) piholeEnable 1;;
|
"enable" ) piholeEnable 1;;
|
||||||
"disable" ) piholeEnable 0;;
|
"disable" ) piholeEnable 0;;
|
||||||
|
|
Loading…
Reference in a new issue