Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/pi-hole/pi-hole.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Warner <me@adamwarner.co.uk>2022-09-24 16:00:22 +0300
committerGitHub <noreply@github.com>2022-09-24 16:00:22 +0300
commit1c1407e08391dbc834aec161332f09d5af75d561 (patch)
treeb6fd64055df1a0e74719df24e9c685a2f1309df7
parent9463c3c69f471d4355a73a2b93ef48f6f14cd368 (diff)
parent2ff1fa1b85f5dd33aa8ac2b2de019be6ffab7732 (diff)
Use utils.sh in install script (#4872)
-rw-r--r--advanced/01-pihole.conf7
-rwxr-xr-xautomated install/basic-install.sh82
-rw-r--r--test/test_any_automated_install.py1
3 files changed, 42 insertions, 48 deletions
diff --git a/advanced/01-pihole.conf b/advanced/01-pihole.conf
index 1fb34905..677910f6 100644
--- a/advanced/01-pihole.conf
+++ b/advanced/01-pihole.conf
@@ -29,13 +29,6 @@ bogus-priv
no-resolv
-server=@DNS1@
-server=@DNS2@
-
-interface=@INT@
-
-cache-size=@CACHE_SIZE@
-
log-queries
log-facility=/var/log/pihole/pihole.log
diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh
index 337a3042..c0abae8b 100755
--- a/automated install/basic-install.sh
+++ b/automated install/basic-install.sh
@@ -83,6 +83,7 @@ PI_HOLE_INSTALL_DIR="/opt/pihole"
PI_HOLE_CONFIG_DIR="/etc/pihole"
PI_HOLE_BIN_DIR="/usr/local/bin"
PI_HOLE_404_DIR="${webroot}/pihole"
+FTL_CONFIG_FILE="${PI_HOLE_CONFIG_DIR}/pihole-FTL.conf"
if [ -z "$useUpdateVars" ]; then
useUpdateVars=false
fi
@@ -1264,35 +1265,30 @@ version_check_dnsmasq() {
# Copy the new Pi-hole DNS config file into the dnsmasq.d directory
install -D -m 644 -T "${dnsmasq_pihole_01_source}" "${dnsmasq_pihole_01_target}"
printf "%b %b Installed %s\n" "${OVER}" "${TICK}" "${dnsmasq_pihole_01_target}"
- # Replace our placeholder values with the GLOBAL DNS variables that we populated earlier
- # First, swap in the interface to listen on,
- sed -i "s/@INT@/$PIHOLE_INTERFACE/" "${dnsmasq_pihole_01_target}"
+ # Add settings with the GLOBAL DNS variables that we populated earlier
+ # First, set the interface to listen on
+ addOrEditKeyValPair "${dnsmasq_pihole_01_target}" "interface" "$PIHOLE_INTERFACE"
if [[ "${PIHOLE_DNS_1}" != "" ]]; then
- # then swap in the primary DNS server.
- sed -i "s/@DNS1@/$PIHOLE_DNS_1/" "${dnsmasq_pihole_01_target}"
- else
- # Otherwise, remove the line which sets DNS1.
- sed -i '/^server=@DNS1@/d' "${dnsmasq_pihole_01_target}"
+ # then add in the primary DNS server.
+ addOrEditKeyValPair "${dnsmasq_pihole_01_target}" "server" "$$PIHOLE_DNS_1"
fi
# Ditto if DNS2 is not empty
if [[ "${PIHOLE_DNS_2}" != "" ]]; then
- sed -i "s/@DNS2@/$PIHOLE_DNS_2/" "${dnsmasq_pihole_01_target}"
- else
- sed -i '/^server=@DNS2@/d' "${dnsmasq_pihole_01_target}"
+ addKey "${dnsmasq_pihole_01_target}" "server=$PIHOLE_DNS_2"
fi
# Set the cache size
- sed -i "s/@CACHE_SIZE@/$CACHE_SIZE/" "${dnsmasq_pihole_01_target}"
+ addOrEditKeyValPair "${dnsmasq_pihole_01_target}" "cache-size" "$$CACHE_SIZE"
sed -i 's/^#conf-dir=\/etc\/dnsmasq.d$/conf-dir=\/etc\/dnsmasq.d/' "${dnsmasq_conf}"
# If the user does not want to enable logging,
if [[ "${QUERY_LOGGING}" == false ]] ; then
- # disable it by commenting out the directive in the DNS config file
- sed -i 's/^log-queries/#log-queries/' "${dnsmasq_pihole_01_target}"
+ # remove itfrom the DNS config file
+ removeKey "${dnsmasq_pihole_01_target}" "log-queries"
else
- # Otherwise, enable it by uncommenting the directive in the DNS config file
- sed -i 's/^#log-queries/log-queries/' "${dnsmasq_pihole_01_target}"
+ # Otherwise, enable it by adding the directive to the DNS config file
+ addKey "${dnsmasq_pihole_01_target}" "log-queries"
fi
printf " %b Installing %s..." "${INFO}" "${dnsmasq_rfc6761_06_source}"
@@ -1365,9 +1361,9 @@ installConfigs() {
chmod 644 "${PI_HOLE_CONFIG_DIR}/dns-servers.conf"
# Install template file if it does not exist
- if [[ ! -r "${PI_HOLE_CONFIG_DIR}/pihole-FTL.conf" ]]; then
+ if [[ ! -r "${FTL_CONFIG_FILE}" ]]; then
install -d -m 0755 ${PI_HOLE_CONFIG_DIR}
- if ! install -T -o pihole -m 664 "${PI_HOLE_LOCAL_REPO}/advanced/Templates/pihole-FTL.conf" "${PI_HOLE_CONFIG_DIR}/pihole-FTL.conf" &>/dev/null; then
+ if ! install -T -o pihole -m 664 "${PI_HOLE_LOCAL_REPO}/advanced/Templates/pihole-FTL.conf" "${FTL_CONFIG_FILE}" &>/dev/null; then
printf " %b Error: Unable to initialize configuration file %s/pihole-FTL.conf\\n" "${COL_LIGHT_RED}" "${PI_HOLE_CONFIG_DIR}"
return 1
fi
@@ -1784,30 +1780,24 @@ create_pihole_user() {
# This function saves any changes to the setup variables into the setupvars.conf file for future runs
finalExports() {
- # If the setup variable file exists,
- if [[ -e "${setupVars}" ]]; then
- # update the variables in the file
- sed -i.update.bak '/PIHOLE_INTERFACE/d;/PIHOLE_DNS_1\b/d;/PIHOLE_DNS_2\b/d;/QUERY_LOGGING/d;/INSTALL_WEB_SERVER/d;/INSTALL_WEB_INTERFACE/d;/LIGHTTPD_ENABLED/d;/CACHE_SIZE/d;/DNS_FQDN_REQUIRED/d;/DNS_BOGUS_PRIV/d;/DNSMASQ_LISTENING/d;' "${setupVars}"
- fi
- # echo the information to the user
- {
- echo "PIHOLE_INTERFACE=${PIHOLE_INTERFACE}"
- echo "PIHOLE_DNS_1=${PIHOLE_DNS_1}"
- echo "PIHOLE_DNS_2=${PIHOLE_DNS_2}"
- echo "QUERY_LOGGING=${QUERY_LOGGING}"
- echo "INSTALL_WEB_SERVER=${INSTALL_WEB_SERVER}"
- echo "INSTALL_WEB_INTERFACE=${INSTALL_WEB_INTERFACE}"
- echo "LIGHTTPD_ENABLED=${LIGHTTPD_ENABLED}"
- echo "CACHE_SIZE=${CACHE_SIZE}"
- echo "DNS_FQDN_REQUIRED=${DNS_FQDN_REQUIRED:-true}"
- echo "DNS_BOGUS_PRIV=${DNS_BOGUS_PRIV:-true}"
- echo "DNSMASQ_LISTENING=${DNSMASQ_LISTENING:-local}"
- }>> "${setupVars}"
+ # set or update the variables in the file
+
+ addOrEditKeyValPair "${setupVars}" "PIHOLE_INTERFACE" "${PIHOLE_INTERFACE}"
+ addOrEditKeyValPair "${setupVars}" "PIHOLE_DNS_1" "${PIHOLE_DNS_1}"
+ addOrEditKeyValPair "${setupVars}" "PIHOLE_DNS_2" "${PIHOLE_DNS_2}"
+ addOrEditKeyValPair "${setupVars}" "QUERY_LOGGING" "${QUERY_LOGGING}"
+ addOrEditKeyValPair "${setupVars}" "INSTALL_WEB_SERVER" "${INSTALL_WEB_SERVER}"
+ addOrEditKeyValPair "${setupVars}" "INSTALL_WEB_INTERFACE" "${INSTALL_WEB_INTERFACE}"
+ addOrEditKeyValPair "${setupVars}" "LIGHTTPD_ENABLED" "${LIGHTTPD_ENABLED}"
+ addOrEditKeyValPair "${setupVars}" "CACHE_SIZE" "${CACHE_SIZE}"
+ addOrEditKeyValPair "${setupVars}" "DNS_FQDN_REQUIRED" "${DNS_FQDN_REQUIRED:-true}"
+ addOrEditKeyValPair "${setupVars}" "DNS_BOGUS_PRIV" "${DNS_BOGUS_PRIV:-true}"
+ addOrEditKeyValPair "${setupVars}" "DNSMASQ_LISTENING" "${DNSMASQ_LISTENING:-local}"
+
chmod 644 "${setupVars}"
# Set the privacy level
- sed -i '/PRIVACYLEVEL/d' "${PI_HOLE_CONFIG_DIR}/pihole-FTL.conf"
- echo "PRIVACYLEVEL=${PRIVACY_LEVEL}" >> "${PI_HOLE_CONFIG_DIR}/pihole-FTL.conf"
+ addOrEditKeyValPair "${FTL_CONFIG_FILE}" "PRIVACYLEVEL" "${PRIVACY_LEVEL}"
# Bring in the current settings and the functions to manipulate them
source "${setupVars}"
@@ -1895,6 +1885,16 @@ installPihole() {
printf " %b Failure in dependent script copy function.\\n" "${CROSS}"
exit 1
fi
+
+ # /opt/pihole/utils.sh should be installed by installScripts now, so we can use it
+ if [ -f "${PI_HOLE_INSTALL_DIR}/utils.sh" ]; then
+ # shellcheck disable=SC1091
+ source "${PI_HOLE_INSTALL_DIR}/utils.sh"
+ else
+ printf " %b Failure: /opt/pihole/utils.sh does not exist .\\n" "${CROSS}"
+ exit 1
+ fi
+
# Install config files
if ! installConfigs; then
printf " %b Failure in dependent config copy function.\\n" "${CROSS}"
@@ -2569,8 +2569,8 @@ main() {
source "${setupVars}"
# Get the privacy level if it exists (default is 0)
- if [[ -f "${PI_HOLE_CONFIG_DIR}/pihole-FTL.conf" ]]; then
- PRIVACY_LEVEL=$(sed -ne 's/PRIVACYLEVEL=\(.*\)/\1/p' "${PI_HOLE_CONFIG_DIR}/pihole-FTL.conf")
+ if [[ -f "${FTL_CONFIG_FILE}" ]]; then
+ PRIVACY_LEVEL=$(sed -ne 's/PRIVACYLEVEL=\(.*\)/\1/p' "${FTL_CONFIG_FILE}")
# If no setting was found, default to 0
PRIVACY_LEVEL="${PRIVACY_LEVEL:-0}"
diff --git a/test/test_any_automated_install.py b/test/test_any_automated_install.py
index 70300243..1db5e0a0 100644
--- a/test/test_any_automated_install.py
+++ b/test/test_any_automated_install.py
@@ -79,6 +79,7 @@ def test_setupVars_saved_to_file(host):
echo start
TERM=xterm
source /opt/pihole/basic-install.sh
+ source /opt/pihole/utils.sh
{}
mkdir -p /etc/dnsmasq.d
version_check_dnsmasq