mirror of
https://github.com/pi-hole/pi-hole.git
synced 2024-11-15 02:42:58 +00:00
Add support for regex whitelist in "pihole -q".
Signed-off-by: DL6ER <dl6er@dl6er.de>
This commit is contained in:
parent
aef7892de6
commit
42ccc1ef24
1 changed files with 18 additions and 10 deletions
|
@ -128,25 +128,24 @@ scanDatabaseTable() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# Scan Whitelist and Blacklist
|
scanRegexDatabaseTable() {
|
||||||
scanDatabaseTable "${domainQuery}" "whitelist" "${exact}"
|
local domain list
|
||||||
scanDatabaseTable "${domainQuery}" "blacklist" "${exact}"
|
domain="${1}"
|
||||||
|
list="${2}"
|
||||||
# Scan Regex table
|
mapfile -t regexList < <(sqlite3 "${gravityDBfile}" "SELECT domain FROM vw_regex_${list}" 2> /dev/null)
|
||||||
mapfile -t regexList < <(sqlite3 "${gravityDBfile}" "SELECT domain FROM vw_regex_blacklist" 2> /dev/null)
|
|
||||||
|
|
||||||
# If we have regexps to process
|
# If we have regexps to process
|
||||||
if [[ "${#regexList[@]}" -ne 0 ]]; then
|
if [[ "${#regexList[@]}" -ne 0 ]]; then
|
||||||
# Split regexps over a new line
|
# Split regexps over a new line
|
||||||
str_regexList=$(printf '%s\n' "${regexList[@]}")
|
str_regexList=$(printf '%s\n' "${regexList[@]}")
|
||||||
# Check domainQuery against regexps
|
# Check domain against regexps
|
||||||
mapfile -t regexMatches < <(scanList "${domainQuery}" "${str_regexList}" "regex")
|
mapfile -t regexMatches < <(scanList "${domain}" "${str_regexList}" "regex")
|
||||||
# If there were regex matches
|
# If there were regex matches
|
||||||
if [[ "${#regexMatches[@]}" -ne 0 ]]; then
|
if [[ "${#regexMatches[@]}" -ne 0 ]]; then
|
||||||
# Split matching regexps over a new line
|
# Split matching regexps over a new line
|
||||||
str_regexMatches=$(printf '%s\n' "${regexMatches[@]}")
|
str_regexMatches=$(printf '%s\n' "${regexMatches[@]}")
|
||||||
# Form a "matched" message
|
# Form a "matched" message
|
||||||
str_message="${matchType^} found in ${COL_BOLD}Regex list${COL_NC}"
|
str_message="${matchType^} found in ${COL_BOLD}Regex ${list}${COL_NC}"
|
||||||
# Form a "results" message
|
# Form a "results" message
|
||||||
str_result="${COL_BOLD}${str_regexMatches}${COL_NC}"
|
str_result="${COL_BOLD}${str_regexMatches}${COL_NC}"
|
||||||
# If we are displaying more than just the source of the block
|
# If we are displaying more than just the source of the block
|
||||||
|
@ -159,11 +158,20 @@ if [[ "${#regexList[@]}" -ne 0 ]]; then
|
||||||
# shellcheck disable=SC2001
|
# shellcheck disable=SC2001
|
||||||
echo "${str_result}" | sed 's/^/ /'
|
echo "${str_result}" | sed 's/^/ /'
|
||||||
else
|
else
|
||||||
echo "π Regex list"
|
echo "π Regex ${list}"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Scan Whitelist and Blacklist
|
||||||
|
scanDatabaseTable "${domainQuery}" "whitelist" "${exact}"
|
||||||
|
scanDatabaseTable "${domainQuery}" "blacklist" "${exact}"
|
||||||
|
|
||||||
|
# Scan Regex table
|
||||||
|
scanRegexDatabaseTable "${domainQuery}" "whitelist"
|
||||||
|
scanRegexDatabaseTable "${domainQuery}" "blacklist"
|
||||||
|
|
||||||
# Get version sorted *.domains filenames (without dir path)
|
# Get version sorted *.domains filenames (without dir path)
|
||||||
lists=("$(cd "$piholeDir" || exit 0; printf "%s\\n" -- *.domains | sort -V)")
|
lists=("$(cd "$piholeDir" || exit 0; printf "%s\\n" -- *.domains | sort -V)")
|
||||||
|
|
Loading…
Reference in a new issue