|
|
|
@ -34,7 +34,7 @@ source "${colfile}"
|
|
|
|
|
# Scan an array of files for matching strings
|
|
|
|
|
scanList(){
|
|
|
|
|
# Escape full stops
|
|
|
|
|
local domain="${1}" esc_domain="${1//./\\.}" lists="${2}" type="${3:-}"
|
|
|
|
|
local domain="${1}" esc_domain="${1//./\\.}" lists="${2}" list_type="${3:-}"
|
|
|
|
|
|
|
|
|
|
# Prevent grep from printing file path
|
|
|
|
|
cd "$piholeDir" || exit 1
|
|
|
|
@ -43,7 +43,7 @@ scanList(){
|
|
|
|
|
export LC_CTYPE=C
|
|
|
|
|
|
|
|
|
|
# /dev/null forces filename to be printed when only one list has been generated
|
|
|
|
|
case "${type}" in
|
|
|
|
|
case "${list_type}" in
|
|
|
|
|
"exact" ) grep -i -E -l "(^|(?<!#)\\s)${esc_domain}($|\\s|#)" ${lists} /dev/null 2>/dev/null;;
|
|
|
|
|
# Iterate through each regexp and check whether it matches the domainQuery
|
|
|
|
|
# If it does, print the matching regexp and continue looping
|
|
|
|
@ -99,10 +99,10 @@ if [[ -n "${str:-}" ]]; then
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
scanDatabaseTable() {
|
|
|
|
|
local domain table type querystr result extra
|
|
|
|
|
local domain table list_type querystr result extra
|
|
|
|
|
domain="$(printf "%q" "${1}")"
|
|
|
|
|
table="${2}"
|
|
|
|
|
type="${3:-}"
|
|
|
|
|
list_type="${3:-}"
|
|
|
|
|
|
|
|
|
|
# As underscores are legitimate parts of domains, we escape them when using the LIKE operator.
|
|
|
|
|
# Underscores are SQLite wildcards matching exactly one character. We obviously want to suppress this
|
|
|
|
@ -115,8 +115,8 @@ scanDatabaseTable() {
|
|
|
|
|
esac
|
|
|
|
|
else
|
|
|
|
|
case "${exact}" in
|
|
|
|
|
"exact" ) querystr="SELECT domain,enabled FROM domainlist WHERE type = '${type}' AND domain = '${domain}'";;
|
|
|
|
|
* ) querystr="SELECT domain,enabled FROM domainlist WHERE type = '${type}' AND domain LIKE '%${domain//_/\\_}%' ESCAPE '\\'";;
|
|
|
|
|
"exact" ) querystr="SELECT domain,enabled FROM domainlist WHERE type = '${list_type}' AND domain = '${domain}'";;
|
|
|
|
|
* ) querystr="SELECT domain,enabled FROM domainlist WHERE type = '${list_type}' AND domain LIKE '%${domain//_/\\_}%' ESCAPE '\\'";;
|
|
|
|
|
esac
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
@ -158,13 +158,13 @@ scanDatabaseTable() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
scanRegexDatabaseTable() {
|
|
|
|
|
local domain list
|
|
|
|
|
local domain list list_type
|
|
|
|
|
domain="${1}"
|
|
|
|
|
list="${2}"
|
|
|
|
|
type="${3:-}"
|
|
|
|
|
list_type="${3:-}"
|
|
|
|
|
|
|
|
|
|
# Query all regex from the corresponding database tables
|
|
|
|
|
mapfile -t regexList < <(pihole-FTL sqlite3 "${gravityDBfile}" "SELECT domain FROM domainlist WHERE type = ${type}" 2> /dev/null)
|
|
|
|
|
mapfile -t regexList < <(pihole-FTL sqlite3 "${gravityDBfile}" "SELECT domain FROM domainlist WHERE type = ${list_type}" 2> /dev/null)
|
|
|
|
|
|
|
|
|
|
# If we have regexps to process
|
|
|
|
|
if [[ "${#regexList[@]}" -ne 0 ]]; then
|
|
|
|
|