Update pihole
This commit is contained in:
parent
15f6c6709b
commit
6e01a43df6
|
@ -31,11 +31,11 @@
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
VARIANTS=''
|
VARIANTS='full full-vim adblocker'
|
||||||
|
|
||||||
PIHOLE_IFACE=eth0
|
PIHOLE_IFACE=eth0
|
||||||
PIHOLE_DNS1='8.8.8.8'
|
PIHOLE_DNS1='85.214.73.63'
|
||||||
PIHOLE_DNS2='8.8.4.4'
|
PIHOLE_DNS2='213.73.91.35'
|
||||||
|
|
||||||
piholeBasename=pihole
|
piholeBasename=pihole
|
||||||
piholeDir=/etc/$piholeBasename
|
piholeDir=/etc/$piholeBasename
|
||||||
|
@ -51,6 +51,16 @@ pihole_variables=(ONION_ONLY
|
||||||
PIHOLE_DNS1
|
PIHOLE_DNS1
|
||||||
PIHOLE_DNS2)
|
PIHOLE_DNS2)
|
||||||
|
|
||||||
|
function pihole_copy_files {
|
||||||
|
cp $INSTALL_DIR/pihole/adlists.default $piholeDir/adlists.default
|
||||||
|
if [ ! -f $PIHOLE_ADLIST ]; then
|
||||||
|
cp $INSTALL_DIR/pihole/adlists.default $PIHOLE_ADLIST
|
||||||
|
fi
|
||||||
|
cp $INSTALL_DIR/pihole/advanced/Scripts/* /opt/$piholeBasename
|
||||||
|
cp $INSTALL_DIR/pihole/advanced/01-pihole.conf /etc/dnsmasq.d/01-pihole.conf
|
||||||
|
cp $INSTALL_DIR/pihole/advanced/pihole.cron /etc/cron.d/pihole
|
||||||
|
}
|
||||||
|
|
||||||
function pihole_update {
|
function pihole_update {
|
||||||
if [ ! -f /usr/local/bin/gravity.sh ]; then
|
if [ ! -f /usr/local/bin/gravity.sh ]; then
|
||||||
return
|
return
|
||||||
|
@ -67,12 +77,138 @@ function pihole_update {
|
||||||
echo "piholeDNS1=${PIHOLE_DNS1}" >> ${setupVars}
|
echo "piholeDNS1=${PIHOLE_DNS1}" >> ${setupVars}
|
||||||
echo "piholeDNS2=${PIHOLE_DNS1}" >> ${setupVars}
|
echo "piholeDNS2=${PIHOLE_DNS1}" >> ${setupVars}
|
||||||
|
|
||||||
/usr/local/bin/gravity.sh
|
echo 'domain-needed' > /etc/dnsmasq.conf
|
||||||
|
echo 'bogus-priv' >> /etc/dnsmasq.conf
|
||||||
|
echo 'no-resolv' >> /etc/dnsmasq.conf
|
||||||
|
echo "server=${PIHOLE_DNS1}" >> /etc/dnsmasq.conf
|
||||||
|
echo "server=${PIHOLE_DNS2}" >> /etc/dnsmasq.conf
|
||||||
|
echo "interface=${PIHOLE_IFACE}" >> /etc/dnsmasq.conf
|
||||||
|
echo 'listen-address=127.0.0.1' >> /etc/dnsmasq.conf
|
||||||
|
echo 'cache-size=10000' >> /etc/dnsmasq.conf
|
||||||
|
echo 'log-queries' >> /etc/dnsmasq.conf
|
||||||
|
echo 'log-facility=/var/log/pihole.log' >> /etc/dnsmasq.conf
|
||||||
|
echo 'local-ttl=300' >> /etc/dnsmasq.conf
|
||||||
|
echo 'log-async' >> /etc/dnsmasq.conf
|
||||||
|
|
||||||
|
systemctl reload dnsmasq
|
||||||
|
|
||||||
|
pihole -g
|
||||||
|
}
|
||||||
|
|
||||||
|
function pihole_change_upstream_dns {
|
||||||
|
data=$(tempfile 2>/dev/null)
|
||||||
|
trap "rm -f $data" 0 1 2 5 15
|
||||||
|
dialog --backtitle $"Ad Blocker Upstream DNS" \
|
||||||
|
--radiolist $"Pick a domain name service (DNS):" 25 50 16 \
|
||||||
|
1 $"Digital Courage" on \
|
||||||
|
2 $"German Privacy Foundation 1" off \
|
||||||
|
3 $"German Privacy Foundation 2" off \
|
||||||
|
4 $"Chaos Computer Club" off \
|
||||||
|
5 $"ClaraNet" off \
|
||||||
|
6 $"OpenNIC 1" off \
|
||||||
|
7 $"OpenNIC 2" off \
|
||||||
|
8 $"OpenNIC 3" off \
|
||||||
|
9 $"OpenNIC 4" off \
|
||||||
|
10 $"OpenNIC 5" off \
|
||||||
|
11 $"OpenNIC 6" off \
|
||||||
|
12 $"OpenNIC 7" off \
|
||||||
|
13 $"PowerNS" off \
|
||||||
|
14 $"ValiDOM" off \
|
||||||
|
15 $"Freie Unzensierte" off \
|
||||||
|
16 $"Google" off 2> $data
|
||||||
|
sel=$?
|
||||||
|
case $sel in
|
||||||
|
1) exit 1;;
|
||||||
|
255) exit 1;;
|
||||||
|
esac
|
||||||
|
case $(cat $data) in
|
||||||
|
1) PIHOLE_DNS1='85.214.73.63'
|
||||||
|
PIHOLE_DNS2='213.73.91.35'
|
||||||
|
;;
|
||||||
|
2) PIHOLE_DNS1='87.118.100.175'
|
||||||
|
PIHOLE_DNS2='94.75.228.29'
|
||||||
|
;;
|
||||||
|
3) PIHOLE_DNS1='85.25.251.254'
|
||||||
|
PIHOLE_DNS2='2.141.58.13'
|
||||||
|
;;
|
||||||
|
4) PIHOLE_DNS1='213.73.91.35'
|
||||||
|
PIHOLE_DNS2='85.214.73.63'
|
||||||
|
;;
|
||||||
|
5) PIHOLE_DNS1='212.82.225.7'
|
||||||
|
PIHOLE_DNS2='212.82.226.212'
|
||||||
|
;;
|
||||||
|
6) PIHOLE_DNS1='58.6.115.42'
|
||||||
|
PIHOLE_DNS2='58.6.115.43'
|
||||||
|
;;
|
||||||
|
7) PIHOLE_DNS1='119.31.230.42'
|
||||||
|
PIHOLE_DNS2='200.252.98.162'
|
||||||
|
;;
|
||||||
|
8) PIHOLE_DNS1='217.79.186.148'
|
||||||
|
PIHOLE_DNS2='81.89.98.6'
|
||||||
|
;;
|
||||||
|
9) PIHOLE_DNS1='78.159.101.37'
|
||||||
|
PIHOLE_DNS2='203.167.220.153'
|
||||||
|
;;
|
||||||
|
10) PIHOLE_DNS1='82.229.244.191'
|
||||||
|
PIHOLE_DNS2='82.229.244.191'
|
||||||
|
;;
|
||||||
|
11) PIHOLE_DNS1='216.87.84.211'
|
||||||
|
PIHOLE_DNS2='66.244.95.20'
|
||||||
|
;;
|
||||||
|
12) PIHOLE_DNS1='207.192.69.155'
|
||||||
|
PIHOLE_DNS2='72.14.189.120'
|
||||||
|
;;
|
||||||
|
13) PIHOLE_DNS1='194.145.226.26'
|
||||||
|
PIHOLE_DNS2='77.220.232.44'
|
||||||
|
;;
|
||||||
|
14) PIHOLE_DNS1='78.46.89.147'
|
||||||
|
PIHOLE_DNS2='88.198.75.145'
|
||||||
|
;;
|
||||||
|
15) PIHOLE_DNS1='85.25.149.144'
|
||||||
|
PIHOLE_DNS2='87.106.37.196'
|
||||||
|
;;
|
||||||
|
16) PIHOLE_DNS1='8.8.8.8'
|
||||||
|
PIHOLE_DNS2='4.4.4.4'
|
||||||
|
;;
|
||||||
|
255) exit 1;;
|
||||||
|
esac
|
||||||
|
write_config_param "PIHOLE_DNS1" "$PIHOLE_DNS1"
|
||||||
|
write_config_param "PIHOLE_DNS2" "$PIHOLE_DNS2"
|
||||||
|
pihole_update
|
||||||
}
|
}
|
||||||
|
|
||||||
function configure_interactive_pihole {
|
function configure_interactive_pihole {
|
||||||
echo -n ''
|
while true
|
||||||
# TODO allow editing of blacklist
|
do
|
||||||
|
data=$(tempfile 2>/dev/null)
|
||||||
|
trap "rm -f $data" 0 1 2 5 15
|
||||||
|
dialog --backtitle $"Freedombone Control Panel" \
|
||||||
|
--title $"Ad Blocker" \
|
||||||
|
--radiolist $"Choose an operation:" 14 70 5 \
|
||||||
|
1 $"Edit ads list" off \
|
||||||
|
2 $"Edit blacklisted domain names" off \
|
||||||
|
3 $"Edit whitelisted domain names" off \
|
||||||
|
4 $"Change upstream DNS servers" off \
|
||||||
|
5 $"Exit" on 2> $data
|
||||||
|
sel=$?
|
||||||
|
case $sel in
|
||||||
|
1) exit 1;;
|
||||||
|
255) exit 1;;
|
||||||
|
esac
|
||||||
|
case $(cat $data) in
|
||||||
|
1) editor $PIHOLE_ADLIST
|
||||||
|
pihole_update
|
||||||
|
;;
|
||||||
|
2) editor $PIHOLE_BLACKLIST
|
||||||
|
pihole_update
|
||||||
|
;;
|
||||||
|
3) editor $PIHOLE_WHITELIST
|
||||||
|
pihole_update
|
||||||
|
;;
|
||||||
|
4) pihole_change_upstream_dns;;
|
||||||
|
5) break;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_interactive_pihole {
|
function install_interactive_pihole {
|
||||||
|
@ -88,23 +224,31 @@ function reconfigure_pihole {
|
||||||
}
|
}
|
||||||
|
|
||||||
function upgrade_pihole {
|
function upgrade_pihole {
|
||||||
|
function_check set_repo_commit
|
||||||
|
set_repo_commit $INSTALL_DIR/pihole "pihole commit" "$PIHOLE_COMMIT" $PIHOLE_REPO
|
||||||
|
|
||||||
|
pihole_copy_files
|
||||||
pihole_update
|
pihole_update
|
||||||
}
|
}
|
||||||
|
|
||||||
function backup_local_pihole {
|
function backup_local_pihole {
|
||||||
echo -n ''
|
function_check backup_directory_to_usb
|
||||||
|
backup_directory_to_usb $piholeDir pihole
|
||||||
}
|
}
|
||||||
|
|
||||||
function restore_local_pihole {
|
function restore_local_pihole {
|
||||||
echo -n ''
|
function_check restore_directory_from_usb
|
||||||
|
restore_directory_from_usb / pihole
|
||||||
}
|
}
|
||||||
|
|
||||||
function backup_remote_pihole {
|
function backup_remote_pihole {
|
||||||
echo -n ''
|
function_check backup_directory_to_friend
|
||||||
|
backup_directory_to_friend $piholeDir pihole
|
||||||
}
|
}
|
||||||
|
|
||||||
function restore_remote_pihole {
|
function restore_remote_pihole {
|
||||||
echo -n ''
|
function_check restore_directory_from_friend
|
||||||
|
restore_directory_from_friend / pihole
|
||||||
}
|
}
|
||||||
|
|
||||||
function remove_pihole {
|
function remove_pihole {
|
||||||
|
@ -146,17 +290,22 @@ function install_pihole {
|
||||||
adduser --disabled-login --gecos 'pi-hole' pihole
|
adduser --disabled-login --gecos 'pi-hole' pihole
|
||||||
usermod -a -G www-data pihole
|
usermod -a -G www-data pihole
|
||||||
|
|
||||||
|
systemctl enable dnsmasq
|
||||||
|
|
||||||
if [ ! -d $INSTALL_DIR ]; then
|
if [ ! -d $INSTALL_DIR ]; then
|
||||||
mkdir -p $INSTALL_DIR
|
mkdir -p $INSTALL_DIR
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd $INSTALL_DIR
|
|
||||||
git_clone $PIHOLE_REPO pihole
|
|
||||||
if [ ! -d $INSTALL_DIR/pihole ]; then
|
if [ ! -d $INSTALL_DIR/pihole ]; then
|
||||||
exit 523925
|
cd $INSTALL_DIR
|
||||||
|
git_clone $PIHOLE_REPO pihole
|
||||||
|
if [ ! -d $INSTALL_DIR/pihole ]; then
|
||||||
|
exit 523925
|
||||||
|
fi
|
||||||
|
cd $INSTALL_DIR/pihole
|
||||||
|
git checkout $PIHOLE_COMMIT -b $PIHOLE_COMMIT
|
||||||
|
set_completion_param "pihole commit" "$PIHOLE_COMMIT"
|
||||||
fi
|
fi
|
||||||
cd $INSTALL_DIR/pihole
|
|
||||||
git checkout $PIHOLE_COMMIT -b $PIHOLE_COMMIT
|
|
||||||
|
|
||||||
if [ ! -d /var/www/pihole/htdocs ]; then
|
if [ ! -d /var/www/pihole/htdocs ]; then
|
||||||
mkdir -p /var/www/pihole/htdocs
|
mkdir -p /var/www/pihole/htdocs
|
||||||
|
@ -168,25 +317,16 @@ function install_pihole {
|
||||||
echo '</body>' >> /var/www/pihole/htdocs/index.html
|
echo '</body>' >> /var/www/pihole/htdocs/index.html
|
||||||
echo '</html>' >> /var/www/pihole/htdocs/index.html
|
echo '</html>' >> /var/www/pihole/htdocs/index.html
|
||||||
|
|
||||||
echo 'domain-needed' > /etc/dnsmasq.conf
|
|
||||||
echo 'bogus-priv' >> /etc/dnsmasq.conf
|
|
||||||
echo 'no-resolv' >> /etc/dnsmasq.conf
|
|
||||||
echo "server=${PIHOLE_DNS1}" >> /etc/dnsmasq.conf
|
|
||||||
echo "server=${PIHOLE_DNS2}" >> /etc/dnsmasq.conf
|
|
||||||
echo "interface=${PIHOLE_IFACE}" >> /etc/dnsmasq.conf
|
|
||||||
echo 'listen-address=127.0.0.1' >> /etc/dnsmasq.conf
|
|
||||||
echo 'cache-size=10000' >> /etc/dnsmasq.conf
|
|
||||||
echo 'log-queries' >> /etc/dnsmasq.conf
|
|
||||||
echo 'log-facility=/var/log/pihole.log' >> /etc/dnsmasq.conf
|
|
||||||
echo 'local-ttl=300' >> /etc/dnsmasq.conf
|
|
||||||
echo 'log-async' >> /etc/dnsmasq.conf
|
|
||||||
|
|
||||||
if [ ! -f $INSTALL_DIR/pihole/gravity.sh ]; then
|
if [ ! -f $INSTALL_DIR/pihole/gravity.sh ]; then
|
||||||
exit 26738
|
exit 26738
|
||||||
fi
|
fi
|
||||||
cp $INSTALL_DIR/pihole/gravity.sh /usr/local/bin/gravity.sh
|
cp $INSTALL_DIR/pihole/gravity.sh /usr/local/bin/gravity.sh
|
||||||
cp $INSTALL_DIR/pihole/pihole /usr/local/bin/pihole
|
|
||||||
chmod 755 /usr/local/bin/gravity.sh
|
chmod 755 /usr/local/bin/gravity.sh
|
||||||
|
|
||||||
|
if [ ! -f $INSTALL_DIR/pihole/pihole ]; then
|
||||||
|
exit 52935
|
||||||
|
fi
|
||||||
|
cp $INSTALL_DIR/pihole/pihole /usr/local/bin/pihole
|
||||||
chmod 755 /usr/local/bin/pihole
|
chmod 755 /usr/local/bin/pihole
|
||||||
|
|
||||||
if [ ! -d $piholeDir ]; then
|
if [ ! -d $piholeDir ]; then
|
||||||
|
@ -195,12 +335,9 @@ function install_pihole {
|
||||||
if [ ! -d /opt/pihole ]; then
|
if [ ! -d /opt/pihole ]; then
|
||||||
mkdir -p /opt/pihole
|
mkdir -p /opt/pihole
|
||||||
fi
|
fi
|
||||||
cp $INSTALL_DIR/pihole/adlists.default $piholeDir/adlists.default:
|
|
||||||
cp $INSTALL_DIR/pihole/advanced/Scripts/* /opt/$piholeBasename
|
|
||||||
cp $INSTALL_DIR/pihole/advanced/01-pihole.conf /etc/dnsmasq.d/01-pihole.conf
|
|
||||||
cp $INSTALL_DIR/pihole/advanced/pihole.cron /etc/cron.d/pihole
|
|
||||||
|
|
||||||
systemctl enable dnsmasq
|
pihole_copy_files
|
||||||
|
|
||||||
chown -R www-data:www-data /var/www/pihole/htdocs
|
chown -R www-data:www-data /var/www/pihole/htdocs
|
||||||
|
|
||||||
pihole_update
|
pihole_update
|
||||||
|
|
Loading…
Reference in New Issue