mirror of
https://github.com/pi-hole/pi-hole
synced 2024-12-22 23:08:07 +00:00
29 lines
1.1 KiB
Bash
29 lines
1.1 KiB
Bash
#!/usr/bin/env bash
|
|
# Pi-hole: A black hole for Internet advertisements
|
|
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
|
|
# Network-wide ad blocking via your own hardware.
|
|
#
|
|
# Provides an automated migration subroutine to convert Pi-hole v3.x wildcard domains to Pi-hole v4.x regex filters
|
|
#
|
|
# This file is copyright under the latest version of the EUPL.
|
|
# Please see LICENSE file for your rights under this license.
|
|
|
|
# regexFile set in gravity.sh
|
|
|
|
wildcardFile="/etc/dnsmasq.d/03-pihole-wildcard.conf"
|
|
|
|
convert_wildcard_to_regex() {
|
|
if [ ! -f "${wildcardFile}" ]; then
|
|
return
|
|
fi
|
|
local addrlines domains uniquedomains
|
|
# Obtain wildcard domains from old file
|
|
addrlines="$(grep -oE "/.*/" ${wildcardFile})"
|
|
# Strip "/" from domain names and convert "." to regex-compatible "\."
|
|
domains="$(sed 's/\///g;s/\./\\./g' <<< "${addrlines}")"
|
|
# Remove repeated domains (may have been inserted two times due to A and AAAA blocking)
|
|
uniquedomains="$(uniq <<< "${domains}")"
|
|
# Automatically generate regex filters and remove old wildcards file
|
|
awk '{print "(^|\\.)"$0"$"}' <<< "${uniquedomains}" >> "${regexFile:?}" && rm "${wildcardFile}"
|
|
}
|