mirror of
https://github.com/pi-hole/pi-hole.git
synced 2024-12-24 13:50:17 +00:00
moving to functions
Also download the whitelist script. Ask for donations for IPv6 support.
This commit is contained in:
parent
46b4000e75
commit
76c217d9cc
1 changed files with 137 additions and 77 deletions
|
@ -29,9 +29,10 @@ IPv4mask=$(ifconfig | awk -F':' '/inet addr/ && !/127.0.0.1/ {print $4}')
|
|||
IPv4gw=$(ip route show | awk '/default\ via/ {print $3}')
|
||||
|
||||
# IPv6 support to be added later
|
||||
#IPv6addr=$(ip addr show | awk '/scope\ global/ && /ff:fe/ {print $2}' | cut -d'/' -f1)
|
||||
#IPv6eui64=$(ip addr show | awk '/scope\ global/ && /ff:fe/ {print $2}' | cut -d'/' -f1)
|
||||
#IPv6linkLocal=$(ip addr show | awk '/inet/ && /scope\ link/ && /fe80/ {print $2}' | cut -d'/' -f1)
|
||||
|
||||
ethernetDevice="eth0"
|
||||
availableInterfaces=$(ip link show | awk -F' ' '/[0-9]: [a-z]/ {print $2}' | grep -v "lo" | cut -d':' -f1)
|
||||
dhcpcdFile=/etc/dhcpcd.conf
|
||||
|
||||
####### FUCNTIONS ##########
|
||||
|
@ -51,57 +52,8 @@ else
|
|||
fi
|
||||
}
|
||||
|
||||
set_static_ip()
|
||||
welcomeDialogs()
|
||||
{
|
||||
# Append these lines to /etc/dhcpcd.conf to enable a static IP
|
||||
echo "interface $ethernetDevice
|
||||
static ip_address=$IPv4addr/24
|
||||
static routers=$IPv4gw
|
||||
static domain_name_servers=$IPv4gw" | sudo tee -a $dhcpcdFile >/dev/null
|
||||
}
|
||||
|
||||
installPihole()
|
||||
{
|
||||
sudo apt-get update
|
||||
sudo apt-get -y upgrade
|
||||
sudo apt-get -y install dnsutils bc toilet
|
||||
sudo apt-get -y install dnsmasq
|
||||
sudo apt-get -y install lighttpd php5-common php5-cgi php5
|
||||
sudo mkdir /var/www/html
|
||||
sudo chown www-data:www-data /var/www/html
|
||||
sudo chmod 775 /var/www/html
|
||||
sudo usermod -a -G www-data pi
|
||||
sudo service dnsmasq stop
|
||||
sudo service lighttpd stop
|
||||
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
|
||||
sudo mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig
|
||||
sudo mv /var/www/html/index.lighttpd.html /var/www/html/index.lighttpd.orig
|
||||
sudo curl -o /etc/dnsmasq.conf https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/dnsmasq.conf
|
||||
sudo curl -o /etc/lighttpd/lighttpd.conf https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/lighttpd.conf
|
||||
sudo mv /etc/crontab /etc/crontab.orig
|
||||
sudo curl -o /etc/crontab https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/pihole.cron
|
||||
sudo lighty-enable-mod fastcgi fastcgi-php
|
||||
sudo mkdir /var/www/html/pihole
|
||||
sudo curl -o /var/www/html/pihole/index.html https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/index.html
|
||||
sudo wget https://github.com/jacobsalmela/AdminLTE/archive/master.zip -O /var/www/master.zip
|
||||
sudo unzip -o /var/www/master.zip -d /var/www/html/
|
||||
sudo mv /var/www/html/AdminLTE-master /var/www/html/admin
|
||||
sudo rm /var/www/master.zip 2>/dev/null
|
||||
sudo touch /var/log/pihole.log
|
||||
sudo chmod 644 /var/log/pihole.log
|
||||
sudo chown dnsmasq:root /var/log/pihole.log
|
||||
sudo curl -o /usr/local/bin/gravity.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/installation/gravity.sh
|
||||
sudo curl -o /usr/local/bin/chronometer.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/Scripts/chronometer.sh
|
||||
sudo chmod 755 /usr/local/bin/gravity.sh
|
||||
sudo chmod 755 /usr/local/bin/chronometer.sh
|
||||
sudo /usr/local/bin/gravity.sh
|
||||
sudo service networking restart
|
||||
}
|
||||
|
||||
######## SCRIPT ############
|
||||
# Just back up the original Pi-hole right away since it won't take long and it gets it out of the way
|
||||
backupLegacyPihole
|
||||
|
||||
# Display the welcome dialog
|
||||
whiptail --msgbox --backtitle "Welcome" --title "Pi-hole automated installer" "This installer will transform your Raspberry Pi into a network-wide ad blocker!" $r $c
|
||||
|
||||
|
@ -109,7 +61,34 @@ whiptail --msgbox --backtitle "Welcome" --title "Pi-hole automated installer" "T
|
|||
whiptail --msgbox --backtitle "Initating network interface" --title "Static IP Needed" "The Pi-hole is a SERVER so it needs a STATIC IP ADDRESS to function properly.
|
||||
|
||||
In the next section, you can choose to use your current network settings (DHCP) or to manually edit them." $r $c
|
||||
}
|
||||
|
||||
use4andor6()
|
||||
{
|
||||
# Let use select IPv4 and/or IPv6
|
||||
cmd=(whiptail --separate-output --checklist "Select Protocols" $r $c 2)
|
||||
options=(IPv4 "Block ads over IPv4" on
|
||||
IPv6 "Block ads over IPv4" off)
|
||||
choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
|
||||
clear
|
||||
for choice in $choices
|
||||
do
|
||||
case $choice in
|
||||
IPv4)
|
||||
echo "IPv4 selected."
|
||||
useIPv4=true
|
||||
;;
|
||||
IPv6)
|
||||
echo "IPv6 selected."
|
||||
useIPv6=true
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
getStaticIPv4Settings()
|
||||
{
|
||||
# Ask if the user wannts to use DHCP settings as their static IP
|
||||
if (whiptail --backtitle "Calibrating network interface" --title "Static IP Address" --yesno "Do you want to use your current network settings as a static address?
|
||||
|
||||
|
@ -119,9 +98,9 @@ if (whiptail --backtitle "Calibrating network interface" --title "Static IP Addr
|
|||
# If they choose yes, let the user know that the IP address will not be available via DHCP and may cause a conflict.
|
||||
whiptail --msgbox --backtitle "IP information" --title "FYI: IP Conflict" "It is possible your router could still try to assign this IP to a device, which would cause a conflict. But in most cases the router is smart enough to not do that.
|
||||
|
||||
If you are worried, either manually set the address, or modify the DHCP reservation pool so it does not include the IP you want.
|
||||
If you are worried, either manually set the address, or modify the DHCP reservation pool so it does not include the IP you want.
|
||||
|
||||
It is also possible to use a DHCP reservation, but if you are going to do that, you might as well set a static address." $r $c
|
||||
It is also possible to use a DHCP reservation, but if you are going to do that, you might as well set a static address." $r $c
|
||||
# Nothing else to do since the variables are already set above
|
||||
else
|
||||
# Otherwise, we need to ask the user to input their desired settings.
|
||||
|
@ -151,7 +130,6 @@ else
|
|||
echo $IPv4addr > /tmp/piholeIP
|
||||
# After that's done, the loop ends and we move on
|
||||
ipSettingsCorrect=True
|
||||
|
||||
else
|
||||
# If the settings are wrong, the loop continues
|
||||
ipSettingsCorrect=False
|
||||
|
@ -174,12 +152,94 @@ else
|
|||
echo "User canceled."
|
||||
exit
|
||||
fi
|
||||
done
|
||||
done
|
||||
# End the if statement for DHCP vs. static
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
setStaticIPv4()
|
||||
{
|
||||
# Append these lines to /etc/dhcpcd.conf to enable a static IP
|
||||
echo "interface $ethernetDevice
|
||||
static ip_address=$IPv4addr/24
|
||||
static routers=$IPv4gw
|
||||
static domain_name_servers=$IPv4gw" | sudo tee -a $dhcpcdFile >/dev/null
|
||||
}
|
||||
|
||||
installPihole()
|
||||
{
|
||||
sudo apt-get update
|
||||
sudo apt-get -y upgrade
|
||||
sudo apt-get -y install dnsutils bc toilet
|
||||
sudo apt-get -y install dnsmasq
|
||||
sudo apt-get -y install lighttpd php5-common php5-cgi php5
|
||||
sudo mkdir /var/www/html
|
||||
sudo chown www-data:www-data /var/www/html
|
||||
sudo chmod 775 /var/www/html
|
||||
sudo usermod -a -G www-data pi
|
||||
sudo service dnsmasq stop
|
||||
sudo service lighttpd stop
|
||||
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
|
||||
sudo mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig
|
||||
sudo mv /var/www/html/index.lighttpd.html /var/www/html/index.lighttpd.orig
|
||||
sudo mv /etc/crontab /etc/crontab.orig
|
||||
sudo curl -o /etc/dnsmasq.conf https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/dnsmasq.conf
|
||||
sudo curl -o /etc/lighttpd/lighttpd.conf https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/lighttpd.conf
|
||||
sudo mv /etc/crontab /etc/crontab.orig
|
||||
sudo curl -o /etc/crontab https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/pihole.cron
|
||||
sudo lighty-enable-mod fastcgi fastcgi-php
|
||||
sudo mkdir /var/www/html/pihole
|
||||
sudo curl -o /var/www/html/pihole/index.html https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/index.html
|
||||
sudo wget https://github.com/jacobsalmela/AdminLTE/archive/master.zip -O /var/www/master.zip
|
||||
sudo unzip -o /var/www/master.zip -d /var/www/html/
|
||||
sudo mv /var/www/html/AdminLTE-master /var/www/html/admin
|
||||
sudo rm /var/www/master.zip 2>/dev/null
|
||||
sudo touch /var/log/pihole.log
|
||||
sudo chmod 644 /var/log/pihole.log
|
||||
sudo chown dnsmasq:root /var/log/pihole.log
|
||||
sudo curl -o /usr/local/bin/gravity.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/installation/gravity.sh
|
||||
sudo curl -o /usr/local/bin/chronometer.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/Scripts/chronometer.sh
|
||||
sudo curl -o /usr/local/bin/whitelist.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/Scripts/whitelist.sh
|
||||
sudo chmod 755 /usr/local/bin/gravity.sh
|
||||
sudo chmod 755 /usr/local/bin/chronometer.sh
|
||||
sudo chmod 755 /usr/local/bin/whitelist.sh
|
||||
sudo /usr/local/bin/gravity.sh
|
||||
sudo service networking restart
|
||||
}
|
||||
|
||||
######## SCRIPT ############
|
||||
# Start the installer
|
||||
welcomeDialogs
|
||||
|
||||
# Just back up the original Pi-hole right away since it won't take long and it gets it out of the way
|
||||
backupLegacyPihole
|
||||
|
||||
# Let the user decide if they want to block ads over IPv4 and/or IPv6
|
||||
use4andor6
|
||||
|
||||
# Decide is IPv4 will be used
|
||||
if [[ "$useIPv4" = true ]];then
|
||||
echo "Using IPv4"
|
||||
getStaticIPv4Settings
|
||||
setStaticIPv4
|
||||
else
|
||||
echo "IPv4 will NOT be used."
|
||||
fi
|
||||
|
||||
# Decide is IPv6 will be used
|
||||
if [[ "$useIPv6" = true ]];then
|
||||
whiptail --msgbox --backtitle "Coming soon..." --title "IPv6 not yet supported" "I need your help. Consider donating at:
|
||||
|
||||
http://pi-hole.net/donate" $r $c
|
||||
echo "Using IPv6"
|
||||
else
|
||||
whiptail --msgbox --backtitle "Coming soon..." --title "IPv6 not yet supported" "I need your help. Consider donating at:
|
||||
|
||||
http://pi-hole.net/donate" $r $c
|
||||
echo "IPv6 will NOT be used."
|
||||
fi
|
||||
|
||||
# Set the static address
|
||||
set_static_ip
|
||||
|
||||
# Install and log everything to a file
|
||||
installPihole | tee $tmpLog
|
||||
|
|
Loading…
Reference in a new issue