Compare commits
11 Commits
fix/gravit
...
feature/lu
Author | SHA1 | Date | |
---|---|---|---|
|
6ce527010b | ||
|
761c1cd305 | ||
|
6f60555f79 | ||
|
a51be7d498 | ||
|
f3ceebbe06 | ||
|
57d9b96b53 | ||
|
5895690b58 | ||
|
d26f8dd665 | ||
|
2ba350984f | ||
|
1fb6366c41 | ||
|
f2e0cf8a92 |
@@ -50,6 +50,8 @@ sudo bash basic-install.sh
|
||||
wget -O basic-install.sh https://install.pi-hole.net
|
||||
sudo bash basic-install.sh
|
||||
```
|
||||
### Method 3: Using Docker to deploy Pi-hole
|
||||
Please refer to the [Pi-hole docker repo](https://github.com/pi-hole/docker-pi-hole) to use the Official Docker Images.
|
||||
|
||||
## [Post-install: Make your network take advantage of Pi-hole](https://docs.pi-hole.net/main/post-install/)
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# Pi-hole: A black hole for Internet advertisements
|
||||
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
|
||||
# (c) 2021 Pi-hole (https://pi-hole.net)
|
||||
# Network-wide ad blocking via your own hardware.
|
||||
#
|
||||
# Generates pihole_debug.log to be used for troubleshooting.
|
||||
@@ -198,6 +198,33 @@ show_disclaimer(){
|
||||
log_write "${DISCLAIMER}"
|
||||
}
|
||||
|
||||
check_for_ftl(){
|
||||
echo_current_diagnostic "Checking for pihole-FTL binary"
|
||||
|
||||
declare -g FTL_PATH
|
||||
read -r FTL_PATH < <(which pihole-FTL)
|
||||
if [ -z "${FTL_PATH}" ]; then
|
||||
log_write "${CROSS} ${COL_RED} Unable to find pihole-FTL binary.${COL_NC}"
|
||||
# Non-zero return value
|
||||
return 2
|
||||
else
|
||||
log_write "${TICK} pihole-FTL: ${COL_GREEN}${FTL_PATH}${COL_NC}"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
check_for_lua(){
|
||||
echo_current_diagnostic "Checking for lua capabilities"
|
||||
|
||||
if ! (${FTL_PATH} lua -v &>/dev/null); then
|
||||
log_write "${CROSS} ${COL_RED} pihole-FTL binary does not have lua capabilites.${COL_NC}"
|
||||
# Non-zero return value
|
||||
return
|
||||
else
|
||||
log_write "${TICK} pihole-FTL: ${COL_GREEN}lua found!${COL_NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
source_setup_variables() {
|
||||
# Display the current test that is running
|
||||
log_write "\\n${COL_PURPLE}*** [ INITIALIZING ]${COL_NC} Sourcing setup variables"
|
||||
@@ -1421,28 +1448,40 @@ make_temporary_log
|
||||
initialize_debug
|
||||
# setupVars.conf needs to be sourced before the networking so the values are
|
||||
# available to the other functions
|
||||
source_setup_variables
|
||||
check_component_versions
|
||||
check_critical_program_versions
|
||||
diagnose_operating_system
|
||||
check_selinux
|
||||
check_firewalld
|
||||
processor_check
|
||||
check_networking
|
||||
check_name_resolution
|
||||
check_dhcp_servers
|
||||
process_status
|
||||
ftl_full_status
|
||||
parse_setup_vars
|
||||
check_x_headers
|
||||
analyze_gravity_list
|
||||
show_groups
|
||||
show_domainlist
|
||||
show_clients
|
||||
show_adlists
|
||||
show_content_of_pihole_files
|
||||
show_messages
|
||||
parse_locale
|
||||
analyze_pihole_log
|
||||
copy_to_debug_log
|
||||
upload_to_tricorder
|
||||
if ! check_for_ftl; then
|
||||
log_write "${COL_RED}Unable to complete debug run. Please contact support for assistance."
|
||||
log_write "Please note the error that is displayed above.${COL_NC}"
|
||||
#Non-zero return value
|
||||
exit 2
|
||||
fi
|
||||
if ! check_for_lua; then
|
||||
log_write "${COL_RED}Unable to complete debug run. Please contact support for assistance."
|
||||
log_write "Please note the error that is displayed above.${COL_NC}"
|
||||
#Non-zero return value
|
||||
exit 2
|
||||
fi
|
||||
# source_setup_variables
|
||||
# check_component_versions
|
||||
# check_critical_program_versions
|
||||
# diagnose_operating_system
|
||||
# check_selinux
|
||||
# check_firewalld
|
||||
# processor_check
|
||||
# check_networking
|
||||
# check_name_resolution
|
||||
# check_dhcp_servers
|
||||
# process_status
|
||||
# ftl_full_status
|
||||
# parse_setup_vars
|
||||
# check_x_headers
|
||||
# analyze_gravity_list
|
||||
# show_groups
|
||||
# show_domainlist
|
||||
# show_clients
|
||||
# show_adlists
|
||||
# show_content_of_pihole_files
|
||||
# show_messages
|
||||
# parse_locale
|
||||
# analyze_pihole_log
|
||||
# copy_to_debug_log
|
||||
# upload_to_tricorder
|
||||
|
@@ -153,7 +153,7 @@ versionOutput() {
|
||||
if [[ -n "$current" ]] && [[ -n "$latest" ]]; then
|
||||
output="${1^} version is $branch$current (Latest: $latest)"
|
||||
elif [[ -n "$current" ]] && [[ -z "$latest" ]]; then
|
||||
output="Current ${1^} version is $branch$current."
|
||||
output="Current ${1^} version is $branch$current"
|
||||
elif [[ -z "$current" ]] && [[ -n "$latest" ]]; then
|
||||
output="Latest ${1^} version is $latest"
|
||||
elif [[ "$curHash" == "N/A" ]] || [[ "$latHash" == "N/A" ]]; then
|
||||
|
@@ -357,10 +357,14 @@ if is_command apt-get ; then
|
||||
# Packages required to run this install script (stored as an array)
|
||||
INSTALLER_DEPS=(dhcpcd5 git "${iproute_pkg}" whiptail dnsutils)
|
||||
# Packages required to run Pi-hole (stored as an array)
|
||||
PIHOLE_DEPS=(cron curl iputils-ping lsof netcat psmisc sudo unzip wget idn2 sqlite3 libcap2-bin dns-root-data libcap2)
|
||||
PIHOLE_DEPS=(cron curl iputils-ping lsof netcat psmisc sudo unzip idn2 sqlite3 libcap2-bin dns-root-data libcap2)
|
||||
# Packages required for the Web admin interface (stored as an array)
|
||||
# It's useful to separate this from Pi-hole, since the two repos are also setup separately
|
||||
PIHOLE_WEB_DEPS=(lighttpd "${phpVer}-common" "${phpVer}-cgi" "${phpVer}-${phpSqlite}" "${phpVer}-xml" "${phpVer}-json" "${phpVer}-intl")
|
||||
PIHOLE_WEB_DEPS=(lighttpd "${phpVer}-common" "${phpVer}-cgi" "${phpVer}-${phpSqlite}" "${phpVer}-xml" "${phpVer}-intl")
|
||||
# Prior to PHP8.0, JSON functionality is provided as dedicated module, required by Pi-hole AdminLTE: https://www.php.net/manual/json.installation.php
|
||||
if [[ "${phpInsNewer}" != true || "${phpInsMajor}" -lt 8 ]]; then
|
||||
PIHOLE_WEB_DEPS+=("${phpVer}-json")
|
||||
fi
|
||||
# The Web server user,
|
||||
LIGHTTPD_USER="www-data"
|
||||
# group,
|
||||
|
58
gravity.sh
58
gravity.sh
@@ -47,6 +47,16 @@ domainsExtension="domains"
|
||||
setupVars="${piholeDir}/setupVars.conf"
|
||||
if [[ -f "${setupVars}" ]];then
|
||||
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
|
||||
echo -e " ${COL_LIGHT_RED}Installation Failure: ${setupVars} does not exist! ${COL_NC}
|
||||
Please run 'pihole -r', and choose the 'reconfigure' option to fix."
|
||||
@@ -554,7 +564,7 @@ compareLists() {
|
||||
# Download specified URL and perform checks on HTTP status and file content
|
||||
gravity_DownloadBlocklistFromUrl() {
|
||||
local url="${1}" cmd_ext="${2}" agent="${3}" adlistID="${4}" saveLocation="${5}" target="${6}" compression="${7}"
|
||||
local heisenbergCompensator="" patternBuffer str httpCode success="" ip
|
||||
local heisenbergCompensator="" patternBuffer str httpCode success=""
|
||||
|
||||
# Create temp file to store content on disk instead of RAM
|
||||
patternBuffer=$(mktemp -p "/tmp" --suffix=".phgpb")
|
||||
@@ -572,10 +582,7 @@ gravity_DownloadBlocklistFromUrl() {
|
||||
blocked=false
|
||||
case $BLOCKINGMODE in
|
||||
"IP-NODATA-AAAA"|"IP")
|
||||
# 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
|
||||
if [[ $(dig "${domain}" +short | grep "${IPV4_ADDRESS}" -c) -ge 1 ]]; then
|
||||
blocked=true
|
||||
fi;;
|
||||
"NXDOMAIN")
|
||||
@@ -778,11 +785,26 @@ gravity_ShowCount() {
|
||||
gravity_Table_Count "vw_regex_whitelist" "regex whitelist filters"
|
||||
}
|
||||
|
||||
# Add additional LAN hosts provided by OpenVPN (if available)
|
||||
gravity_generateLocalList() {
|
||||
local addresses hostname
|
||||
# Parse list of domains into hosts format
|
||||
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() {
|
||||
local hostname
|
||||
|
||||
# Get hostname of this system
|
||||
if [[ -s "/etc/hostname" ]]; then
|
||||
hostname=$(< "/etc/hostname")
|
||||
elif command -v hostname &> /dev/null; then
|
||||
@@ -792,25 +814,13 @@ gravity_generateLocalList() {
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo -e "${hostname}\\npi.hole" > "${localList}.tmp"
|
||||
|
||||
# Empty $localList if it already exists, otherwise, create it
|
||||
: > "${localList}"
|
||||
chmod 644 "${localList}"
|
||||
echo "### Do not modify this file, it will be overwritten by pihole -g" > "${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}"
|
||||
gravity_ParseDomainsIntoHosts "${localList}.tmp" "${localList}"
|
||||
|
||||
# Add additional LAN hosts provided by OpenVPN (if available)
|
||||
if [[ -f "${VPNList}" ]]; then
|
||||
|
Reference in New Issue
Block a user