mirror of
https://github.com/pi-hole/pi-hole.git
synced 2024-11-15 10:43:55 +00:00
640398ced4
We went with tabs earlier, may as well make that the "standard". Easy enough to switch to spaces too if that's desired with expand(1)
142 lines
3.3 KiB
Bash
Executable file
142 lines
3.3 KiB
Bash
Executable file
#!/bin/bash
|
|
# Pi-hole: A black hole for Internet advertisements
|
|
# (c) 2015, 2016 by Jacob Salmela
|
|
# Network-wide ad blocking via your Raspberry Pi
|
|
# http://pi-hole.net
|
|
# Controller for all pihole scripts and functions.
|
|
#
|
|
# Pi-hole is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
# Must be root to use this tool
|
|
if [[ ! $EUID -eq 0 ]];then
|
|
if [ -x "$(command -v sudo)" ];then
|
|
exec sudo bash "$0" "$@"
|
|
exit $?
|
|
else
|
|
echo "::: sudo is needed to run pihole commands. Please run this script as root or install sudo."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
whitelistFunc() {
|
|
shift
|
|
/opt/pihole/whitelist.sh "$@"
|
|
exit 0
|
|
}
|
|
|
|
blacklistFunc() {
|
|
shift
|
|
/opt/pihole/blacklist.sh "$@"
|
|
exit 0
|
|
}
|
|
|
|
debugFunc() {
|
|
/opt/pihole/piholeDebug.sh
|
|
exit 0
|
|
}
|
|
|
|
flushFunc() {
|
|
/opt/pihole/piholeLogFlush.sh
|
|
exit 0
|
|
}
|
|
|
|
|
|
updatePiholeFunc() {
|
|
/opt/pihole/update.sh
|
|
exit 0
|
|
}
|
|
|
|
reconfigurePiholeFunc() {
|
|
/etc/.pihole/automated\ install/basic-install.sh --reconfigure
|
|
exit 0;
|
|
}
|
|
|
|
updateGravityFunc() {
|
|
/opt/pihole/gravity.sh "$@"
|
|
exit 0
|
|
}
|
|
|
|
setupLCDFunction() {
|
|
/opt/pihole/setupLCD.sh
|
|
exit 0
|
|
}
|
|
|
|
queryFunc() {
|
|
domain=$2
|
|
for list in /etc/pihole/list.*; do
|
|
count=$(grep ${domain} $list | wc -l)
|
|
echo "::: ${list} (${count} results)"
|
|
if [[ ${count} > 0 ]]; then
|
|
grep ${domain} ${list}
|
|
fi
|
|
echo ""
|
|
done
|
|
exit 0
|
|
}
|
|
|
|
chronometerFunc() {
|
|
shift
|
|
/opt/pihole/chronometer.sh "$@"
|
|
exit 0
|
|
}
|
|
|
|
|
|
uninstallFunc() {
|
|
/opt/pihole/uninstall.sh
|
|
exit 0
|
|
}
|
|
|
|
versionFunc() {
|
|
shift
|
|
/opt/pihole/version.sh "$@"
|
|
exit 0
|
|
}
|
|
|
|
helpFunc() {
|
|
cat << EOM
|
|
::: Control all PiHole specific functions!
|
|
:::
|
|
::: Usage: pihole [options]
|
|
::: Add -h after -w (whitelist), -b (blacklist), or -c (chronometer) for more information on usage
|
|
:::
|
|
::: Options:
|
|
::: -w, whitelist Whitelist domains
|
|
::: -b, blacklist Blacklist domains
|
|
::: -d, debug Start a debugging session if having trouble
|
|
::: -f, flush Flush the pihole.log file
|
|
::: -up, updatePihole Update Pi-hole
|
|
::: -g, updateGravity Update the list of ad-serving domains
|
|
::: -s, setupLCD Automatically configures the Pi to use the 2.8 LCD screen to display stats on it
|
|
::: -c, chronometer Calculates stats and displays to an LCD
|
|
::: -h, help Show this help dialog
|
|
::: -v, version Show current versions
|
|
::: -q, query Query the adlists for a specific domain
|
|
::: uninstall Uninstall Pi-Hole from your system :(!
|
|
EOM
|
|
exit 1
|
|
}
|
|
|
|
if [[ $# = 0 ]]; then
|
|
helpFunc
|
|
fi
|
|
|
|
# Handle redirecting to specific functions based on arguments
|
|
case "${1}" in
|
|
"-w" | "whitelist" ) whitelistFunc "$@";;
|
|
"-b" | "blacklist" ) blacklistFunc "$@";;
|
|
"-d" | "debug" ) debugFunc;;
|
|
"-f" | "flush" ) flushFunc;;
|
|
"-up" | "updatePihole" ) updatePiholeFunc;;
|
|
"-r" | "reconfigure" ) reconfigurePiholeFunc;;
|
|
"-g" | "updateGravity" ) updateGravityFunc "$@";;
|
|
"-s" | "setupLCD" ) setupLCDFunction;;
|
|
"-c" | "chronometer" ) chronometerFunc "$@";;
|
|
"-h" | "help" ) helpFunc;;
|
|
"-v" | "version" ) versionFunc "$@";;
|
|
"-q" | "query" ) queryFunc "$@";;
|
|
"uninstall" ) uninstallFunc;;
|
|
* ) helpFunc;;
|
|
esac
|