Compare commits

...

24 Commits

Author SHA1 Message Date
DL6ER
3b6286e139 Spellcheck improvements (no warnings in pihole and advanced/Scripts/webpage.sh remains)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-01-05 09:58:22 +01:00
DL6ER
e1a128f833 Move ensure_newline() into its own file as we need to source it from different places
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-12-30 21:48:07 +01:00
DL6ER
69e55aff83 Ensure critical config lines have trailing newlines before appending new content. This is guaranteed by our scripts, however, it is not guaranteed any longer when uders manually edited config files themselves. Ensure the files are okay to work with before adding anything to them.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-12-30 10:50:31 +01:00
DL6ER
ae1a59285d Merge pull request #3943 from yubiuser/fix/whiptail
Change wording in whiptail for adlist selection
2020-12-25 09:05:49 +01:00
Christian König
0d710fc9e3 Change wording in whiptail for adlist selection
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-12-24 21:19:14 +01:00
Adam Warner
eb86a5e3b0 Merge pull request #3937 from yubiuser/remove_malwaredomains
Remove deprecated malwaredomains list
2020-12-24 15:24:48 +00:00
DL6ER
667e938954 Merge pull request #3942 from pi-hole/master
Sync dev with master
2020-12-24 13:33:57 +01:00
Adam Warner
41bdb741b7 Merge pull request #3941 from pi-hole/release/v5.2.2
Pi-hole Core v5.2.2
2020-12-24 11:07:36 +00:00
DL6ER
a139af8184 Merge pull request #3940 from pi-hole/fix/i386-arch
Add fallback for arch detection on i386/x86_64
2020-12-24 08:38:53 +01:00
Dan Schaper
60fa93ab47 Add fallback for arch detection on i386/x86_64
Signed-off-by: Dan Schaper <dan.schaper@pi-hole.net>
2020-12-23 14:59:28 -08:00
Christian König
b4102547ac Remove deprecated malwaredomains list
Signed-off-by: Christian König <ckoenig@posteo.de>
2020-12-21 13:11:59 +01:00
Adam Warner
87cf9add8c Merge pull request #3934 from mwoolweaver/patch-1
Fix typo found by #3933
2020-12-20 15:31:02 +00:00
Michael Woolweaver
3a05ac27a2 Fix typo found by #3933
Signed-off-by: Michael Woolweaver <m.woolweaver@icloud.com>
2020-12-19 17:37:17 -06:00
DL6ER
41479524f8 Merge pull request #3900 from ganto/fix/chrono-non-lte
Fix chronometer output if web interface is not installed
2020-12-12 10:08:05 +01:00
Adam Warner
357b6702ec Update advanced/Scripts/chronometer.sh
Co-authored-by: DL6ER <DL6ER@users.noreply.github.com>
2020-12-11 12:30:52 +00:00
DL6ER
dfe64d9f51 Merge pull request #3909 from onegreydot/fix/gravity_date_updated
Adding comma to the adlist table format
2020-12-10 23:02:22 +01:00
DL6ER
78cdd34992 Merge pull request #3904 from ganto/fix/debug-non-web-2
piholeDebug: Diagnose output if (Web) git directory is not found
2020-12-10 23:00:45 +01:00
DL6ER
16fb914855 Merge pull request #3902 from ganto/fix/debug-non-web
piholeDebug: Fix warning if lighttpd/php are not installed
2020-12-10 23:00:02 +01:00
Reto Gantenbein
20faa1bd1c Update pihole-FTL man-pages (#3883)
Extend latest options and adjust ordering to Web documentation

Ensure that all configuration options currently recognized by FTL 5.3.1
are properly documented in the man page of the configuration file.

Signed-off-by: Reto Gantenbein <reto.gantenbein@linuxmonk.ch>
2020-12-10 22:58:07 +01:00
user
922f795fe6 Adding comma to the adlist table format
To account for the Date Updated column in the adlist table adding a comma to the adlist to be imported into the database. This was causing intermittent failures on updates and therefore no domains would be blocked.

Signed-off-by: user <user@fedbrew.home>

 Date:      Sun Dec 6 06:03:30 2020 -0500
 Committer: user <user@fedbrew.home>

 On branch fix/gravity_date_updated
 Your branch and 'origin/fix/gravity_date_updated' have diverged,
 and have 1 and 1 different commits each, respectively.
   (use "git pull" to merge the remote branch into yours)

 Changes to be committed:
	modified:   gravity.sh

Signed-off-by: user <user@fedbrew.home>
2020-12-06 06:08:30 -05:00
Reto Gantenbein
9dc539c98b piholeDebug: More detailed diagnostics if Web interface is not found
Signed-off-by: Reto Gantenbein <reto.gantenbein@linuxmonk.ch>
2020-12-05 18:46:11 +01:00
Reto Gantenbein
18e4eb460c piholeDebug: Fix version check if lighttpd/php are not installed
Signed-off-by: Reto Gantenbein <reto.gantenbein@linuxmonk.ch>
2020-12-05 14:11:53 +01:00
Reto Gantenbein
e841347057 Fix chronometer output if web interface is not installed
Signed-off-by: Reto Gantenbein <reto.gantenbein@linuxmonk.ch>
2020-12-05 02:55:55 +01:00
DL6ER
6deac6dfce Merge pull request #3894 from pi-hole/master
Update development from Core v5.2.1 release
2020-12-02 23:10:43 +01:00
10 changed files with 384 additions and 67 deletions

View File

@@ -228,8 +228,14 @@ get_sys_stats() {
mapfile -t ph_ver_raw < <(pihole -v -c 2> /dev/null | sed -n 's/^.* v/v/p')
if [[ -n "${ph_ver_raw[0]}" ]]; then
ph_core_ver="${ph_ver_raw[0]}"
ph_lte_ver="${ph_ver_raw[1]}"
ph_ftl_ver="${ph_ver_raw[2]}"
if [[ ${#ph_ver_raw[@]} -eq 2 ]]; then
# AdminLTE not installed
ph_lte_ver="(not installed)"
ph_ftl_ver="${ph_ver_raw[1]}"
else
ph_lte_ver="${ph_ver_raw[1]}"
ph_ftl_ver="${ph_ver_raw[2]}"
fi
else
ph_core_ver="-1"
fi

View File

@@ -334,7 +334,17 @@ compare_local_version_to_git_version() {
return 1
fi
else
:
# There is no git directory so check if the web interface was disabled
local setup_vars_web_interface
setup_vars_web_interface=$(< ${PIHOLE_SETUP_VARS_FILE} grep ^INSTALL_WEB_INTERFACE | cut -d '=' -f2)
if [[ "${pihole_component}" == "Web" ]] && [[ "${setup_vars_web_interface}" == "false" ]]; then
log_write "${INFO} ${pihole_component}: Disabled in setupVars.conf via INSTALL_WEB_INTERFACE=false"
else
# Return an error message
log_write "${COL_RED}Directory ${git_dir} doesn't exist${COL_NC}"
# and exit with a non zero code
return 1
fi
fi
}
@@ -371,9 +381,9 @@ get_program_version() {
echo_current_diagnostic "${program_name} version"
# Evalutate the program we are checking, if it is any of the ones below, show the version
case "${program_name}" in
"lighttpd") program_version="$(${program_name} -v |& head -n1 | cut -d '/' -f2 | cut -d ' ' -f1)"
"lighttpd") program_version="$(${program_name} -v 2> /dev/null | head -n1 | cut -d '/' -f2 | cut -d ' ' -f1)"
;;
"php") program_version="$(${program_name} -v |& head -n1 | cut -d '-' -f1 | cut -d ' ' -f2)"
"php") program_version="$(${program_name} -v 2> /dev/null | head -n1 | cut -d '-' -f1 | cut -d ' ' -f2)"
;;
# If a match is not found, show an error
*) echo "Unrecognized program";

22
advanced/Scripts/utils.sh Normal file
View File

@@ -0,0 +1,22 @@
#!/usr/bin/env bash
# Pi-hole: A black hole for Internet advertisements
# (c) 2020 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Controller for all pihole scripts and functions.
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
# Ensure there is a newline at the end of the file passed as argument
ensure_newline() {
# Check if the last line of the passed file is empty, if not, append a newline
# to the file to ensure we can append new content safely using echo "" >>
# later on
[ -n "$(tail -c1 "${1}")" ] && printf '\n' >> "${1}"
# There was also the suggestion of using a sed-magic call here, however, this
# had the drawback to updating all the file timestamps whenever the sed was
# run. This solution only updates the timestamp when actually appending a
# newline
}

View File

@@ -22,13 +22,21 @@ readonly gravityDBfile="/etc/pihole/gravity.db"
# Source install script for ${setupVars}, ${PI_HOLE_BIN_DIR} and valid_ip()
readonly PI_HOLE_FILES_DIR="/etc/.pihole"
setupVars=""
DHCP_IPv6=false
# shellcheck disable=SC2034 # used in basic-install
PH_TEST="true"
source "${PI_HOLE_FILES_DIR}/automated install/basic-install.sh"
coltable="/opt/pihole/COL_TABLE"
# ensure_newline()
readonly utilsfile="${PI_HOLE_SCRIPT_DIR}/utils.sh"
# shellcheck source=./utils.sh
source "${utilsfile}"
readonly coltable="${PI_HOLE_SCRIPT_DIR}/COL_TABLE"
if [[ -f ${coltable} ]]; then
source ${coltable}
# shellcheck source=./COL_TABLE
source "${coltable}"
fi
helpFunc() {
@@ -49,6 +57,7 @@ Options:
}
add_setting() {
ensure_newline "${setupVars}"
echo "${1}=${2}" >> "${setupVars}"
}
@@ -62,6 +71,7 @@ change_setting() {
}
addFTLsetting() {
ensure_newline "${FTLconf}"
echo "${1}=${2}" >> "${FTLconf}"
}
@@ -75,6 +85,7 @@ changeFTLsetting() {
}
add_dnsmasq_setting() {
ensure_newline "${dnsmasqconfig}"
if [[ "${2}" != "" ]]; then
echo "${1}=${2}" >> "${dnsmasqconfig}"
else
@@ -146,6 +157,7 @@ SetWebPassword() {
ProcessDNSSettings() {
source "${setupVars}"
ensure_newline "${dnsmasqconfig}"
delete_dnsmasq_setting "server"
COUNTER=1
@@ -392,6 +404,7 @@ ProcessDHCPSettings() {
fi
# Write settings to file
# We do not need to ensure a newline here as the entire file is re-written
echo "###############################################################################
# DHCP SERVER CONFIG FILE AUTOMATICALLY POPULATED BY PI-HOLE WEB INTERFACE. #
# ANY CHANGES MADE TO THIS FILE WILL BE LOST ON CHANGE #
@@ -545,6 +558,7 @@ AddDHCPStaticAddress() {
ip="${args[3]}"
host="${args[4]}"
ensure_newline "${dhcpstaticconfig}"
if [[ "${ip}" == "noip" ]]; then
# Static host name
echo "dhcp-host=${mac},${host}" >> "${dhcpstaticconfig}"
@@ -689,6 +703,7 @@ AddCustomDNSAddress() {
ip="${args[2]}"
host="${args[3]}"
ensure_newline "${dnscustomfile}"
echo "${ip} ${host}" >> "${dnscustomfile}"
# Restart dnsmasq to load new custom DNS entries
@@ -711,6 +726,7 @@ AddCustomCNAMERecord() {
domain="${args[2]}"
target="${args[3]}"
ensure_newline "${dnscustomcnamefile}"
echo "cname=${domain},${target}" >> "${dnscustomcnamefile}"
# Restart dnsmasq to load new custom CNAME records

View File

@@ -73,7 +73,7 @@ CREATE TABLE domainlist_by_group
CREATE TABLE client
(
id INTEGER PRIMARY KEY AUTOINCREMENT,
ip TEXT NOL NULL UNIQUE,
ip TEXT NOT NULL UNIQUE,
date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)),
date_modified INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)),
comment TEXT

View File

@@ -1285,10 +1285,9 @@ chooseBlocklists() {
mv "${adlistFile}" "${adlistFile}.old"
fi
# Let user select (or not) blocklists via a checklist
cmd=(whiptail --separate-output --checklist "Pi-hole relies on third party lists in order to block ads.\\n\\nYou can use the suggestions below, and/or add your own after installation\\n\\nTo deselect any list, use the arrow keys and spacebar" "${r}" "${c}" 5)
cmd=(whiptail --separate-output --checklist "Pi-hole relies on third party lists in order to block ads.\\n\\nYou can use the suggestion below, and/or add your own after installation\\n\\nTo deselect the suggested list, use spacebar" "${r}" "${c}" 5)
# In an array, show the options available (all off by default):
options=(StevenBlack "StevenBlack's Unified Hosts List" on
MalwareDom "MalwareDomains" on)
options=(StevenBlack "StevenBlack's Unified Hosts List" on)
# In a variable, show the choices available; exit if Cancel is selected
choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty) || { printf " %bCancel was selected, exiting installer%b\\n" "${COL_LIGHT_RED}" "${COL_NC}"; rm "${adlistFile}" ;exit 1; }
@@ -1307,7 +1306,6 @@ chooseBlocklists() {
appendToListsFile() {
case $1 in
StevenBlack ) echo "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts" >> "${adlistFile}";;
MalwareDom ) echo "https://mirror1.malwaredomains.com/files/justdomains" >> "${adlistFile}";;
esac
}
@@ -1320,7 +1318,6 @@ installDefaultBlocklists() {
return;
fi
appendToListsFile StevenBlack
appendToListsFile MalwareDom
}
# Check if /etc/dnsmasq.conf is from pi-hole. If so replace with an original and install new in .d directory
@@ -2451,7 +2448,7 @@ get_binary_name() {
elif [[ "${machine}" == "x86_64" ]]; then
# This gives the processor of packages dpkg installs (for example, "i386")
local dpkgarch
dpkgarch=$(dpkg --print-processor 2> /dev/null || true)
dpkgarch=$(dpkg --print-processor 2> /dev/null || dpkg --print-architecture 2> /dev/null)
# Special case: This is a 32 bit OS, installed on a 64 bit machine
# -> change machine processor to download the 32 bit executable

View File

@@ -176,7 +176,7 @@ database_table_from_file() {
echo "${rowid},\"${domain}\",${timestamp}" >> "${tmpFile}"
elif [[ "${table}" == "adlist" ]]; then
# Adlist table format
echo "${rowid},\"${domain}\",1,${timestamp},${timestamp},\"Migrated from ${source}\"" >> "${tmpFile}"
echo "${rowid},\"${domain}\",1,${timestamp},${timestamp},\"Migrated from ${source}\"," >> "${tmpFile}"
else
# White-, black-, and regexlist table format
echo "${rowid},${type},\"${domain}\",1,${timestamp},${timestamp},\"Migrated from ${source}\"" >> "${tmpFile}"

View File

@@ -1,4 +1,4 @@
.TH "Pihole-FTL" "8" "pihole-FTL" "Pi-hole" "June 2018"
.TH "Pihole-FTL" "8" "pihole-FTL" "Pi-hole" "November 2020"
.SH "NAME"
pihole-FTL - Pi-hole : The Faster-Than-Light (FTL) Engine
.br
@@ -10,7 +10,7 @@ pihole-FTL - Pi-hole : The Faster-Than-Light (FTL) Engine
.br
\fBpihole-FTL test\fR
.br
\fBpihole-FTL -v\fR
\fBpihole-FTL -v|-vv\fR
.br
\fBpihole-FTL -t\fR
.br
@@ -22,6 +22,16 @@ pihole-FTL - Pi-hole : The Faster-Than-Light (FTL) Engine
.br
\fBpihole-FTL dnsmasq-test\fR
.br
\fBpihole-FTL regex-test str\fR
.br
\fBpihole-FTL regex-test str rgx\fR
.br
\fBpihole-FTL lua\fR
.br
\fBpihole-FTL luac\fR
.br
\fBpihole-FTL dhcp-discover\fR
.br
\fBpihole-FTL --\fR (\fBoptions\fR)
.br
@@ -65,6 +75,11 @@ Command line arguments
Don't start FTL, show only version
.br
\fB-vv\fR
.br
Don't start FTL, show verbose version information of embedded applications
.br
\fB-t, tag\fR
.br
Don't start FTL, show only git tag
@@ -90,6 +105,31 @@ Command line arguments
Test resolver config file syntax
.br
\fBregex-test str\fR
.br
Test str against all regular expressions in the database
.br
\fBregex-test str rgx\fR
.br
Test str against regular expression given by rgx
.br
\fBlua\fR
.br
Start the embedded Lua interpreter
.br
\fBluac\fR
.br
Execute the embedded Lua compiler
.br
\fBdhcp-discover\fR
.br
Discover DHCP servers in the local network
.br
\fB--\fR (options)
.br
Pass options to internal dnsmasq resolver

View File

@@ -1,4 +1,4 @@
.TH "pihole-FTL.conf" "5" "pihole-FTL.conf" "pihole-FTL.conf" "June 2018"
.TH "pihole-FTL.conf" "5" "pihole-FTL.conf" "pihole-FTL.conf" "November 2020"
.SH "NAME"
pihole-FTL.conf - FTL's config file
@@ -7,49 +7,32 @@ pihole-FTL.conf - FTL's config file
/etc/pihole/pihole-FTL.conf will be read by \fBpihole-FTL(8)\fR on startup.
.br
\fBSOCKET_LISTENING=localonly|all\fR
.br
Listen only for local socket connections or permit all connections
For each setting the option shown first is the default.
.br
\fBQUERY_DISPLAY=yes|no\fR
\fBBLOCKINGMODE=IP|IP-AAAA-NODATA|NODATA|NXDOMAIN|NULL\fR
.br
Display all queries? Set to no to hide query display
How should FTL reply to blocked queries?
IP - Pi-hole's IPs for blocked domains
IP-AAAA-NODATA - Pi-hole's IP + NODATA-IPv6 for blocked domains
NODATA - Using NODATA for blocked domains
NXDOMAIN - NXDOMAIN for blocked domains
NULL - Null IPs for blocked domains
.br
\fBAAAA_QUERY_ANALYSIS=yes|no\fR
\fBCNAME_DEEP_INSPECT=true|false\fR
.br
Allow FTL to analyze AAAA queries from pihole.log?
Use this option to disable deep CNAME inspection. This might be beneficial for very low-end devices.
.br
\fBRESOLVE_IPV6=yes|no\fR
\fBBLOCK_ESNI=true|false\fR
.br
Should FTL try to resolve IPv6 addresses to host names?
.br
\fBRESOLVE_IPV4=yes|no\fR
.br
Should FTL try to resolve IPv4 addresses to host names?
.br
\fBMAXDBDAYS=365\fR
.br
How long should queries be stored in the database?
.br
Setting this to 0 disables the database
.br
\fBDBINTERVAL=1.0\fR
.br
How often do we store queries in FTL's database [minutes]?
.br
\fBDBFILE=/etc/pihole/pihole-FTL.db\fR
.br
Specify path and filename of FTL's SQLite long-term database.
.br
Setting this to DBFILE= disables the database altogether
Block requests to _esni.* sub-domains.
.br
\fBMAXLOGAGE=24.0\fR
@@ -59,14 +42,9 @@ pihole-FTL.conf - FTL's config file
Maximum is 744 (31 days)
.br
\fBFTLPORT=4711\fR
\fBPRIVACYLEVEL=0|1|2|3|4\fR
.br
On which port should FTL be listening?
.br
\fBPRIVACYLEVEL=0|1|2|3\fR
.br
Which privacy level is used?
Privacy level used to collect Pi-hole statistics.
.br
0 - show everything
.br
@@ -76,19 +54,252 @@ pihole-FTL.conf - FTL's config file
.br
3 - anonymous mode (hide everything)
.br
4 - disable all statistics
.br
\fBIGNORE_LOCALHOST=no|yes\fR
.br
Should FTL ignore queries coming from the local machine?
.br
\fBBLOCKINGMODE=IP|IP-AAAA-NODATA|NXDOMAIN|NULL\fR
\fBAAAA_QUERY_ANALYSIS=yes|no\fR
.br
How should FTL reply to blocked queries?
Should FTL analyze AAAA queries?
.br
For each setting, the option shown first is the default.
\fBANALYZE_ONLY_A_AND_AAAA=false|true\fR
.br
Should FTL only analyze A and AAAA queries?
.br
\fBSOCKET_LISTENING=localonly|all\fR
.br
Listen only for local socket connections on the API port or permit all connections.
.br
\fBFTLPORT=4711\fR
.br
On which port should FTL be listening?
.br
\fBRESOLVE_IPV6=yes|no\fR
.br
Should FTL try to resolve IPv6 addresses to hostnames?
.br
\fBRESOLVE_IPV4=yes|no\fR
.br
Should FTL try to resolve IPv4 addresses to hostnames?
.br
\fBDELAY_STARTUP=0\fR
.br
Time in seconds (between 0 and 300) to delay FTL startup.
.br
\fBNICE=-10\fR
.br
Set the niceness of the Pi-hole FTL process.
.br
Can be disabled altogether by setting a value of -999.
.br
\fBNAMES_FROM_NETDB=true|false\fR
.br
Control whether FTL should use a fallback option and try to obtain client names from checking the network table.
.br
E.g. IPv6 clients without a hostname will be compared via MAC address to known clients.
.br
\fB\fBREFRESH_HOSTNAMES=IPV4|ALL|NONE\fR
.br
Change how (and if) hourly PTR requests are made to check for changes in client and upstream server hostnames:
.br
IPV4 - Do the hourly PTR lookups only for IPv4 addresses resolving issues in networks with many short-lived PE IPv6 addresses.
.br
ALL - Do the hourly PTR lookups for all addresses. This can create a lot of PTR queries in networks with many IPv6 addresses.
.br
NONE - Don't do hourly PTR lookups. Look up hostnames once (when first seeing a client) and never again. Future hostname changes may be missed.
.br
\fBMAXNETAGE=365\fR
.br
IP addresses (and associated host names) older than the specified number of days are removed.
.br
This avoids dead entries in the network overview table.
.br
\fBEDNS0_ECS=true|false\fR
.br
Should we overwrite the query source when client information is provided through EDNS0 client subnet (ECS) information?
.br
\fBPARSE_ARP_CACHE=true|false\fR
.br
Parse ARP cache to fill network overview table.
.br
\fBDBIMPORT=yes|no\fR
.br
Should FTL load information from the database on startup to be aware of the most recent history?
.br
\fBMAXDBDAYS=365\fR
.br
How long should queries be stored in the database? Setting this to 0 disables the database
.br
\fBDBINTERVAL=1.0\fR
.br
How often do we store queries in FTL's database [minutes]?
.br
Accepts value between 0.1 (6 sec) and 1440 (1 day)
.br
\fBDBFILE=/etc/pihole/pihole-FTL.db\fR
.br
Specify path and filename of FTL's SQLite long-term database.
.br
Setting this to DBFILE= disables the database altogether
.br
\fBLOGFILE=/var/log/pihole-FTL.log\fR
.br
The location of FTL's log file.
.br
\fBPIDFILE=/run/pihole-FTL.pid\fR
.br
The file which contains the PID of FTL's main process.
.br
\fBPORTFILE=/run/pihole-FTL.port\fR
.br
Specify path and filename where the FTL process will write its API port number.
.br
\fBSOCKETFILE=/run/pihole/FTL.sock\fR
.br
The file containing the socket FTL's API is listening on.
.br
\fBSETUPVARSFILE=/etc/pihole/setupVars.conf\fR
.br
The config file of Pi-hole containing, e.g., the current blocking status (do not change).
.br
\fBMACVENDORDB=/etc/pihole/macvendor.db\fR
.br
The database containing MAC -> Vendor information for the network table.
.br
\fBGRAVITYDB=/etc/pihole/gravity.db\fR
.br
Specify path and filename of FTL's SQLite3 gravity database. This database contains all domains relevant for Pi-hole's DNS blocking.
.br
\fBDEBUG_ALL=false|true\fR
.br
Enable all debug flags. If this is set to true, all other debug config options are ignored.
.br
\fBDEBUG_DATABASE=false|true\fR
.br
Print debugging information about database actions such as SQL statements and performance.
.br
\fBDEBUG_NETWORKING=false|true\fR
.br
Prints a list of the detected network interfaces on the startup of FTL.
.br
\fBDEBUG_LOCKS=false|true\fR
.br
Print information about shared memory locks.
.br
Messages will be generated when waiting, obtaining, and releasing a lock.
.br
\fBDEBUG_QUERIES=false|true\fR
.br
Print extensive DNS query information (domains, types, replies, etc.).
.br
\fBDEBUG_FLAGS=false|true\fR
.br
Print flags of queries received by the DNS hooks.
.br
Only effective when \fBDEBUG_QUERIES\fR is enabled as well.
\fBDEBUG_SHMEM=false|true\fR
.br
Print information about shared memory buffers.
.br
Messages are either about creating or enlarging shmem objects or string injections.
.br
\fBDEBUG_GC=false|true\fR
.br
Print information about garbage collection (GC):
.br
What is to be removed, how many have been removed and how long did GC take.
.br
\fBDEBUG_ARP=false|true\fR
.br
Print information about ARP table processing:
.br
How long did parsing take, whether read MAC addresses are valid, and if the macvendor.db file exists.
.br
\fBDEBUG_REGEX=false|true\fR
.br
Controls if FTL should print extended details about regex matching.
.br
\fBDEBUG_API=false|true\fR
.br
Print extra debugging information during telnet API calls.
.br
Currently only used to send extra information when getting all queries.
.br
\fBDEBUG_OVERTIME=false|true\fR
.br
Print information about overTime memory operations, such as initializing or moving overTime slots.
.br
\fBDEBUG_EXTBLOCKED=false|true\fR
.br
Print information about why FTL decided that certain queries were recognized as being externally blocked.
.br
\fBDEBUG_CAPS=false|true\fR
.br
Print information about POSIX capabilities granted to the FTL process.
.br
The current capabilities are printed on receipt of SIGHUP i.e. after executing `killall -HUP pihole-FTL`.
.br
\fBDEBUG_DNSMASQ_LINES=false|true\fR
.br
Print file and line causing a dnsmasq event into FTL's log files.
.br
This is handy to implement additional hooks missing from FTL.
.br
\fBDEBUG_VECTORS=false|true\fR
.br
FTL uses dynamically allocated vectors for various tasks.
.br
This config option enables extensive debugging information such as information about allocation, referencing, deletion, and appending.
.br
\fBDEBUG_RESOLVER=false|true\fR
.br
Extensive information about hostname resolution like which DNS servers are used in the first and second hostname resolving tries.
.br
.SH "SEE ALSO"
\fBpihole\fR(8), \fBpihole-FTL\fR(8)

25
pihole
View File

@@ -18,9 +18,16 @@ setupVars="/etc/pihole/setupVars.conf"
PI_HOLE_BIN_DIR="/usr/local/bin"
readonly colfile="${PI_HOLE_SCRIPT_DIR}/COL_TABLE"
# shellcheck source=./advanced/Scripts/COL_TABLE
source "${colfile}"
# ensure_newline()
readonly utilsfile="${PI_HOLE_SCRIPT_DIR}/utils.sh"
# shellcheck source=./advanced/Scripts/utils.sh
source "${utilsfile}"
webpageFunc() {
# shellcheck source=./advanced/Scripts/webpage.sh
source "${PI_HOLE_SCRIPT_DIR}/webpage.sh"
main "$@"
exit 0
@@ -37,9 +44,13 @@ debugFunc() {
# Pull off the `debug` leaving passed call augmentation flags in $1
shift
# We do not want to be warned about implicit concatenation of array in [[ ]]
# as this is exactly what we want here
# shellcheck disable=SC2199
if [[ "$@" == *"-a"* ]]; then
automated="true"
fi
# shellcheck disable=SC2199
if [[ "$@" == *"-w"* ]]; then
web="true"
fi
@@ -154,7 +165,7 @@ Time:
echo -e " ${INFO} Blocking already disabled, nothing to do"
exit 0
fi
if [[ $# > 1 ]]; then
if [[ $# -gt 1 ]]; then
local error=false
if [[ "${2}" == *"s" ]]; then
tt=${2%"s"}
@@ -162,7 +173,7 @@ Time:
local str="Disabling blocking for ${tt} seconds"
echo -e " ${INFO} ${str}..."
local str="Blocking will be re-enabled in ${tt} seconds"
nohup "${PI_HOLE_SCRIPT_DIR}"/pihole-reenable.sh ${tt} </dev/null &>/dev/null &
nohup "${PI_HOLE_SCRIPT_DIR}/pihole-reenable.sh" "${tt}" </dev/null &>/dev/null &
else
local error=true
fi
@@ -172,8 +183,8 @@ Time:
local str="Disabling blocking for ${tt} minutes"
echo -e " ${INFO} ${str}..."
local str="Blocking will be re-enabled in ${tt} minutes"
tt=$((${tt}*60))
nohup "${PI_HOLE_SCRIPT_DIR}"/pihole-reenable.sh ${tt} </dev/null &>/dev/null &
tt=$((tt*60))
nohup "${PI_HOLE_SCRIPT_DIR}/pihole-reenable.sh" "${tt}" </dev/null &>/dev/null &
else
local error=true
fi
@@ -191,6 +202,7 @@ Time:
local str="Pi-hole Disabled"
sed -i "/BLOCKING_ENABLED=/d" "${setupVars}"
ensure_newline "${setupVars}"
echo "BLOCKING_ENABLED=false" >> "${setupVars}"
fi
else
@@ -204,6 +216,7 @@ Time:
local str="Pi-hole Enabled"
sed -i "/BLOCKING_ENABLED=/d" "${setupVars}"
ensure_newline "${setupVars}"
echo "BLOCKING_ENABLED=true" >> "${setupVars}"
fi
@@ -320,7 +333,8 @@ statusFunc() {
tailFunc() {
# Warn user if Pi-hole's logging is disabled
local logging_enabled=$(grep -c "^log-queries" /etc/dnsmasq.d/01-pihole.conf)
local logging_enabled
logging_enabled=$(grep -c "^log-queries" /etc/dnsmasq.d/01-pihole.conf)
if [[ "${logging_enabled}" == "0" ]]; then
# No "log-queries" lines are found.
# Commented out lines (such as "#log-queries") are ignored
@@ -361,6 +375,7 @@ Branches:
exit 0
fi
# shellcheck source=./advanced/Scripts/piholeCheckout.sh
source "${PI_HOLE_SCRIPT_DIR}"/piholeCheckout.sh
shift
checkout "$@"