Compare commits
1 Commits
master
...
fix/gravit
Author | SHA1 | Date | |
---|---|---|---|
|
7e535f2a7d |
56
gravity.sh
56
gravity.sh
@@ -47,16 +47,6 @@ domainsExtension="domains"
|
|||||||
setupVars="${piholeDir}/setupVars.conf"
|
setupVars="${piholeDir}/setupVars.conf"
|
||||||
if [[ -f "${setupVars}" ]];then
|
if [[ -f "${setupVars}" ]];then
|
||||||
source "${setupVars}"
|
source "${setupVars}"
|
||||||
|
|
||||||
# Remove CIDR mask from IPv4/6 addresses
|
|
||||||
IPV4_ADDRESS="${IPV4_ADDRESS%/*}"
|
|
||||||
IPV6_ADDRESS="${IPV6_ADDRESS%/*}"
|
|
||||||
|
|
||||||
# Determine if IPv4/6 addresses exist
|
|
||||||
if [[ -z "${IPV4_ADDRESS}" ]] && [[ -z "${IPV6_ADDRESS}" ]]; then
|
|
||||||
echo -e " ${COL_LIGHT_RED}No IP addresses found! Please run 'pihole -r' to reconfigure${COL_NC}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo -e " ${COL_LIGHT_RED}Installation Failure: ${setupVars} does not exist! ${COL_NC}
|
echo -e " ${COL_LIGHT_RED}Installation Failure: ${setupVars} does not exist! ${COL_NC}
|
||||||
Please run 'pihole -r', and choose the 'reconfigure' option to fix."
|
Please run 'pihole -r', and choose the 'reconfigure' option to fix."
|
||||||
@@ -564,7 +554,7 @@ compareLists() {
|
|||||||
# Download specified URL and perform checks on HTTP status and file content
|
# Download specified URL and perform checks on HTTP status and file content
|
||||||
gravity_DownloadBlocklistFromUrl() {
|
gravity_DownloadBlocklistFromUrl() {
|
||||||
local url="${1}" cmd_ext="${2}" agent="${3}" adlistID="${4}" saveLocation="${5}" target="${6}" compression="${7}"
|
local url="${1}" cmd_ext="${2}" agent="${3}" adlistID="${4}" saveLocation="${5}" target="${6}" compression="${7}"
|
||||||
local heisenbergCompensator="" patternBuffer str httpCode success=""
|
local heisenbergCompensator="" patternBuffer str httpCode success="" ip
|
||||||
|
|
||||||
# Create temp file to store content on disk instead of RAM
|
# Create temp file to store content on disk instead of RAM
|
||||||
patternBuffer=$(mktemp -p "/tmp" --suffix=".phgpb")
|
patternBuffer=$(mktemp -p "/tmp" --suffix=".phgpb")
|
||||||
@@ -582,7 +572,10 @@ gravity_DownloadBlocklistFromUrl() {
|
|||||||
blocked=false
|
blocked=false
|
||||||
case $BLOCKINGMODE in
|
case $BLOCKINGMODE in
|
||||||
"IP-NODATA-AAAA"|"IP")
|
"IP-NODATA-AAAA"|"IP")
|
||||||
if [[ $(dig "${domain}" +short | grep "${IPV4_ADDRESS}" -c) -ge 1 ]]; then
|
# Get IP address of this domain
|
||||||
|
ip="$(dig "${domain}" +short)"
|
||||||
|
# Check if this IP matches any IP of the system
|
||||||
|
if [[ -n "${ip}" && $(grep -Ec "inet(|6) ${ip}" <<< "$(ip a)") -gt 0 ]]; then
|
||||||
blocked=true
|
blocked=true
|
||||||
fi;;
|
fi;;
|
||||||
"NXDOMAIN")
|
"NXDOMAIN")
|
||||||
@@ -785,26 +778,11 @@ gravity_ShowCount() {
|
|||||||
gravity_Table_Count "vw_regex_whitelist" "regex whitelist filters"
|
gravity_Table_Count "vw_regex_whitelist" "regex whitelist filters"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Parse list of domains into hosts format
|
# Add additional LAN hosts provided by OpenVPN (if available)
|
||||||
gravity_ParseDomainsIntoHosts() {
|
|
||||||
awk -v ipv4="$IPV4_ADDRESS" -v ipv6="$IPV6_ADDRESS" '{
|
|
||||||
# Remove windows CR line endings
|
|
||||||
sub(/\r$/, "")
|
|
||||||
# Parse each line as "ipaddr domain"
|
|
||||||
if(ipv6 && ipv4) {
|
|
||||||
print ipv4" "$0"\n"ipv6" "$0
|
|
||||||
} else if(!ipv6) {
|
|
||||||
print ipv4" "$0
|
|
||||||
} else {
|
|
||||||
print ipv6" "$0
|
|
||||||
}
|
|
||||||
}' >> "${2}" < "${1}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Create "localhost" entries into hosts format
|
|
||||||
gravity_generateLocalList() {
|
gravity_generateLocalList() {
|
||||||
local hostname
|
local addresses hostname
|
||||||
|
|
||||||
|
# Get hostname of this system
|
||||||
if [[ -s "/etc/hostname" ]]; then
|
if [[ -s "/etc/hostname" ]]; then
|
||||||
hostname=$(< "/etc/hostname")
|
hostname=$(< "/etc/hostname")
|
||||||
elif command -v hostname &> /dev/null; then
|
elif command -v hostname &> /dev/null; then
|
||||||
@@ -814,13 +792,25 @@ gravity_generateLocalList() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -e "${hostname}\\npi.hole" > "${localList}.tmp"
|
|
||||||
|
|
||||||
# Empty $localList if it already exists, otherwise, create it
|
# Empty $localList if it already exists, otherwise, create it
|
||||||
: > "${localList}"
|
: > "${localList}"
|
||||||
chmod 644 "${localList}"
|
chmod 644 "${localList}"
|
||||||
|
echo "### Do not modify this file, it will be overwritten by pihole -g" > "${localList}"
|
||||||
|
|
||||||
gravity_ParseDomainsIntoHosts "${localList}.tmp" "${localList}"
|
# Get addresses of currently active interfaces
|
||||||
|
# sed logic breakdown:
|
||||||
|
# /inet(|6) /!d;
|
||||||
|
# Removes all lines from ip a that do not contain either "inet " or "inet6 "
|
||||||
|
# s/^.*inet(|6) //g;
|
||||||
|
# Removes all leading whitespace as well as the "inet " or "inet6 " string
|
||||||
|
# s/\/.*$//g;
|
||||||
|
# Removes CIDR and everything thereafter (e.g., scope properties)
|
||||||
|
addresses="$(sed -r '/inet(|6) /!d;s/^.*inet(|6) //g;s/\/.*$//g;' <<< "$(ip a)")"
|
||||||
|
|
||||||
|
while IFS= read -r addr ; do
|
||||||
|
echo "${addr} ${hostname}" >> "${localList}";
|
||||||
|
echo "${addr} pi.hole" >> "${localList}";
|
||||||
|
done <<< "${addresses}"
|
||||||
|
|
||||||
# Add additional LAN hosts provided by OpenVPN (if available)
|
# Add additional LAN hosts provided by OpenVPN (if available)
|
||||||
if [[ -f "${VPNList}" ]]; then
|
if [[ -f "${VPNList}" ]]; then
|
||||||
|
Reference in New Issue
Block a user