From 05a59b17be6ac487e090a7efe60a36e4686ca2c1 Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Fri, 22 Jan 2016 16:50:01 +0000 Subject: [PATCH 001/100] Changed URLs in installScripts() to match new organisation links --- automated install/basic-install.sh | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 7e527b89..b539492d 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -257,13 +257,12 @@ fi installScripts(){ $SUDO echo " " $SUDO echo "::: Installing scripts..." -#$SUDO rm /usr/local/bin/{gravity,chronometer,whitelist,blacklist,piholeLogFlush,updateDashboard}.sh -$SUDO curl -o /usr/local/bin/gravity.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/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 curl -o /usr/local/bin/blacklist.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/Scripts/blacklist.sh -$SUDO curl -o /usr/local/bin/piholeLogFlush.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/Scripts/piholeLogFlush.sh -$SUDO curl -o /usr/local/bin/updateDashboard.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/Scripts/updateDashboard.sh +$SUDO curl -o /usr/local/bin/gravity.sh https://raw.githubusercontent.com/pi-hole/pi-hole/master/gravity.sh +$SUDO curl -o /usr/local/bin/chronometer.sh https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/Scripts/chronometer.sh +$SUDO curl -o /usr/local/bin/whitelist.sh https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/Scripts/whitelist.sh +$SUDO curl -o /usr/local/bin/blacklist.sh https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/Scripts/blacklist.sh +$SUDO curl -o /usr/local/bin/piholeLogFlush.sh https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/Scripts/piholeLogFlush.sh +$SUDO curl -o /usr/local/bin/updateDashboard.sh https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/Scripts/updateDashboard.sh $SUDO chmod 755 /usr/local/bin/{gravity,chronometer,whitelist,blacklist,piholeLogFlush,updateDashboard}.sh $SUDO echo "::: ...done." } @@ -273,8 +272,8 @@ $SUDO echo " " $SUDO echo "::: Installing configs..." $SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig $SUDO mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.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 curl -o /etc/dnsmasq.conf https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/dnsmasq.conf +$SUDO curl -o /etc/lighttpd/lighttpd.conf https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/lighttpd.conf $SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.conf $SUDO echo "::: ...done." } @@ -343,7 +342,7 @@ if [ -d "/var/www/html/pihole" ]; then else $SUDO mkdir /var/www/html/pihole $SUDO mv /var/www/html/index.lighttpd.html /var/www/html/index.lighttpd.orig - $SUDO curl -o /var/www/html/pihole/index.html https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/index.html + $SUDO curl -o /var/www/html/pihole/index.html https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/index.html fi $SUDO echo "::: ...done." } @@ -351,7 +350,7 @@ $SUDO echo "::: ...done." installCron(){ $SUDO echo " " $SUDO echo "::: Downloading latest Cron script..." -$SUDO curl -o /etc/cron.d/pihole https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/pihole.cron +$SUDO curl -o /etc/cron.d/pihole https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/pihole.cron $SUDO echo "::: ...done." } From c99a8a9b15769ea9dc4bb7663f4be05e03e8bcdc Mon Sep 17 00:00:00 2001 From: Promofaux Date: Fri, 22 Jan 2016 20:30:32 +0000 Subject: [PATCH 002/100] initial commit --- automated install/install | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 automated install/install diff --git a/automated install/install b/automated install/install new file mode 100644 index 00000000..e69de29b From 6663ced38d1c4affbad8dfb97605a10309581109 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sat, 23 Jan 2016 00:13:16 +0000 Subject: [PATCH 003/100] Initial commit --- automated install/basic-install.sh | 586 ++++++++++++++--------------- 1 file changed, 293 insertions(+), 293 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 7e527b89..2aa36432 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -16,26 +16,31 @@ # # curl -L install.pi-hole.net | bash -######## VARIABLES ######### +######## FIRST CHECK ######## # Must be root to install if [[ $EUID -eq 0 ]];then echo "You are root." else echo "::: sudo will be used for the install." - # Check if it is actually installed - # If it isn't, exit because the install cannot complete - if [[ $(dpkg-query -s sudo) ]];then + # Check if it is actually installed + # If it isn't, exit because the install cannot complete + if [[ $(dpkg-query -s sudo) ]];then export SUDO="sudo" - else + else echo "::: Please install sudo or run this as root." - exit 1 - fi + exit 1 + fi fi - - +######## VARIABLES ######### tmpLog=/tmp/pihole-install.log instalLogLoc=/etc/pihole/install.log +WEB_INTERFACE_GIT_URL="https://github.com/jacobsalmela/AdminLTE.git" +WEB_INTERFACE_DIR="/var/www/html/admin" +PIHOLE_GIT_URL="https://github.com/jacobsalmela/AdminLTE.git" +PIHOLE_FILES_DIR="/var/www/html/admin" + + # Find the rows and columns rows=$(tput lines) columns=$(tput cols) @@ -54,343 +59,339 @@ dhcpcdFile=/etc/dhcpcd.conf ####### FUNCTIONS ########## ###All credit for the below function goes to http://fitnr.com/showing-a-bash-spinner.html -spinner() -{ - local pid=$1 - local delay=0.001 - local spinstr='|/-\' - while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do - local temp=${spinstr#?} - printf " [%c] " "$spinstr" - local spinstr=$temp${spinstr%"$temp"} - sleep $delay - printf "\b\b\b\b\b\b" - done - printf " \b\b\b\b" +spinner(){ + local pid=$1 + local delay=0.001 + local spinstr='/-\|' + while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do + local temp=${spinstr#?} + printf " [%c] " "$spinstr" + local spinstr=$temp${spinstr%"$temp"} + sleep $delay + printf "\b\b\b\b\b\b" + done + printf " \b\b\b\b" } -backupLegacyPihole() -{ -if [[ -f /etc/dnsmasq.d/adList.conf ]];then - echo "Original Pi-hole detected. Initiating sub space transport" - $SUDO mkdir -p /etc/pihole/original/ - $SUDO mv /etc/dnsmasq.d/adList.conf /etc/pihole/original/adList.conf.$(date "+%Y-%m-%d") - $SUDO mv /etc/dnsmasq.conf /etc/pihole/original/dnsmasq.conf.$(date "+%Y-%m-%d") - $SUDO mv /etc/resolv.conf /etc/pihole/original/resolv.conf.$(date "+%Y-%m-%d") - $SUDO mv /etc/lighttpd/lighttpd.conf /etc/pihole/original/lighttpd.conf.$(date "+%Y-%m-%d") - $SUDO mv /var/www/pihole/index.html /etc/pihole/original/index.html.$(date "+%Y-%m-%d") - $SUDO mv /usr/local/bin/gravity.sh /etc/pihole/original/gravity.sh.$(date "+%Y-%m-%d") -else - : -fi +backupLegacyPihole(){ + if [[ -f /etc/dnsmasq.d/adList.conf ]];then + echo "Original Pi-hole detected. Initiating sub space transport" + $SUDO mkdir -p /etc/pihole/original/ + $SUDO mv /etc/dnsmasq.d/adList.conf /etc/pihole/original/adList.conf.$(date "+%Y-%m-%d") + $SUDO mv /etc/dnsmasq.conf /etc/pihole/original/dnsmasq.conf.$(date "+%Y-%m-%d") + $SUDO mv /etc/resolv.conf /etc/pihole/original/resolv.conf.$(date "+%Y-%m-%d") + $SUDO mv /etc/lighttpd/lighttpd.conf /etc/pihole/original/lighttpd.conf.$(date "+%Y-%m-%d") + $SUDO mv /var/www/pihole/index.html /etc/pihole/original/index.html.$(date "+%Y-%m-%d") + $SUDO mv /usr/local/bin/gravity.sh /etc/pihole/original/gravity.sh.$(date "+%Y-%m-%d") + else + : + fi } -welcomeDialogs() -{ -# 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 - -# Support for a part-time dev -whiptail --msgbox --backtitle "Plea" --title "Free and open source" "The Pi-hole is free, but powered by your donations: http://pi-hole.net/donate" $r $c - -# Explain the need for a static address -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 -} - -chooseInterface() -{ -# Turn the available interfaces into an array so it can be used with a whiptail dialog -interfacesArray=() -firstloop=1 - -while read -r line -do -mode="OFF" -if [[ $firstloop -eq 1 ]]; then - firstloop=0 - mode="ON" -fi -interfacesArray+=("$line" "available" "$mode") -done <<< "$availableInterfaces" - -# Find out how many interfaces are available to choose from -interfaceCount=$(echo "$availableInterfaces" | wc -l) -chooseInterfaceCmd=(whiptail --separate-output --radiolist "Choose An Interface" $r $c $interfaceCount) -chooseInterfaceOptions=$("${chooseInterfaceCmd[@]}" "${interfacesArray[@]}" 2>&1 >/dev/tty) -for desiredInterface in $chooseInterfaceOptions -do - piholeInterface=$desiredInterface - echo "::: Using interface: $piholeInterface" - echo ${piholeInterface} > /tmp/piholeINT -done -} - -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 IPv6" off) -choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty) -for choice in $choices -do - case $choice in - IPv4)useIPv4=true;; - IPv6)useIPv6=true;; - esac -done - if [ $useIPv4 ] && [ ! $useIPv6 ]; then - getStaticIPv4Settings - setStaticIPv4 - echo "::: Using IPv4 on $IPv4addr" - echo "::: IPv6 will NOT be used." - fi - if [ ! $useIPv4 ] && [ $useIPv6 ]; then - useIPv6dialog - echo "::: IPv4 will NOT be used." - echo "::: Using IPv6 on $piholeIPv6" - fi - if [ $useIPv4 ] && [ $useIPv6 ]; then - getStaticIPv4Settings - setStaticIPv4 - useIPv6dialog - echo "::: Using IPv4 on $IPv4addr" - echo "::: Using IPv6 on $piholeIPv6" - fi - if [ ! $useIPv4 ] && [ ! $useIPv6 ]; then - echo "::: Cannot continue, neither IPv4 or IPv6 selected" - echo "::: Exiting" - exit 1 - fi +welcomeDialogs(){ + # 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 + # Support for a part-time dev + whiptail --msgbox --backtitle "Plea" --title "Free and open source" "The Pi-hole is free, but powered by your donations: http://pi-hole.net/donate" $r $c + + # Explain the need for a static address + 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 } -useIPv6dialog() -{ -piholeIPv6=$(ip -6 route get 2001:4860:4860::8888 | awk -F " " '{ for(i=1;i<=NF;i++) if ($i == "src") print $(i+1) }') -whiptail --msgbox --backtitle "IPv6..." --title "IPv6 Supported" "$piholeIPv6 will be used to block ads." $r $c -$SUDO mkdir -p /etc/pihole/ -$SUDO touch /etc/pihole/.useIPv6 -} - -getStaticIPv4Settings() -{ -# Ask if the user wants 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? - - IP address: $IPv4addr - Gateway: $IPv4gw" $r $c) then - # 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. - - 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. - # Start by getting the IPv4 address (pre-filling it with info gathered from DHCP) - # Start a loop to let the user enter their information with the chance to go back and edit it if necessary - until [[ $ipSettingsCorrect = True ]] +chooseInterface(){ +# Turn the available interfaces into an array so it can be used with a whiptail dialog + interfacesArray=() + firstloop=1 + + while read -r line do - # Ask for the IPv4 address - IPv4addr=$(whiptail --backtitle "Calibrating network interface" --title "IPv4 address" --inputbox "Enter your desired IPv4 address" $r $c $IPv4addr 3>&1 1>&2 2>&3) - if [[ $? = 0 ]];then - echo "Your static IPv4 address: $IPv4addr" - # Ask for the gateway - IPv4gw=$(whiptail --backtitle "Calibrating network interface" --title "IPv4 gateway (router)" --inputbox "Enter your desired IPv4 default gateway" $r $c $IPv4gw 3>&1 1>&2 2>&3) + mode="OFF" + if [[ $firstloop -eq 1 ]]; then + firstloop=0 + mode="ON" + fi + interfacesArray+=("$line" "available" "$mode") + done <<< "$availableInterfaces" + + # Find out how many interfaces are available to choose from + interfaceCount=$(echo "$availableInterfaces" | wc -l) + chooseInterfaceCmd=(whiptail --separate-output --radiolist "Choose An Interface" $r $c $interfaceCount) + chooseInterfaceOptions=$("${chooseInterfaceCmd[@]}" "${interfacesArray[@]}" 2>&1 >/dev/tty) + + for desiredInterface in $chooseInterfaceOptions + do + piholeInterface=$desiredInterface + echo "::: Using interface: $piholeInterface" + echo ${piholeInterface} > /tmp/piholeINT + done +} + +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 IPv6" off) + choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty) + for choice in $choices + do + case $choice in + IPv4 ) useIPv4=true;; + IPv6 ) useIPv6=true;; + esac + done + if [ $useIPv4 ] && [ ! $useIPv6 ]; then + getStaticIPv4Settings + setStaticIPv4 + echo "::: Using IPv4 on $IPv4addr" + echo "::: IPv6 will NOT be used." + fi + if [ ! $useIPv4 ] && [ $useIPv6 ]; then + useIPv6dialog + echo "::: IPv4 will NOT be used." + echo "::: Using IPv6 on $piholeIPv6" + fi + if [ $useIPv4 ] && [ $useIPv6 ]; then + getStaticIPv4Settings + setStaticIPv4 + useIPv6dialog + echo "::: Using IPv4 on $IPv4addr" + echo "::: Using IPv6 on $piholeIPv6" + fi + if [ ! $useIPv4 ] && [ ! $useIPv6 ]; then + echo "::: Cannot continue, neither IPv4 or IPv6 selected" + echo "::: Exiting" + exit 1 + fi +} + +useIPv6dialog(){ + piholeIPv6=$(ip -6 route get 2001:4860:4860::8888 | awk -F " " '{ for(i=1;i<=NF;i++) if ($i == "src") print $(i+1) }') + whiptail --msgbox --backtitle "IPv6..." --title "IPv6 Supported" "$piholeIPv6 will be used to block ads." $r $c + $SUDO mkdir -p /etc/pihole/ + $SUDO touch /etc/pihole/.useIPv6 +} + +getStaticIPv4Settings(){ + # Ask if the user wants 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? + IP address: $IPv4addr + Gateway: $IPv4gw" $r $c) then + # 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. + 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. + # Start by getting the IPv4 address (pre-filling it with info gathered from DHCP) + # Start a loop to let the user enter their information with the chance to go back and edit it if necessary + until [[ $ipSettingsCorrect = True ]] + do + # Ask for the IPv4 address + IPv4addr=$(whiptail --backtitle "Calibrating network interface" --title "IPv4 address" --inputbox "Enter your desired IPv4 address" $r $c $IPv4addr 3>&1 1>&2 2>&3) if [[ $? = 0 ]];then - echo "Your static IPv4 gateway: $IPv4gw" - # Give the user a chance to review their settings before moving on - if (whiptail --backtitle "Calibrating network interface" --title "Static IP Address" --yesno "Are these settings correct? - IP address: $IPv4addr - Gateway: $IPv4gw" $r $c)then - # If the settings are correct, then we need to set the piholeIP - # Saving it to a temporary file us to retrieve it later when we run the gravity.sh script - echo ${IPv4addr%/*} > /tmp/piholeIP - echo $piholeInterface > /tmp/piholeINT - # After that's done, the loop ends and we move on - ipSettingsCorrect=True + echo "Your static IPv4 address: $IPv4addr" + # Ask for the gateway + IPv4gw=$(whiptail --backtitle "Calibrating network interface" --title "IPv4 gateway (router)" --inputbox "Enter your desired IPv4 default gateway" $r $c $IPv4gw 3>&1 1>&2 2>&3) + if [[ $? = 0 ]];then + echo "Your static IPv4 gateway: $IPv4gw" + # Give the user a chance to review their settings before moving on + if (whiptail --backtitle "Calibrating network interface" --title "Static IP Address" --yesno "Are these settings correct? + IP address: $IPv4addr + Gateway: $IPv4gw" $r $c)then + # If the settings are correct, then we need to set the piholeIP + # Saving it to a temporary file us to retrieve it later when we run the gravity.sh script + echo ${IPv4addr%/*} > /tmp/piholeIP + echo $piholeInterface > /tmp/piholeINT + # After that's done, the loop ends and we move on + ipSettingsCorrect=True + else + # If the settings are wrong, the loop continues + ipSettingsCorrect=False + fi else - # If the settings are wrong, the loop continues + # Cancelling gateway settings window ipSettingsCorrect=False + echo "User canceled." + exit fi else - # Cancelling gateway settings window + # Cancelling IPv4 settings window ipSettingsCorrect=False echo "User canceled." exit fi - else - # Cancelling IPv4 settings window - ipSettingsCorrect=False - echo "User canceled." - exit + done + # End the if statement for DHCP vs. static fi -done -# End the if statement for DHCP vs. static -fi } setDHCPCD(){ -# Append these lines to dhcpcd.conf to enable a static IP -echo "interface $piholeInterface -static ip_address=$IPv4addr -static routers=$IPv4gw -static domain_name_servers=$IPv4gw" | $SUDO tee -a $dhcpcdFile >/dev/null + #Append these lines to dhcpcd.conf to enable a static IP + echo "interface $piholeInterface + static ip_address=$IPv4addr + static routers=$IPv4gw + static domain_name_servers=$IPv4gw" | $SUDO tee -a $dhcpcdFile >/dev/null } setStaticIPv4(){ -if grep -q $IPv4addr $dhcpcdFile; then - # address already set, noop - : -else - setDHCPCD - $SUDO ip addr replace dev $piholeInterface $IPv4addr - echo "Setting IP to $IPv4addr. You may need to restart after the install is complete." -fi + if grep -q $IPv4addr $dhcpcdFile; then + # address already set, noop + : + else + setDHCPCD + $SUDO ip addr replace dev $piholeInterface $IPv4addr + echo "Setting IP to $IPv4addr. You may need to restart after the install is complete." + fi } installScripts(){ -$SUDO echo " " -$SUDO echo "::: Installing scripts..." -#$SUDO rm /usr/local/bin/{gravity,chronometer,whitelist,blacklist,piholeLogFlush,updateDashboard}.sh -$SUDO curl -o /usr/local/bin/gravity.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/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 curl -o /usr/local/bin/blacklist.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/Scripts/blacklist.sh -$SUDO curl -o /usr/local/bin/piholeLogFlush.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/Scripts/piholeLogFlush.sh -$SUDO curl -o /usr/local/bin/updateDashboard.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/Scripts/updateDashboard.sh -$SUDO chmod 755 /usr/local/bin/{gravity,chronometer,whitelist,blacklist,piholeLogFlush,updateDashboard}.sh -$SUDO echo "::: ...done." + $SUDO echo " " + $SUDO echo "::: Installing scripts..." + $SUDO curl -o /usr/local/bin/gravity.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/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 curl -o /usr/local/bin/blacklist.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/Scripts/blacklist.sh + $SUDO curl -o /usr/local/bin/piholeLogFlush.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/Scripts/piholeLogFlush.sh + $SUDO curl -o /usr/local/bin/updateDashboard.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/Scripts/updateDashboard.sh + $SUDO chmod 755 /usr/local/bin/{gravity,chronometer,whitelist,blacklist,piholeLogFlush,updateDashboard}.sh + $SUDO echo "::: ...done." } installConfigs(){ -$SUDO echo " " -$SUDO echo "::: Installing configs..." -$SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig -$SUDO mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.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 sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.conf -$SUDO echo "::: ...done." + $SUDO echo " " + $SUDO echo "::: Installing configs..." + $SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig + $SUDO mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.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 sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.conf + $SUDO echo "::: ...done." } stopServices(){ -$SUDO echo " " -$SUDO echo "::: Stopping services..." -$SUDO service dnsmasq stop || true -$SUDO service lighttpd stop || true -$SUDO echo "::: ...done." + $SUDO echo " " + $SUDO echo "::: Stopping services..." + $SUDO service dnsmasq stop || true + $SUDO service lighttpd stop || true + $SUDO echo "::: ...done." } installDependencies(){ -$SUDO echo " " -$SUDO echo "::: Updating apt-get package list" -$SUDO apt-get -qq update & spinner $! -$SUDO echo "::: Upgrading apt-get packages" -$SUDO apt-get -yqq upgrade & spinner $! -$SUDO echo "::: ...done." -$SUDO echo "::: installing dnsutils, bc, toilet, and figlet..." -$SUDO apt-get -yqq install dnsutils bc toilet figlet & spinner $! -$SUDO echo "::: ...done." -$SUDO echo "::: Installing dnsmasq..." -$SUDO apt-get -yqq install dnsmasq & spinner $! -$SUDO echo "::: ...done." -$SUDO echo "::: Installing lighttpd, php5-common, php5-cgi, and php5..." -$SUDO apt-get -yqq install lighttpd php5-common php5-cgi php5 & spinner $! -$SUDO echo "::: ...done." -$SUDO echo "::: Installing git..." -$SUDO apt-get -yqq install git & spinner $! -$SUDO echo "::: ...done." + $SUDO echo " " + $SUDO echo "::: Updating apt-get package list" + $SUDO apt-get -qq update & spinner $! + $SUDO echo "::: Upgrading apt-get packages" + $SUDO apt-get -yqq upgrade & spinner $! + $SUDO echo "::: ...done." + $SUDO echo "::: installing dnsutils, bc, toilet, and figlet..." + $SUDO apt-get -yqq install dnsutils bc toilet figlet & spinner $! + $SUDO echo "::: ...done." + $SUDO echo "::: Installing dnsmasq..." + $SUDO apt-get -yqq install dnsmasq & spinner $! + $SUDO echo "::: ...done." + $SUDO echo "::: Installing lighttpd, php5-common, php5-cgi, and php5..." + $SUDO apt-get -yqq install lighttpd php5-common php5-cgi php5 & spinner $! + $SUDO echo "::: ...done." + $SUDO echo "::: Installing git..." + $SUDO apt-get -yqq install git & spinner $! + $SUDO echo "::: ...done." } installWebAdmin(){ -$SUDO echo " " -$SUDO echo "::: Downloading and installing latest WebAdmin files..." -if [ -d "/var/www/html/admin" ]; then - $SUDO rm -rf /var/www/html/admin -fi -if [ -d "/var/www/html/AdminLTE-master" ]; then - $SUDO rm -rf /var/www/html/AdminLTE-master -fi -$SUDO wget -nv https://github.com/jacobsalmela/AdminLTE/archive/master.zip -O /var/www/master.zip & spinner $! -$SUDO unzip -oq /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 echo "::: ...Done." - -$SUDO echo "::: Creating log file and changing owner to dnsmasq..." -if [ ! -f /var/log/pihole.log ]; then - $SUDO touch /var/log/pihole.log - $SUDO chmod 644 /var/log/pihole.log - $SUDO chown dnsmasq:root /var/log/pihole.log -else - $SUDO echo "::: No need to create, already exists!" -fi -$SUDO echo "::: ...done." - + $SUDO echo " " + $SUDO echo "::: Downloading and installing latest WebAdmin files..." + if [ -d "/var/www/html/admin" ]; then + $SUDO rm -rf /var/www/html/admin + fi + if [ -d "/var/www/html/AdminLTE-master" ]; then + $SUDO rm -rf /var/www/html/AdminLTE-master + fi + $SUDO wget -nv https://github.com/jacobsalmela/AdminLTE/archive/master.zip -O /var/www/master.zip & spinner $! + $SUDO unzip -oq /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 echo "::: ...Done." + + $SUDO echo "::: Creating log file and changing owner to dnsmasq..." + if [ ! -f /var/log/pihole.log ]; then + $SUDO touch /var/log/pihole.log + $SUDO chmod 644 /var/log/pihole.log + $SUDO chown dnsmasq:root /var/log/pihole.log + else + $SUDO echo "::: No need to create, already exists!" + fi + $SUDO echo "::: ...done." } installPiholeWeb(){ -$SUDO echo " " -$SUDO echo "::: Downloading and installing pihole custom index page..." -if [ -d "/var/www/html/pihole" ]; then - $SUDO echo "::: Existing page detected, not overwriting" -else - $SUDO mkdir /var/www/html/pihole - $SUDO mv /var/www/html/index.lighttpd.html /var/www/html/index.lighttpd.orig - $SUDO curl -o /var/www/html/pihole/index.html https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/index.html -fi -$SUDO echo "::: ...done." + $SUDO echo " " + $SUDO echo "::: Downloading and installing pihole custom index page..." + if [ -d "/var/www/html/pihole" ]; then + $SUDO echo "::: Existing page detected, not overwriting" + else + $SUDO mkdir /var/www/html/pihole + $SUDO mv /var/www/html/index.lighttpd.html /var/www/html/index.lighttpd.orig + $SUDO curl -o /var/www/html/pihole/index.html https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/index.html + fi + $SUDO echo "::: ...done." } installCron(){ -$SUDO echo " " -$SUDO echo "::: Downloading latest Cron script..." -$SUDO curl -o /etc/cron.d/pihole https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/pihole.cron -$SUDO echo "::: ...done." + $SUDO echo " " + $SUDO echo "::: Downloading latest Cron script..." + $SUDO curl -o /etc/cron.d/pihole https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/pihole.cron + $SUDO echo "::: ...done." } -runGravity() -{ -$SUDO echo " " -$SUDO echo "::: Preparing to run gravity.sh to refresh hosts..." -if ls /etc/pihole/list* 1> /dev/null 2>&1; then - echo "::: Cleaning up previous install (preserving whitelist/blacklist)" - $SUDO rm /etc/pihole/list.* -fi -#Don't run as SUDO, this was causing issues -/usr/local/bin/gravity.sh -$SUDO echo "::: ...done." +runGravity(){ + $SUDO echo " " + $SUDO echo "::: Preparing to run gravity.sh to refresh hosts..." + if ls /etc/pihole/list* 1> /dev/null 2>&1; then + echo "::: Cleaning up previous install (preserving whitelist/blacklist)" + $SUDO rm /etc/pihole/list.* + fi + #Don't run as SUDO, this was causing issues + /usr/local/bin/gravity.sh + $SUDO echo "::: ...done." +} + +checkForAndInstallDependencies(){ + if [ -d "/var/www/html/admin" ]; then + #Likely an existing install, no need to apt-get update + echo "::: Previous installation detected" + else + echo "::: First time install, updating package list" + $SUDO apt-get -qq update & spinner $! + echo "::: Upgrading installed apt-get packages" + $SUDO apt-get -yqq upgrade & spinner $! + fi } -installPihole() -{ -installDependencies -stopServices -$SUDO chown www-data:www-data /var/www/html -$SUDO chmod 775 /var/www/html -$SUDO usermod -a -G www-data pi -$SUDO lighty-enable-mod fastcgi fastcgi-php -installScripts -installConfigs -installWebAdmin -installPiholeWeb -installCron -runGravity - +installPihole(){ + installDependencies + stopServices + $SUDO chown www-data:www-data /var/www/html + $SUDO chmod 775 /var/www/html + $SUDO usermod -a -G www-data pi + $SUDO lighty-enable-mod fastcgi fastcgi-php + installScripts + installConfigs + installWebAdmin + installPiholeWeb + installCron + runGravity } displayFinalMessage(){ - whiptail --msgbox --backtitle "Make it so." --title "Installation Complete!" "Configure your devices to use the Pi-hole as their DNS server using: +whiptail --msgbox --backtitle "Make it so." --title "Installation Complete!" "Configure your devices to use the Pi-hole as their DNS server using: - $IPv4addr - $piholeIPv6 +$IPv4addr +$piholeIPv6 If you set a new IP address, you should restart the Pi. @@ -403,13 +404,12 @@ 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 - # Find interfaces and let the user choose one chooseInterface - # Let the user decide if they want to block ads over IPv4 and/or IPv6 use4andor6 +checkForAndInstallDependencies # Install and log everything to a file installPihole | tee $tmpLog From 5b62f91bb44ca32ddb8f77a300662a19e3c248c6 Mon Sep 17 00:00:00 2001 From: PromoFaux Date: Sat, 23 Jan 2016 01:31:33 +0000 Subject: [PATCH 004/100] Update README.md Whoops, forgot the readme.. *embarrassed face* --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f7cbd07f..8f42e0ea 100644 --- a/README.md +++ b/README.md @@ -46,10 +46,10 @@ The Pi-hole is an **advertising-aware DNS/Web server**. If an ad domain is quer A more detailed explanation of the installation can be found [here](http://jacobsalmela.com/block-millions-ads-network-wide-with-a-raspberry-pi-hole-2-0). ## Gravity -The [gravity.sh](https://github.com/jacobsalmela/pi-hole/blob/master/gravity.sh) does most of the magic. The script pulls in ad domains from many sources and compiles them into a single list of [over 1.6 million entries](http://jacobsalmela.com/block-millions-ads-network-wide-with-a-raspberry-pi-hole-2-0) (if you decide to use the [mahakala list](https://github.com/jacobsalmela/pi-hole/commit/963eacfe0537a7abddf30441c754c67ca1e40965)). +The [gravity.sh](https://github.com/pi-hole/pi-hole/blob/master/gravity.sh) does most of the magic. The script pulls in ad domains from many sources and compiles them into a single list of [over 1.6 million entries](http://jacobsalmela.com/block-millions-ads-network-wide-with-a-raspberry-pi-hole-2-0) (if you decide to use the [mahakala list](https://github.com/pi-hole/pi-hole/commit/963eacfe0537a7abddf30441c754c67ca1e40965)). ## Whitelist and blacklist -Domains can be whitelisted and blacklisted using two pre-installed scripts. See [the wiki page](https://github.com/jacobsalmela/pi-hole/wiki/Whitelisting-and-Blacklisting) for more details +Domains can be whitelisted and blacklisted using two pre-installed scripts. See [the wiki page](https://github.com/pi-hole/pi-hole/wiki/Whitelisting-and-Blacklisting) for more details ## Web Interface The [Web interface](https://github.com/jacobsalmela/AdminLTE#pi-hole-admin-dashboard) will be installed automatically so you can view stats and change settings. You can find it at: @@ -73,11 +73,11 @@ The same output can be acheived on the CLI by running `chronometer.sh -j` ## Real-time Statistics -You can view [real-time stats](http://pi-hole.net/faq/install-the-real-time-lcd-monitor-chronometer/) via `ssh` or on an [2.8" LCD screen](http://amzn.to/1P0q1Fj). This is accomplished via [`chronometer.sh`](https://github.com/jacobsalmela/pi-hole/blob/master/advanced/Scripts/chronometer.sh). +You can view [real-time stats](http://pi-hole.net/faq/install-the-real-time-lcd-monitor-chronometer/) via `ssh` or on an [2.8" LCD screen](http://amzn.to/1P0q1Fj). This is accomplished via [`chronometer.sh`](https://github.com/pi-hole/pi-hole/blob/master/advanced/Scripts/chronometer.sh). ![Pi-hole LCD](http://i.imgur.com/nBEqycp.jpg) ## Help -- See the [Wiki](https://github.com/jacobsalmela/pi-hole/wiki/Customization) entry for more details +- See the [Wiki](https://github.com/pi-hole/pi-hole/wiki/Customization) entry for more details - There is also an [FAQ section on pi-hole.net](http://pi-hole.net) ## Other Operating Systems From 1e735c26c466232ec538c65003933d8d180e0f92 Mon Sep 17 00:00:00 2001 From: Dan Schaper Date: Fri, 22 Jan 2016 20:46:10 -0800 Subject: [PATCH 005/100] Repo Change QuickFix QuickFix for Repo location change. --- advanced/Scripts/updateDashboard.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/advanced/Scripts/updateDashboard.sh b/advanced/Scripts/updateDashboard.sh index bcd92c1e..11de6264 100644 --- a/advanced/Scripts/updateDashboard.sh +++ b/advanced/Scripts/updateDashboard.sh @@ -11,7 +11,7 @@ # @TODO: add git as requirement to basic-install.sh # -WEB_INTERFACE_GIT_URL="https://github.com/jacobsalmela/AdminLTE.git" +WEB_INTERFACE_GIT_URL="https://github.com/pi-hole/AdminLTE.git" WEB_INTERFACE_DIR="/var/www/html/admin" main() { From f2e471707e07cab83d0943d6d5ea7e188a2fdb32 Mon Sep 17 00:00:00 2001 From: Jacob Salmela Date: Sat, 23 Jan 2016 12:39:09 -0600 Subject: [PATCH 006/100] Pi-hole chrome extension --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8f42e0ea..cc58b154 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ Once installed, [configure your router to have **DHCP clients use the Pi as thei [![Pi-hole exlplained](http://i.imgur.com/qNybJDX.png)](https://vimeo.com/135965232) ## Pi-hole Projects +- [Pi-hole Chrome extension](https://chrome.google.com/webstore/detail/pi-hole-list-editor/hlnoeoejkllgkjbnnnhfolapllcnaglh) ([open source](https://github.com/packtloss/pihole-extension)) - [Go Bananas for CHiP-hole ad blocking](https://www.hackster.io/jacobsalmela/chip-hole-network-wide-ad-blocker-98e037) - [Sky-Hole](http://dlaa.me/blog/post/skyhole) - [Pi-hole in the Cloud!](http://blog.codybunch.com/2015/07/28/Pi-Hole-in-the-cloud/) From 316d26ede2e187ddec5936e4b95b699e996e8690 Mon Sep 17 00:00:00 2001 From: Chad Howell Date: Sat, 23 Jan 2016 16:29:52 -0500 Subject: [PATCH 007/100] Add unzip to the dependencies unzip is required for the install script to complete. Some distros do not have it installed by default. --- automated install/basic-install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index ba7e57f0..6ae2e44d 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -293,8 +293,8 @@ $SUDO apt-get -qq update & spinner $! $SUDO echo "::: Upgrading apt-get packages" $SUDO apt-get -yqq upgrade & spinner $! $SUDO echo "::: ...done." -$SUDO echo "::: installing dnsutils, bc, toilet, and figlet..." -$SUDO apt-get -yqq install dnsutils bc toilet figlet & spinner $! +$SUDO echo "::: installing dnsutils, bc, toilet, unzip, and figlet..." +$SUDO apt-get -yqq install dnsutils bc toilet unzip figlet & spinner $! $SUDO echo "::: ...done." $SUDO echo "::: Installing dnsmasq..." $SUDO apt-get -yqq install dnsmasq & spinner $! From 206717828b8ecbe31ba4178deaaa371b93625bb8 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sat, 23 Jan 2016 22:25:30 +0000 Subject: [PATCH 008/100] Improve spinner function. --- automated install/basic-install.sh | 68 +++++++++++------------------- 1 file changed, 25 insertions(+), 43 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 520246a1..3b360f4b 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -16,21 +16,6 @@ # # curl -L install.pi-hole.net | bash -######## FIRST CHECK ######## -# Must be root to install -if [[ $EUID -eq 0 ]];then - echo "You are root." -else - echo "::: sudo will be used for the install." - # Check if it is actually installed - # If it isn't, exit because the install cannot complete - if [[ $(dpkg-query -s sudo) ]];then - export SUDO="sudo" - else - echo "::: Please install sudo or run this as root." - exit 1 - fi -fi ######## VARIABLES ######### tmpLog=/tmp/pihole-install.log instalLogLoc=/etc/pihole/install.log @@ -57,6 +42,29 @@ IPv4gw=$(ip route get 8.8.8.8 | awk '{print $3}') availableInterfaces=$(ip -o link | awk '{print $2}' | grep -v "lo" | cut -d':' -f1) dhcpcdFile=/etc/dhcpcd.conf +######## FIRST CHECK ######## +# Must be root to install +if [[ $EUID -eq 0 ]];then + echo "You are root." +else + echo "::: sudo will be used for the install." + # Check if it is actually installed + # If it isn't, exit because the install cannot complete + if [[ $(dpkg-query -s sudo) ]];then + export SUDO="sudo" + else + echo "::: Please install sudo or run this as root." + exit 1 + fi +fi + +if [ -f "/etc/dnsmasq.d/01-pihole.conf" ]; then + #Likely an existing install + upgrade=true + else + upgrade=false +fi + ####### FUNCTIONS ########## ###All credit for the below function goes to http://fitnr.com/showing-a-bash-spinner.html spinner(){ @@ -129,7 +137,7 @@ chooseInterface(){ done } -<<<<<<< HEAD + use4andor6(){ # Let use select IPv4 and/or IPv6 cmd=(whiptail --separate-output --checklist "Select Protocols" $r $c 2) @@ -166,13 +174,6 @@ use4andor6(){ echo "::: Exiting" exit 1 fi -======= -useIPv6dialog() -{ -piholeIPv6=$(ip -6 route get 2001:4860:4860::8888 | awk -F " " '{ for(i=1;i<=NF;i++) if ($i == "src") print $(i+1) }') -whiptail --msgbox --backtitle "IPv6..." --title "IPv6 Supported" "$piholeIPv6 will be used to block ads." $r $c -$SUDO touch /etc/pihole/.useIPv6 ->>>>>>> upstream/development } useIPv6dialog(){ @@ -368,7 +369,7 @@ runGravity(){ } checkForAndInstallDependencies(){ - if [ -d "/var/www/html/admin" ]; then + if [ upgrade ]; then #Likely an existing install, no need to apt-get update echo "::: Previous installation detected" else @@ -379,25 +380,6 @@ checkForAndInstallDependencies(){ fi } -<<<<<<< HEAD -======= -installPihole() -{ -installDependencies -stopServices -$SUDO mkdir -p /etc/pihole/ -$SUDO chown www-data:www-data /var/www/html -$SUDO chmod 775 /var/www/html -$SUDO usermod -a -G www-data pi -$SUDO lighty-enable-mod fastcgi fastcgi-php -installScripts -installConfigs -installWebAdmin -installPiholeWeb -installCron -runGravity ->>>>>>> upstream/development - installPihole(){ installDependencies stopServices From 6cea480210708e3629ec3ec7bae79ca02f14e742 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 24 Jan 2016 03:31:12 +0000 Subject: [PATCH 009/100] Huge update! Base files now cloned from github (or updated if already existing) and copied out to the correct directories. Web admin interface is now cloned from hithub (or updated if already existing). Packages are checked before we go ahead and try to install them anyway. --- automated install/basic-install.sh | 242 +++++++++++++++++------------ 1 file changed, 146 insertions(+), 96 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 3b360f4b..3764314e 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -20,10 +20,10 @@ tmpLog=/tmp/pihole-install.log instalLogLoc=/etc/pihole/install.log -WEB_INTERFACE_GIT_URL="https://github.com/jacobsalmela/AdminLTE.git" -WEB_INTERFACE_DIR="/var/www/html/admin" -PIHOLE_GIT_URL="https://github.com/jacobsalmela/AdminLTE.git" -PIHOLE_FILES_DIR="/var/www/html/admin" +webInterfaceGitUrl="https://github.com/pi-hole/AdminLTE.git" +webInterfaceDir="/var/www/html/admin" +piholeGitUrl="https://github.com/pi-hole/pi-hole.git" +piholeFilesDir="/etc/.pihole" # Find the rows and columns @@ -68,20 +68,24 @@ fi ####### FUNCTIONS ########## ###All credit for the below function goes to http://fitnr.com/showing-a-bash-spinner.html spinner(){ - local pid=$1 - local delay=0.001 - local spinstr='/-\|' - while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do - local temp=${spinstr#?} - printf " [%c] " "$spinstr" - local spinstr=$temp${spinstr%"$temp"} - sleep $delay - printf "\b\b\b\b\b\b" - done - printf " \b\b\b\b" + local pid=$1 + local delay=0.001 + local spinstr='/-\|' + + spin='-\|/' + i=0 + while kill -0 $pid 2>/dev/null + do + i=$(( (i+1) %4 )) + printf "\b${spin:$i:1}" + sleep .1 + done + printf "\b" } + + backupLegacyPihole(){ if [[ -f /etc/dnsmasq.d/adList.conf ]];then echo "Original Pi-hole detected. Initiating sub space transport" @@ -258,106 +262,159 @@ setStaticIPv4(){ } installScripts(){ - $SUDO echo " " - $SUDO echo "::: Installing scripts..." - $SUDO curl -o /usr/local/bin/gravity.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/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 curl -o /usr/local/bin/blacklist.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/Scripts/blacklist.sh - $SUDO curl -o /usr/local/bin/piholeLogFlush.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/Scripts/piholeLogFlush.sh - $SUDO curl -o /usr/local/bin/updateDashboard.sh https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/Scripts/updateDashboard.sh + $SUDO echo ":::" + $SUDO echo -n "::: Installing scripts..." + $SUDO cp /etc/.pihole/gravity.sh /usr/local/bin/gravity.sh + $SUDO cp /etc/.pihole/advanced/Scripts/chronometer.sh /usr/local/bin/chronometer.sh + $SUDO cp /etc/.pihole/advanced/Scripts/whitelist.sh /usr/local/bin/whitelist.sh + $SUDO cp /etc/.pihole/advanced/Scripts/blacklist.sh /usr/local/bin/blacklist.sh + $SUDO cp /etc/.pihole/advanced/Scripts/piholeLogFlush.sh /usr/local/bin/piholeLogFlush.sh + $SUDO cp /etc/.pihole/advanced/Scripts/updateDashboard.sh /usr/local/bin/updateDashboard.sh $SUDO chmod 755 /usr/local/bin/{gravity,chronometer,whitelist,blacklist,piholeLogFlush,updateDashboard}.sh - $SUDO echo "::: ...done." + $SUDO echo " done." } installConfigs(){ - $SUDO echo " " - $SUDO echo "::: Installing configs..." + $SUDO echo ":::" + $SUDO echo -n "::: Installing configs..." $SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig $SUDO mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.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 cp /etc/.pihole/advanced/dnsmasq.conf /etc/dnsmasq.conf + $SUDO cp /etc/.pihole/advanced/lighttpd.conf /etc/lighttpd/lighttpd.conf $SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.conf - $SUDO echo "::: ...done." + $SUDO echo " done." } stopServices(){ - $SUDO echo " " - $SUDO echo "::: Stopping services..." - $SUDO service dnsmasq stop || true - $SUDO service lighttpd stop || true - $SUDO echo "::: ...done." + $SUDO echo ":::" + $SUDO echo -n "::: Stopping services..." + $SUDO service dnsmasq stop & spinner $! || true + $SUDO service lighttpd stop & spinner $! || true + $SUDO echo " done." } -installDependencies(){ - $SUDO echo " " - $SUDO echo "::: Updating apt-get package list" - $SUDO apt-get -qq update & spinner $! - $SUDO echo "::: Upgrading apt-get packages" - $SUDO apt-get -yqq upgrade & spinner $! - $SUDO echo "::: ...done." - $SUDO echo "::: installing dnsutils, bc, toilet, and figlet..." - $SUDO apt-get -yqq install dnsutils bc toilet figlet & spinner $! - $SUDO echo "::: ...done." - $SUDO echo "::: Installing dnsmasq..." - $SUDO apt-get -yqq install dnsmasq & spinner $! - $SUDO echo "::: ...done." - $SUDO echo "::: Installing lighttpd, php5-common, php5-cgi, and php5..." - $SUDO apt-get -yqq install lighttpd php5-common php5-cgi php5 & spinner $! - $SUDO echo "::: ...done." - $SUDO echo "::: Installing git..." - $SUDO apt-get -yqq install git & spinner $! - $SUDO echo "::: ...done." + +checkForDependencies(){ + echo ":::" + #update package lists + echo -n "::: Updating package list before install...." + #$SUDO apt-get -qq update & spinner $! + echo " done!" + echo -n "::: Upgrading installed apt-get packages...." + #$SUDO apt-get -y -qq upgrade & spinner $! + echo " done!" + + echo ":::" + echo "::: Checking dependencies:" + + dependencies=( dnsutils bc toilet figlet dnsmasq lighttpd php5-common php5-cgi php5 git curl unzip wget ) + for i in "${dependencies[@]}" + do + : + echo -n "::: Checking for $i..." + if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then + echo -n " Not found! Installing...." + apt-get -y -qq install $i > /dev/null & spinner $! + echo " done!" + else + echo " already installed!" + fi + done + } -installWebAdmin(){ - $SUDO echo " " - $SUDO echo "::: Downloading and installing latest WebAdmin files..." - if [ -d "/var/www/html/admin" ]; then - $SUDO rm -rf /var/www/html/admin - fi - if [ -d "/var/www/html/AdminLTE-master" ]; then - $SUDO rm -rf /var/www/html/AdminLTE-master - fi - $SUDO wget -nv https://github.com/jacobsalmela/AdminLTE/archive/master.zip -O /var/www/master.zip & spinner $! - $SUDO unzip -oq /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 echo "::: ...Done." - - $SUDO echo "::: Creating log file and changing owner to dnsmasq..." +getGitFiles(){ + + echo ":::" + dirToCheck=$piholeFilesDir + echo -n "::: Checking for existing base files..." + if ! is_repo; then + echo -n " Not found! Getting files from github...." + repoToClone=$piholeGitUrl + make_repo + echo " done!" + else + echo -n " Existing files found. Grabbing latest...." + update_repo + echo " done!" + fi + + echo ":::" + dirToCheck=$webInterfaceDir + echo -n "::: Checking for existing web interface..." + if ! is_repo; then + echo -n " Not found! Getting files from github...." + repoToClone=$webInterfaceGitUrl + make_repo + echo " done!" + else + echo -n " Existing files found. Grabbing latest..." + update_repo + echo " done!" + fi + +} + +is_repo() { + # if the directory does not have a .git folder + # it is not a repo + if [ ! -d "$dirToCheck/.git" ]; then + return 1 + fi + return 0 +} + +make_repo() { + # remove the non-repod interface and clone the interface + + $SUDO rm -rf $dirToCheck + $SUDO git clone -q "$repoToClone" "$dirToCheck" > /dev/null & spinner $! +} + +update_repo() { + # pull the latest commits + cd "$dirToCheck" + $SUDO git pull -q > /dev/null & spinner $! +} + + +CreateLogFile(){ + echo ":::" + $SUDO echo -n "::: Creating log file and changing owner to dnsmasq..." if [ ! -f /var/log/pihole.log ]; then $SUDO touch /var/log/pihole.log $SUDO chmod 644 /var/log/pihole.log $SUDO chown dnsmasq:root /var/log/pihole.log + $SUDO echo " done!" else - $SUDO echo "::: No need to create, already exists!" + $SUDO echo " already exists!" fi - $SUDO echo "::: ...done." + } installPiholeWeb(){ - $SUDO echo " " - $SUDO echo "::: Downloading and installing pihole custom index page..." + $SUDO echo ":::" + $SUDO echo -n "::: Installing pihole custom index page..." if [ -d "/var/www/html/pihole" ]; then - $SUDO echo "::: Existing page detected, not overwriting" + $SUDO echo " Existing page detected, not overwriting" else $SUDO mkdir /var/www/html/pihole $SUDO mv /var/www/html/index.lighttpd.html /var/www/html/index.lighttpd.orig - $SUDO curl -o /var/www/html/pihole/index.html https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/index.html + $SUDO cp /etc/.pihole/advanced/index.html /var/www/html/pihole/index.html + $SUDO echo " done!" fi - $SUDO echo "::: ...done." + } installCron(){ - $SUDO echo " " - $SUDO echo "::: Downloading latest Cron script..." - $SUDO curl -o /etc/cron.d/pihole https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/pihole.cron - $SUDO echo "::: ...done." + $SUDO echo ":::" + $SUDO echo -n "::: Installing latest Cron script..." + $SUDO cp /etc/.pihole/advanced/pihole.cron /etc/cron.d/pihole + $SUDO echo " done!" } runGravity(){ - $SUDO echo " " + $SUDO echo ":::" $SUDO echo "::: Preparing to run gravity.sh to refresh hosts..." if ls /etc/pihole/list* 1> /dev/null 2>&1; then echo "::: Cleaning up previous install (preserving whitelist/blacklist)" @@ -368,28 +425,21 @@ runGravity(){ $SUDO echo "::: ...done." } -checkForAndInstallDependencies(){ - if [ upgrade ]; then - #Likely an existing install, no need to apt-get update - echo "::: Previous installation detected" - else - echo "::: First time install, updating package list" - $SUDO apt-get -qq update & spinner $! - echo "::: Upgrading installed apt-get packages" - $SUDO apt-get -yqq upgrade & spinner $! - fi -} installPihole(){ - installDependencies + checkForDependencies # done stopServices + $SUDO chown www-data:www-data /var/www/html $SUDO chmod 775 /var/www/html $SUDO usermod -a -G www-data pi - $SUDO lighty-enable-mod fastcgi fastcgi-php + $SUDO lighty-enable-mod fastcgi fastcgi-php > /dev/null + + getGitFiles installScripts installConfigs - installWebAdmin + #installWebAdmin + CreateLogFile installPiholeWeb installCron runGravity @@ -417,7 +467,7 @@ chooseInterface # Let the user decide if they want to block ads over IPv4 and/or IPv6 use4andor6 -checkForAndInstallDependencies + # Install and log everything to a file installPihole | tee $tmpLog From a539dc41f3552b47f303a3a505d56c843be4d3e3 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 24 Jan 2016 15:25:24 +0000 Subject: [PATCH 010/100] Tidy up gravity output to match install script --- gravity.sh | 104 +++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 73 insertions(+), 31 deletions(-) diff --git a/gravity.sh b/gravity.sh index 7a7fe231..0d070299 100755 --- a/gravity.sh +++ b/gravity.sh @@ -12,7 +12,7 @@ # Run this script as root or under sudo if [[ $EUID -eq 0 ]];then - echo "You are root." + echo "::: You are root." else echo "::: sudo will be used." # Check if it is actually installed @@ -72,14 +72,30 @@ eyeOfTheNeedle=$basename.4.wormhole.txt # After setting defaults, check if there's local overrides if [[ -r $piholeDir/pihole.conf ]];then - echo "** Local calibration requested..." + echo "::: Local calibration requested..." . $piholeDir/pihole.conf fi + +spinner(){ + local pid=$1 + local delay=0.001 + local spinstr='/-\|' + + spin='-\|/' + i=0 + while kill -0 $pid 2>/dev/null + do + i=$(( (i+1) %4 )) + printf "\b${spin:$i:1}" + sleep .1 + done + printf "\b" +} ########################### # collapse - begin formation of pihole function gravity_collapse() { - echo "** Neutrino emissions detected..." + echo -n "::: Neutrino emissions detected..." # Create the pihole resource directory if it doesn't exist. Future files will be stored here if [[ -d $piholeDir ]];then @@ -87,10 +103,12 @@ function gravity_collapse() { # Will update later, needed for existing installs, new installs should # create this directory as non-root $SUDO chmod 777 $piholeDir - find "$piholeDir" -type f -exec $SUDO chmod 666 {} \; + find "$piholeDir" -type f -exec $SUDO chmod 666 {} \; & spinner $! + echo "." else - echo "** Creating pihole directory..." - mkdir $piholeDir + echo -n "::: Creating pihole directory..." + mkdir $piholeDir & spinner $! + echo " done!" fi } @@ -103,10 +121,10 @@ function gravity_patternCheck() { # and stored as is. They can be processed for content after they # have been saved. cp $patternBuffer $saveLocation - echo "List updated, transport successful..." + echo " List updated, transport successful!" else # curl didn't download any host files, probably because of the date check - echo "No changes detected, transport skipped..." + echo " No changes detected, transport skipped!" fi } @@ -125,9 +143,9 @@ function gravity_transport() { fi # Silently curl url - curl -s $cmd_ext $heisenbergCompensator -A "$agent" $url > $patternBuffer + curl -s $cmd_ext $heisenbergCompensator -A "$agent" $url > $patternBuffer # Check for list updates - gravity_patternCheck $patternBuffer + gravity_patternCheck $patternBuffer # Cleanup rm -f $patternBuffer @@ -135,7 +153,7 @@ function gravity_transport() { # spinup - main gravity function function gravity_spinup() { - + echo "::: " # Loop through domain list. Download each one and remove commented lines (lines beginning with '# 'or '/') and # blank lines for ((i = 0; i < "${#sources[@]}"; i++)) do @@ -149,7 +167,7 @@ function gravity_spinup() { agent="Mozilla/10.0" - echo -n " Getting $domain list: " + echo -n "::: Getting $domain list..." # Use a case statement to download lists that need special cURL commands # to complete properly and reset the user agent when required @@ -172,50 +190,69 @@ function gravity_spinup() { # Schwarzchild - aggregate domains to one list and add blacklisted domains function gravity_Schwarzchild() { - + echo "::: " # Find all active domains and compile them into one file and remove CRs - echo "** Aggregating list of domains..." - truncate -s 0 $piholeDir/$matterandlight + echo -n "::: Aggregating list of domains..." + truncate -s 0 $piholeDir/$matterandlight & spinner $! for i in "${activeDomains[@]}" do cat $i |tr -d '\r' >> $piholeDir/$matterandlight done + echo " done!" + } function gravity_Blacklist(){ # Append blacklist entries if they exist - blacklist.sh -f -nr -q + echo -n "::: Running blacklist script to update HOSTS file...." + blacklist.sh -f -nr -q > /dev/null & spinner $! + + numBlacklisted=$(wc -l < "/etc/pihole/blacklist.txt") + plural=; [[ "$numBlacklisted" != "1" ]] && plural=s + echo " $numBlacklisted domain${plural} blacklisted!" + + } function gravity_Whitelist() { + echo ":::" # Prevent our sources from being pulled into the hole plural=; [[ "${sources[@]}" != "1" ]] && plural=s - echo "** Whitelisting ${#sources[@]} ad list source${plural}..." + echo -n "::: Adding ${#sources[@]} ad list source${plural} to the whitelist..." urls=() for url in ${sources[@]} do tmp=$(echo "$url" | awk -F '/' '{print $3}') urls=("${urls[@]}" $tmp) - done + done & spinner $! + echo " done!" - whitelist.sh -f -nr -q ${urls[@]} - + echo -n "::: Running whitelist script to update HOSTS file...." + whitelist.sh -f -nr -q ${urls[@]} > /dev/null & spinner $! + + numWhitelisted=$(wc -l < "/etc/pihole/whitelist.txt") + plural=; [[ "$numWhitelisted" != "1" ]] && plural=s + echo " $numWhitelisted domain${plural} whitelisted!" + + } function gravity_unique() { # Sort and remove duplicates - sort -u $piholeDir/$supernova > $piholeDir/$eventHorizon + echo -n "::: Removing duplicate domains...." + sort -u $piholeDir/$supernova > $piholeDir/$eventHorizon & spinner $! + echo " done!" numberOf=$(wc -l < $piholeDir/$eventHorizon) - echo "** $numberOf unique domains trapped in the event horizon." + echo "::: $numberOf unique domains trapped in the event horizon." } function gravity_hostFormat() { - # Format domain list as "192.168.x.x domain.com" - echo "** Formatting domains into a HOSTS file..." + # Format domain list as "192.168.x.x domain.com" + echo "::: Formatting domains into a HOSTS file..." # If there is a value in the $piholeIPv6, then IPv6 will be used, so the awk command modified to create a line for both protocols if [[ -n $piholeIPv6 ]];then cat $piholeDir/$eventHorizon | awk -v ipv4addr="$piholeIP" -v ipv6addr="$piholeIPv6" '{sub(/\r$/,""); print ipv4addr" "$0"\n"ipv6addr" "$0}' > $piholeDir/$accretionDisc @@ -248,26 +285,31 @@ function gravity_advanced() { # Most of the lists downloaded are already in hosts file format but the spacing/formating is not contigious # This helps with that and makes it easier to read # It also helps with debugging so each stage of the script can be researched more in depth - awk '($1 !~ /^#/) { if (NF>1) {print $2} else {print $1}}' $piholeDir/$matterandlight | sed -nr -e 's/\.{2,}/./g' -e '/\./p' > $piholeDir/$supernova - + echo -n "::: Formatting list of domains to remove comments...." + awk '($1 !~ /^#/) { if (NF>1) {print $2} else {print $1}}' $piholeDir/$matterandlight | sed -nr -e 's/\.{2,}/./g' -e '/\./p' > $piholeDir/$supernova & spinner $! + echo " done!" + numberOf=$(wc -l < $piholeDir/$supernova) - echo "** $numberOf domains being pulled in by gravity..." - + echo "::: $numberOf domains being pulled in by gravity..." + gravity_unique + } function gravity_reload() { # Reload hosts file - echo "** Refresh lists in dnsmasq..." + echo ":::" + echo -n "::: Refresh lists in dnsmasq..." dnsmasqPid=$(pidof dnsmasq) if [[ $dnsmasqPid ]]; then # service already running - reload config - $SUDO kill -HUP $dnsmasqPid + $SUDO kill -HUP $dnsmasqPid & spinner $! else # service not running, start it up - $SUDO service dnsmasq start + $SUDO service dnsmasq start & spinner $! fi + echo " done!" } From cf3aea8075a1609d5021f30113ccd85025458bda Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 24 Jan 2016 15:27:40 +0000 Subject: [PATCH 011/100] uncomment the apt-get update/upgrade! --- automated install/basic-install.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 3764314e..7f959108 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -298,10 +298,10 @@ checkForDependencies(){ echo ":::" #update package lists echo -n "::: Updating package list before install...." - #$SUDO apt-get -qq update & spinner $! + $SUDO apt-get -qq update & spinner $! echo " done!" echo -n "::: Upgrading installed apt-get packages...." - #$SUDO apt-get -y -qq upgrade & spinner $! + $SUDO apt-get -y -qq upgrade & spinner $! echo " done!" echo ":::" @@ -423,6 +423,7 @@ runGravity(){ #Don't run as SUDO, this was causing issues /usr/local/bin/gravity.sh $SUDO echo "::: ...done." + echo ":::" } From 15631469188b0f9a9f15f781faffaf7dbac4b0b6 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 24 Jan 2016 16:33:53 +0000 Subject: [PATCH 012/100] improvements to git functions (passing parameters). Added >/dev/null to attempt to supress output from apt-get upgrade --- automated install/basic-install.sh | 55 ++++++++++++++---------------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 7f959108..90a22377 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -44,6 +44,7 @@ dhcpcdFile=/etc/dhcpcd.conf ######## FIRST CHECK ######## # Must be root to install +echo ":::" if [[ $EUID -eq 0 ]];then echo "You are root." else @@ -298,10 +299,10 @@ checkForDependencies(){ echo ":::" #update package lists echo -n "::: Updating package list before install...." - $SUDO apt-get -qq update & spinner $! + $SUDO apt-get -qq update > /dev/null & spinner $! echo " done!" echo -n "::: Upgrading installed apt-get packages...." - $SUDO apt-get -y -qq upgrade & spinner $! + $SUDO apt-get -y -qq upgrade > /dev/null & spinner $! echo " done!" echo ":::" @@ -326,55 +327,51 @@ checkForDependencies(){ getGitFiles(){ echo ":::" - dirToCheck=$piholeFilesDir - echo -n "::: Checking for existing base files..." - if ! is_repo; then - echo -n " Not found! Getting files from github...." - repoToClone=$piholeGitUrl - make_repo - echo " done!" - else - echo -n " Existing files found. Grabbing latest...." - update_repo - echo " done!" + echo "::: Checking for existing base files..." + if is_repo $piholeFilesDir; then + make_repo $piholeFilesDir $piholeGitUrl + else + update_repo $piholeFilesDir fi - echo ":::" - dirToCheck=$webInterfaceDir - echo -n "::: Checking for existing web interface..." - if ! is_repo; then - echo -n " Not found! Getting files from github...." - repoToClone=$webInterfaceGitUrl - make_repo - echo " done!" + echo ":::" + echo "::: Checking for existing web interface..." + if is_repo $webInterfaceDir; then + make_repo $webInterfaceDir $webInterfaceGitUrl else - echo -n " Existing files found. Grabbing latest..." - update_repo - echo " done!" + update_repo $webInterfaceDir + fi } is_repo() { + echo -n "::: Checking $1 is a repo..." # if the directory does not have a .git folder # it is not a repo - if [ ! -d "$dirToCheck/.git" ]; then + if [ -d "$1/.git" ]; then + echo " OK!" return 1 fi + echo " not found!!" return 0 + } make_repo() { # remove the non-repod interface and clone the interface - - $SUDO rm -rf $dirToCheck - $SUDO git clone -q "$repoToClone" "$dirToCheck" > /dev/null & spinner $! + echo -n "::: Cloning $2 into $1..." + $SUDO rm -rf $1 + $SUDO git clone -q "$2" "$1" > /dev/null & spinner $! + echo " done!" } update_repo() { # pull the latest commits - cd "$dirToCheck" + echo -n "::: Updating repo in $1..." + cd "$1" $SUDO git pull -q > /dev/null & spinner $! + echo " done!" } From 2fe42138c7495dafa67de4dfcd2e7b95650d6845 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 24 Jan 2016 16:37:15 +0000 Subject: [PATCH 013/100] removed a space --- automated install/basic-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 90a22377..3cb89b6e 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -346,7 +346,7 @@ getGitFiles(){ } is_repo() { - echo -n "::: Checking $1 is a repo..." + echo -n "::: Checking $1 is a repo..." # if the directory does not have a .git folder # it is not a repo if [ -d "$1/.git" ]; then From 8a74942da7abaf13d6082eb6c9a979f948179f05 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 24 Jan 2016 16:41:11 +0000 Subject: [PATCH 014/100] Cleaned up output before running gravity.sh --- automated install/basic-install.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 3cb89b6e..a42241d4 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -418,9 +418,11 @@ runGravity(){ $SUDO rm /etc/pihole/list.* fi #Don't run as SUDO, this was causing issues - /usr/local/bin/gravity.sh - $SUDO echo "::: ...done." + echo "::: Running gravity.sh" echo ":::" + + /usr/local/bin/gravity.sh + } From dfcf9d133e1f110ac82bc9bdd55b1c1ebcf8c6bd Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 24 Jan 2016 16:46:00 +0000 Subject: [PATCH 015/100] Make output make a bit more sense --- advanced/Scripts/whitelist.sh | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/advanced/Scripts/whitelist.sh b/advanced/Scripts/whitelist.sh index 8d871c51..ce8d63e1 100755 --- a/advanced/Scripts/whitelist.sh +++ b/advanced/Scripts/whitelist.sh @@ -52,7 +52,7 @@ function HandleOther(){ validDomain=$(echo $1 | perl -ne'print if /\b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}\b/') if [ -z "$validDomain" ]; then - echo $1 is not a valid argument or domain name + echo "::: $1 is not a valid argument or domain name" else domList=("${domList[@]}" $validDomain) fi @@ -76,17 +76,20 @@ function PopWhitelistFile(){ function AddDomain(){ #| sed 's/\./\\./g' bool=false + if $versbose; then + echo -n "::: Whitelisting $1...." + fi grep -Ex -q "$1" $whitelist || bool=true if $bool; then #domain not found in the whitelist file, add it! - if $versbose; then - echo "** Adding $1 to whitelist file" - fi - echo $1 >> $whitelist + echo $1 >> $whitelist modifyHost=true + if $versbose; then + echo " done!" + fi else if $versbose; then - echo "** $1 already whitelisted! No need to add" + echo " already whitelisted! No need to add" fi fi } @@ -98,7 +101,7 @@ function RemoveDomain(){ if $bool; then #Domain is not in the whitelist file, no need to Remove if $versbose; then - echo "** $1 is NOT whitelisted! No need to remove" + echo "::: $1 is NOT whitelisted! No need to remove" fi else #Domain is in the whitelist file, add to a temporary array and remove from whitelist file From 39507b9d0d9784274e70f656f5f3e0c8e1b7bce4 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 24 Jan 2016 16:47:38 +0000 Subject: [PATCH 016/100] Added echo ':::' to the top of the file --- gravity.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/gravity.sh b/gravity.sh index 0d070299..3d760215 100755 --- a/gravity.sh +++ b/gravity.sh @@ -11,6 +11,7 @@ # (at your option) any later version. # Run this script as root or under sudo +echo ":::" if [[ $EUID -eq 0 ]];then echo "::: You are root." else From 3cd1a5b1d56bcfaa653ff7cb865bf0931dba870b Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 24 Jan 2016 16:51:54 +0000 Subject: [PATCH 017/100] ... Helps if I add the changes to the repo file, and not the test file on my pi. --- advanced/Scripts/whitelist.sh | 54 +++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/advanced/Scripts/whitelist.sh b/advanced/Scripts/whitelist.sh index ce8d63e1..500d65df 100755 --- a/advanced/Scripts/whitelist.sh +++ b/advanced/Scripts/whitelist.sh @@ -76,12 +76,13 @@ function PopWhitelistFile(){ function AddDomain(){ #| sed 's/\./\\./g' bool=false - if $versbose; then - echo -n "::: Whitelisting $1...." - fi + grep -Ex -q "$1" $whitelist || bool=true if $bool; then #domain not found in the whitelist file, add it! + if $versbose; then + echo -n "::: Adding $1 to whitelist.txt..." + fi echo $1 >> $whitelist modifyHost=true if $versbose; then @@ -89,7 +90,7 @@ function AddDomain(){ fi else if $versbose; then - echo " already whitelisted! No need to add" + echo "::: $1 already exists in whitelist.txt, no need to add!" fi fi } @@ -105,9 +106,9 @@ function RemoveDomain(){ fi else #Domain is in the whitelist file, add to a temporary array and remove from whitelist file - if $versbose; then - echo "** Un-whitelisting $dom..." - fi + #if $versbose; then + #echo "::: Un-whitelisting $dom..." + #fi domToRemoveList=("${domToRemoveList[@]}" $1) modifyHost=true fi @@ -118,30 +119,46 @@ function ModifyHostFile(){ #remove domains in from hosts file if [[ -r $whitelist ]];then # Remove whitelist entries - numberOf=$(cat $whitelist | sed '/^\s*$/d' | wc -l) + numberOf=$(cat $whitelist | sed '/^\s*$/d' | wc -l) plural=; [[ "$numberOf" != "1" ]] && plural=s - echo "** Whitelisting a total of $numberOf domain${plural}..." - awk -F':' '{ print $1 }' $whitelist | sed 's/\./\\./g' | xargs -I {} perl -i -ne'print unless /[^.]'{}'(?!.)/;' $adList + echo ":::" + echo -n "::: Modifying HOSTS file to whitelist $numberOf domain${plural}..." + awk -F':' '{print $1}' $whitelist | while read line; do echo "$piholeIP $line"; done > /etc/pihole/whitelist.tmp + awk -F':' '{print $1}' $whitelist | while read line; do echo "$piholeIPv6 $line"; done >> /etc/pihole/whitelist.tmp + echo "l" >> /etc/pihole/whitelist.tmp + grep -F -x -v -f /etc/pihole/whitelist.tmp /etc/pihole/gravity.list > /etc/pihole/gravity.tmp + rm /etc/pihole/gravity.list + mv /etc/pihole/gravity.tmp /etc/pihole/gravity.list + rm /etc/pihole/whitelist.tmp + echo " done!" + fi else #we need to add the removed domains to the hosts file + echo ":::" + echo "::: Modifying HOSTS file to un-whitelist domains..." for rdom in "${domToRemoveList[@]}" - do + do if [[ -n $piholeIPv6 ]];then - echo "**Blacklisting $rdom on IPv4 and IPv6" + echo -n "::: Un-whitelisting $rdom on IPv4 and IPv6..." echo $rdom | awk -v ipv4addr="$piholeIP" -v ipv6addr="$piholeIPv6" '{sub(/\r$/,""); print ipv4addr" "$0"\n"ipv6addr" "$0}' >> $adList + echo " done!" else - echo "**Blacklisting $rdom on IPv4" + echo -n "::: Un-whitelisting $rdom on IPv4" echo $rdom | awk -v ipv4addr="$piholeIP" '{sub(/\r$/,""); print ipv4addr" "$0}' >>$adList - fi + echo " done!" + fi + echo -n "::: Removing $rdom from whitelist.txt..." echo $rdom| sed 's/\./\\./g' | xargs -I {} perl -i -ne'print unless /'{}'(?!.)/;' $whitelist + echo " done!" done fi } function Reload() { # Reload hosts file - echo "** Refresh lists in dnsmasq..." + echo ":::" + echo -n "::: Refresh lists in dnsmasq..." dnsmasqPid=$(pidof dnsmasq) if [[ $dnsmasqPid ]]; then @@ -151,6 +168,7 @@ function Reload() { # service not running, start it up sudo service dnsmasq start fi + echo " done!" } ################################################### @@ -169,11 +187,11 @@ done PopWhitelistFile if $modifyHost || $force; then - echo "** Modifying Hosts File" - ModifyHostFile + ModifyHostFile else if $versbose; then - echo "** No changes need to be made" + echo ":::" + echo "::: No changes need to be made" exit 1 fi fi From 8ecf8eb76c59448cc45662d4a44016eec540487f Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 24 Jan 2016 17:18:37 +0000 Subject: [PATCH 018/100] output to match other scripts --- advanced/Scripts/blacklist.sh | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/advanced/Scripts/blacklist.sh b/advanced/Scripts/blacklist.sh index 11c3852c..3e7753d3 100644 --- a/advanced/Scripts/blacklist.sh +++ b/advanced/Scripts/blacklist.sh @@ -81,13 +81,14 @@ function AddDomain(){ if $bool; then #domain not found in the blacklist file, add it! if $versbose; then - echo "** Adding $1 to blacklist file" + echo -n "::: Adding $1 to blacklist file..." fi echo $1 >> $blacklist modifyHost=true + echo " done!" else if $versbose; then - echo "** $1 already blacklisted! No need to add" + echo "::: $1 already exists in blacklist.txt! No need to add" fi fi } @@ -99,12 +100,12 @@ function RemoveDomain(){ if $bool; then #Domain is not in the blacklist file, no need to Remove if $versbose; then - echo "** $1 is NOT blacklisted! No need to remove" + echo "::: $1 is NOT blacklisted! No need to remove" fi else #Domain is in the blacklist file, add to a temporary array if $versbose; then - echo "** Un-blacklisting $dom..." + echo "::: Un-blacklisting $dom..." fi domToRemoveList=("${domToRemoveList[@]}" $1) modifyHost=true @@ -117,7 +118,8 @@ function ModifyHostFile(){ if [[ -r $blacklist ]];then numberOf=$(cat $blacklist | sed '/^\s*$/d' | wc -l) plural=; [[ "$numberOf" != "1" ]] && plural=s - echo "** blacklisting a total of $numberOf domain${plural}..." + echo ":::" + echo -n "::: Modifying HOSTS file to blacklist $numberOf domain${plural}..." if [[ -n $piholeIPv6 ]];then cat $blacklist | awk -v ipv4addr="$piholeIP" -v ipv6addr="$piholeIPv6" '{sub(/\r$/,""); print ipv4addr" "$0"\n"ipv6addr" "$0}' >> $adList else @@ -126,12 +128,18 @@ function ModifyHostFile(){ fi else - + + echo ":::" for dom in "${domToRemoveList[@]}" do #we need to remove the domains from the blacklist file and the host file + echo "::: $dom" + echo -n "::: removing from HOSTS file..." echo $dom | sed 's/\./\\./g' | xargs -I {} perl -i -ne'print unless /[^.]'{}'(?!.)/;' $adList + echo " done!" + echo -n "::: removing from blackist.txt..." echo $dom | sed 's/\./\\./g' | xargs -I {} perl -i -ne'print unless /'{}'(?!.)/;' $blacklist + echo " done!" done fi @@ -139,7 +147,8 @@ function ModifyHostFile(){ function Reload() { # Reload hosts file - echo "** Refresh lists in dnsmasq..." + echo ":::" + echo -n "::: Refresh lists in dnsmasq..." dnsmasqPid=$(pidof dnsmasq) @@ -150,6 +159,7 @@ function Reload() { # service not running, start it up sudo service dnsmasq start fi + echo " done!" } ################################################### @@ -167,12 +177,11 @@ done PopBlacklistFile -if $modifyHost || $force; then - echo "** Modifying Hosts File" +if $modifyHost || $force; then ModifyHostFile else if $versbose; then - echo "** No changes need to be made" + echo "::: No changes need to be made" fi exit 1 fi From 736edf44e4bf89e2e7f57e4c062453aa5af0fcac Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 24 Jan 2016 17:53:27 +0000 Subject: [PATCH 019/100] Added date check before running apt-get update/upgrade. Wont run apt-get update/upgrade if it has already been run today --- automated install/basic-install.sh | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index a42241d4..84d8f950 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -296,14 +296,24 @@ stopServices(){ checkForDependencies(){ - echo ":::" - #update package lists - echo -n "::: Updating package list before install...." - $SUDO apt-get -qq update > /dev/null & spinner $! - echo " done!" - echo -n "::: Upgrading installed apt-get packages...." - $SUDO apt-get -y -qq upgrade > /dev/null & spinner $! - echo " done!" + echo ":::" + #Check to see if apt-get update has already been run today + timestamp=$(stat -c %Y /var/cache/apt/) + timestampAsDate=$(date -d @$timestamp "+%b %e") + today=$(date "+%b %e") + + if [ ! "$today" == "$timestampAsDate" ]; then + #update package lists + echo -n "::: Updating package list before install...." + $SUDO apt-get -qq update > /dev/null & spinner $! + echo " done!" + echo -n "::: Upgrading installed apt-get packages...." + $SUDO apt-get -y -qq upgrade > /dev/null & spinner $! + echo " done!" + else + echo "::: Apt-get update already run today, any more would be overkill..." + fi + echo ":::" echo "::: Checking dependencies:" From 2d4ebf5eb5687bc631f04414f4e3a827d30d8daf Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 24 Jan 2016 20:29:22 +0000 Subject: [PATCH 020/100] FIX CONFLICTS --- automated install/basic-install.sh | 68 ------------------------------ 1 file changed, 68 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index ca5fc0b3..c8048811 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -263,7 +263,6 @@ setStaticIPv4(){ } installScripts(){ -<<<<<<< HEAD $SUDO echo ":::" $SUDO echo -n "::: Installing scripts..." $SUDO cp /etc/.pihole/gravity.sh /usr/local/bin/gravity.sh @@ -285,29 +284,6 @@ installConfigs(){ $SUDO cp /etc/.pihole/advanced/lighttpd.conf /etc/lighttpd/lighttpd.conf $SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.conf $SUDO echo " done." -======= -$SUDO echo " " -$SUDO echo "::: Installing scripts..." -$SUDO curl -o /usr/local/bin/gravity.sh https://raw.githubusercontent.com/pi-hole/pi-hole/master/gravity.sh -$SUDO curl -o /usr/local/bin/chronometer.sh https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/Scripts/chronometer.sh -$SUDO curl -o /usr/local/bin/whitelist.sh https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/Scripts/whitelist.sh -$SUDO curl -o /usr/local/bin/blacklist.sh https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/Scripts/blacklist.sh -$SUDO curl -o /usr/local/bin/piholeLogFlush.sh https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/Scripts/piholeLogFlush.sh -$SUDO curl -o /usr/local/bin/updateDashboard.sh https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/Scripts/updateDashboard.sh -$SUDO chmod 755 /usr/local/bin/{gravity,chronometer,whitelist,blacklist,piholeLogFlush,updateDashboard}.sh -$SUDO echo "::: ...done." -} - -installConfigs(){ -$SUDO echo " " -$SUDO echo "::: Installing configs..." -$SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig -$SUDO mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig -$SUDO curl -o /etc/dnsmasq.conf https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/dnsmasq.conf -$SUDO curl -o /etc/lighttpd/lighttpd.conf https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/lighttpd.conf -$SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.conf -$SUDO echo "::: ...done." ->>>>>>> master } stopServices(){ @@ -318,28 +294,6 @@ stopServices(){ $SUDO echo " done." } -<<<<<<< HEAD -installDependencies(){ -$SUDO echo " " -$SUDO echo "::: Updating apt-get package list" -$SUDO apt-get -qq update & spinner $! -$SUDO echo "::: Upgrading apt-get packages" -$SUDO apt-get -yqq upgrade & spinner $! -$SUDO echo "::: ...done." -$SUDO echo "::: installing dnsutils, bc, toilet, unzip, and figlet..." -$SUDO apt-get -yqq install dnsutils bc toilet unzip figlet & spinner $! -$SUDO echo "::: ...done." -$SUDO echo "::: Installing dnsmasq..." -$SUDO apt-get -yqq install dnsmasq & spinner $! -$SUDO echo "::: ...done." -$SUDO echo "::: Installing lighttpd, php5-common, php5-cgi, and php5..." -$SUDO apt-get -yqq install lighttpd php5-common php5-cgi php5 & spinner $! -$SUDO echo "::: ...done." -$SUDO echo "::: Installing git..." -$SUDO apt-get -yqq install git & spinner $! -$SUDO echo "::: ...done." -======= - checkForDependencies(){ echo ":::" #Check to see if apt-get update has already been run today @@ -376,8 +330,6 @@ checkForDependencies(){ echo " already installed!" fi done - ->>>>>>> 736edf44e4bf89e2e7f57e4c062453aa5af0fcac } getGitFiles(){ @@ -446,7 +398,6 @@ CreateLogFile(){ } installPiholeWeb(){ -<<<<<<< HEAD $SUDO echo ":::" $SUDO echo -n "::: Installing pihole custom index page..." if [ -d "/var/www/html/pihole" ]; then @@ -465,25 +416,6 @@ installCron(){ $SUDO echo -n "::: Installing latest Cron script..." $SUDO cp /etc/.pihole/advanced/pihole.cron /etc/cron.d/pihole $SUDO echo " done!" -======= -$SUDO echo " " -$SUDO echo "::: Downloading and installing pihole custom index page..." -if [ -d "/var/www/html/pihole" ]; then - $SUDO echo "::: Existing page detected, not overwriting" -else - $SUDO mkdir /var/www/html/pihole - $SUDO mv /var/www/html/index.lighttpd.html /var/www/html/index.lighttpd.orig - $SUDO curl -o /var/www/html/pihole/index.html https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/index.html -fi -$SUDO echo "::: ...done." -} - -installCron(){ -$SUDO echo " " -$SUDO echo "::: Downloading latest Cron script..." -$SUDO curl -o /etc/cron.d/pihole https://raw.githubusercontent.com/pi-hole/pi-hole/master/advanced/pihole.cron -$SUDO echo "::: ...done." ->>>>>>> master } runGravity(){ From 649a565801ef8b86368b520d81d4dbf8b7a04153 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 24 Jan 2016 20:35:24 +0000 Subject: [PATCH 021/100] run apt-get install as sudo when resolving dependencies --- automated install/basic-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index c8048811..aae159dd 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -324,7 +324,7 @@ checkForDependencies(){ echo -n "::: Checking for $i..." if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then echo -n " Not found! Installing...." - apt-get -y -qq install $i > /dev/null & spinner $! + $SUDO apt-get -y -qq install $i > /dev/null & spinner $! echo " done!" else echo " already installed!" From c179936b54539313d844d2970717b5be2879d5c4 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 24 Jan 2016 20:49:37 +0000 Subject: [PATCH 022/100] add $SUDO --- automated install/basic-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index aae159dd..4ba1620a 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -46,7 +46,7 @@ dhcpcdFile=/etc/dhcpcd.conf # Must be root to install echo ":::" if [[ $EUID -eq 0 ]];then - echo "You are root." + echo "::: You are root." else echo "::: sudo will be used for the install." # Check if it is actually installed From eec14be10d622c6dd33a065ec711f08ad88b8390 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 24 Jan 2016 21:19:23 +0000 Subject: [PATCH 023/100] add $SUDO into spinner control. --- automated install/basic-install.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 4ba1620a..d9e448a9 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -70,12 +70,10 @@ fi ###All credit for the below function goes to http://fitnr.com/showing-a-bash-spinner.html spinner(){ local pid=$1 - local delay=0.001 - local spinstr='/-\|' spin='-\|/' i=0 - while kill -0 $pid 2>/dev/null + while $SUDO kill -0 $pid 2>/dev/null do i=$(( (i+1) %4 )) printf "\b${spin:$i:1}" @@ -324,7 +322,7 @@ checkForDependencies(){ echo -n "::: Checking for $i..." if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then echo -n " Not found! Installing...." - $SUDO apt-get -y -qq install $i > /dev/null & spinner $! + $SUDO apt-get -y -qq install $i > /dev/null & spinner $! echo " done!" else echo " already installed!" From cebdcc71a7ee100c33b4cee4e80c841740a40c5f Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 24 Jan 2016 21:27:25 +0000 Subject: [PATCH 024/100] Add $SUDO call to spinner() in gravity.sh --- gravity.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gravity.sh b/gravity.sh index 3d760215..db09a9ff 100755 --- a/gravity.sh +++ b/gravity.sh @@ -85,7 +85,7 @@ spinner(){ spin='-\|/' i=0 - while kill -0 $pid 2>/dev/null + while $SUDO kill -0 $pid 2>/dev/null do i=$(( (i+1) %4 )) printf "\b${spin:$i:1}" From 6b76270889899230e5138bd2b0b9401123da1b1d Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 24 Jan 2016 22:30:12 +0000 Subject: [PATCH 025/100] Remove spinner call when adding URLs of adlist to array.. seems to break it. --- gravity.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gravity.sh b/gravity.sh index db09a9ff..255bb264 100755 --- a/gravity.sh +++ b/gravity.sh @@ -228,7 +228,7 @@ function gravity_Whitelist() { do tmp=$(echo "$url" | awk -F '/' '{print $3}') urls=("${urls[@]}" $tmp) - done & spinner $! + done echo " done!" echo -n "::: Running whitelist script to update HOSTS file...." From ff5ed561cc3ed2cb748f734a535e63c333188416 Mon Sep 17 00:00:00 2001 From: Chad Howell Date: Sun, 24 Jan 2016 23:54:00 -0500 Subject: [PATCH 026/100] Rename dnsmasq.conf to 01-pihole.conf Rename dnsmasq.conf to 01-pihole.conf to prepare for move to /etc/dnsmasq.d/ per the normal way of modding configs on Debian based systems. --- advanced/{dnsmasq.conf => 01-pihole.conf} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename advanced/{dnsmasq.conf => 01-pihole.conf} (100%) diff --git a/advanced/dnsmasq.conf b/advanced/01-pihole.conf similarity index 100% rename from advanced/dnsmasq.conf rename to advanced/01-pihole.conf From e5f9663a0e6ed55cc62ffc19532c8b5977bd8a3a Mon Sep 17 00:00:00 2001 From: Chad Howell Date: Mon, 25 Jan 2016 00:04:02 -0500 Subject: [PATCH 027/100] Move dnsmasq.conf to dnsmasq.d/01-pihole.conf Check if /etc/dnsmasq.conf is from pihole. If so, replace with an original and install new in .d directory. Add and unmolested version of dnsmasq.conf to the ./advanced directory. --- advanced/dnsmasq.conf.original | 648 +++++++++++++++++++++++++++++ automated install/basic-install.sh | 17 +- 2 files changed, 662 insertions(+), 3 deletions(-) create mode 100644 advanced/dnsmasq.conf.original diff --git a/advanced/dnsmasq.conf.original b/advanced/dnsmasq.conf.original new file mode 100644 index 00000000..598d6390 --- /dev/null +++ b/advanced/dnsmasq.conf.original @@ -0,0 +1,648 @@ +# Configuration file for dnsmasq. +# +# Format is one option per line, legal options are the same +# as the long options legal on the command line. See +# "/usr/sbin/dnsmasq --help" or "man 8 dnsmasq" for details. + +# Listen on this specific port instead of the standard DNS port +# (53). Setting this to zero completely disables DNS function, +# leaving only DHCP and/or TFTP. +#port=5353 + +# The following two options make you a better netizen, since they +# tell dnsmasq to filter out queries which the public DNS cannot +# answer, and which load the servers (especially the root servers) +# unnecessarily. If you have a dial-on-demand link they also stop +# these requests from bringing up the link unnecessarily. + +# Never forward plain names (without a dot or domain part) +#domain-needed +# Never forward addresses in the non-routed address spaces. +#bogus-priv + +# Uncomment these to enable DNSSEC validation and caching: +# (Requires dnsmasq to be built with DNSSEC option.) +#conf-file=%%PREFIX%%/share/dnsmasq/trust-anchors.conf +#dnssec + +# Replies which are not DNSSEC signed may be legitimate, because the domain +# is unsigned, or may be forgeries. Setting this option tells dnsmasq to +# check that an unsigned reply is OK, by finding a secure proof that a DS +# record somewhere between the root and the domain does not exist. +# The cost of setting this is that even queries in unsigned domains will need +# one or more extra DNS queries to verify. +#dnssec-check-unsigned + +# Uncomment this to filter useless windows-originated DNS requests +# which can trigger dial-on-demand links needlessly. +# Note that (amongst other things) this blocks all SRV requests, +# so don't use it if you use eg Kerberos, SIP, XMMP or Google-talk. +# This option only affects forwarding, SRV records originating for +# dnsmasq (via srv-host= lines) are not suppressed by it. +#filterwin2k + +# Change this line if you want dns to get its upstream servers from +# somewhere other that /etc/resolv.conf +#resolv-file= + +# By default, dnsmasq will send queries to any of the upstream +# servers it knows about and tries to favour servers to are known +# to be up. Uncommenting this forces dnsmasq to try each query +# with each server strictly in the order they appear in +# /etc/resolv.conf +#strict-order + +# If you don't want dnsmasq to read /etc/resolv.conf or any other +# file, getting its servers from this file instead (see below), then +# uncomment this. +#no-resolv + +# If you don't want dnsmasq to poll /etc/resolv.conf or other resolv +# files for changes and re-read them then uncomment this. +#no-poll + +# Add other name servers here, with domain specs if they are for +# non-public domains. +#server=/localnet/192.168.0.1 + +# Example of routing PTR queries to nameservers: this will send all +# address->name queries for 192.168.3/24 to nameserver 10.1.2.3 +#server=/3.168.192.in-addr.arpa/10.1.2.3 + +# Add local-only domains here, queries in these domains are answered +# from /etc/hosts or DHCP only. +#local=/localnet/ + +# Add domains which you want to force to an IP address here. +# The example below send any host in double-click.net to a local +# web-server. +#address=/double-click.net/127.0.0.1 + +# --address (and --server) work with IPv6 addresses too. +#address=/www.thekelleys.org.uk/fe80::20d:60ff:fe36:f83 + +# Add the IPs of all queries to yahoo.com, google.com, and their +# subdomains to the vpn and search ipsets: +#ipset=/yahoo.com/google.com/vpn,search + +# You can control how dnsmasq talks to a server: this forces +# queries to 10.1.2.3 to be routed via eth1 +# server=10.1.2.3@eth1 + +# and this sets the source (ie local) address used to talk to +# 10.1.2.3 to 192.168.1.1 port 55 (there must be a interface with that +# IP on the machine, obviously). +# server=10.1.2.3@192.168.1.1#55 + +# If you want dnsmasq to change uid and gid to something other +# than the default, edit the following lines. +#user= +#group= + +# If you want dnsmasq to listen for DHCP and DNS requests only on +# specified interfaces (and the loopback) give the name of the +# interface (eg eth0) here. +# Repeat the line for more than one interface. +#interface= +# Or you can specify which interface _not_ to listen on +#except-interface= +# Or which to listen on by address (remember to include 127.0.0.1 if +# you use this.) +#listen-address= +# If you want dnsmasq to provide only DNS service on an interface, +# configure it as shown above, and then use the following line to +# disable DHCP and TFTP on it. +#no-dhcp-interface= + +# On systems which support it, dnsmasq binds the wildcard address, +# even when it is listening on only some interfaces. It then discards +# requests that it shouldn't reply to. This has the advantage of +# working even when interfaces come and go and change address. If you +# want dnsmasq to really bind only the interfaces it is listening on, +# uncomment this option. About the only time you may need this is when +# running another nameserver on the same machine. +#bind-interfaces + +# If you don't want dnsmasq to read /etc/hosts, uncomment the +# following line. +#no-hosts +# or if you want it to read another file, as well as /etc/hosts, use +# this. +#addn-hosts=/etc/banner_add_hosts + +# Set this (and domain: see below) if you want to have a domain +# automatically added to simple names in a hosts-file. +#expand-hosts + +# Set the domain for dnsmasq. this is optional, but if it is set, it +# does the following things. +# 1) Allows DHCP hosts to have fully qualified domain names, as long +# as the domain part matches this setting. +# 2) Sets the "domain" DHCP option thereby potentially setting the +# domain of all systems configured by DHCP +# 3) Provides the domain part for "expand-hosts" +#domain=thekelleys.org.uk + +# Set a different domain for a particular subnet +#domain=wireless.thekelleys.org.uk,192.168.2.0/24 + +# Same idea, but range rather then subnet +#domain=reserved.thekelleys.org.uk,192.68.3.100,192.168.3.200 + +# Uncomment this to enable the integrated DHCP server, you need +# to supply the range of addresses available for lease and optionally +# a lease time. If you have more than one network, you will need to +# repeat this for each network on which you want to supply DHCP +# service. +#dhcp-range=192.168.0.50,192.168.0.150,12h + +# This is an example of a DHCP range where the netmask is given. This +# is needed for networks we reach the dnsmasq DHCP server via a relay +# agent. If you don't know what a DHCP relay agent is, you probably +# don't need to worry about this. +#dhcp-range=192.168.0.50,192.168.0.150,255.255.255.0,12h + +# This is an example of a DHCP range which sets a tag, so that +# some DHCP options may be set only for this network. +#dhcp-range=set:red,192.168.0.50,192.168.0.150 + +# Use this DHCP range only when the tag "green" is set. +#dhcp-range=tag:green,192.168.0.50,192.168.0.150,12h + +# Specify a subnet which can't be used for dynamic address allocation, +# is available for hosts with matching --dhcp-host lines. Note that +# dhcp-host declarations will be ignored unless there is a dhcp-range +# of some type for the subnet in question. +# In this case the netmask is implied (it comes from the network +# configuration on the machine running dnsmasq) it is possible to give +# an explicit netmask instead. +#dhcp-range=192.168.0.0,static + +# Enable DHCPv6. Note that the prefix-length does not need to be specified +# and defaults to 64 if missing/ +#dhcp-range=1234::2, 1234::500, 64, 12h + +# Do Router Advertisements, BUT NOT DHCP for this subnet. +#dhcp-range=1234::, ra-only + +# Do Router Advertisements, BUT NOT DHCP for this subnet, also try and +# add names to the DNS for the IPv6 address of SLAAC-configured dual-stack +# hosts. Use the DHCPv4 lease to derive the name, network segment and +# MAC address and assume that the host will also have an +# IPv6 address calculated using the SLAAC alogrithm. +#dhcp-range=1234::, ra-names + +# Do Router Advertisements, BUT NOT DHCP for this subnet. +# Set the lifetime to 46 hours. (Note: minimum lifetime is 2 hours.) +#dhcp-range=1234::, ra-only, 48h + +# Do DHCP and Router Advertisements for this subnet. Set the A bit in the RA +# so that clients can use SLAAC addresses as well as DHCP ones. +#dhcp-range=1234::2, 1234::500, slaac + +# Do Router Advertisements and stateless DHCP for this subnet. Clients will +# not get addresses from DHCP, but they will get other configuration information. +# They will use SLAAC for addresses. +#dhcp-range=1234::, ra-stateless + +# Do stateless DHCP, SLAAC, and generate DNS names for SLAAC addresses +# from DHCPv4 leases. +#dhcp-range=1234::, ra-stateless, ra-names + +# Do router advertisements for all subnets where we're doing DHCPv6 +# Unless overriden by ra-stateless, ra-names, et al, the router +# advertisements will have the M and O bits set, so that the clients +# get addresses and configuration from DHCPv6, and the A bit reset, so the +# clients don't use SLAAC addresses. +#enable-ra + +# Supply parameters for specified hosts using DHCP. There are lots +# of valid alternatives, so we will give examples of each. Note that +# IP addresses DO NOT have to be in the range given above, they just +# need to be on the same network. The order of the parameters in these +# do not matter, it's permissible to give name, address and MAC in any +# order. + +# Always allocate the host with Ethernet address 11:22:33:44:55:66 +# The IP address 192.168.0.60 +#dhcp-host=11:22:33:44:55:66,192.168.0.60 + +# Always set the name of the host with hardware address +# 11:22:33:44:55:66 to be "fred" +#dhcp-host=11:22:33:44:55:66,fred + +# Always give the host with Ethernet address 11:22:33:44:55:66 +# the name fred and IP address 192.168.0.60 and lease time 45 minutes +#dhcp-host=11:22:33:44:55:66,fred,192.168.0.60,45m + +# Give a host with Ethernet address 11:22:33:44:55:66 or +# 12:34:56:78:90:12 the IP address 192.168.0.60. Dnsmasq will assume +# that these two Ethernet interfaces will never be in use at the same +# time, and give the IP address to the second, even if it is already +# in use by the first. Useful for laptops with wired and wireless +# addresses. +#dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.60 + +# Give the machine which says its name is "bert" IP address +# 192.168.0.70 and an infinite lease +#dhcp-host=bert,192.168.0.70,infinite + +# Always give the host with client identifier 01:02:02:04 +# the IP address 192.168.0.60 +#dhcp-host=id:01:02:02:04,192.168.0.60 + +# Always give the host with client identifier "marjorie" +# the IP address 192.168.0.60 +#dhcp-host=id:marjorie,192.168.0.60 + +# Enable the address given for "judge" in /etc/hosts +# to be given to a machine presenting the name "judge" when +# it asks for a DHCP lease. +#dhcp-host=judge + +# Never offer DHCP service to a machine whose Ethernet +# address is 11:22:33:44:55:66 +#dhcp-host=11:22:33:44:55:66,ignore + +# Ignore any client-id presented by the machine with Ethernet +# address 11:22:33:44:55:66. This is useful to prevent a machine +# being treated differently when running under different OS's or +# between PXE boot and OS boot. +#dhcp-host=11:22:33:44:55:66,id:* + +# Send extra options which are tagged as "red" to +# the machine with Ethernet address 11:22:33:44:55:66 +#dhcp-host=11:22:33:44:55:66,set:red + +# Send extra options which are tagged as "red" to +# any machine with Ethernet address starting 11:22:33: +#dhcp-host=11:22:33:*:*:*,set:red + +# Give a fixed IPv6 address and name to client with +# DUID 00:01:00:01:16:d2:83:fc:92:d4:19:e2:d8:b2 +# Note the MAC addresses CANNOT be used to identify DHCPv6 clients. +# Note also the they [] around the IPv6 address are obilgatory. +#dhcp-host=id:00:01:00:01:16:d2:83:fc:92:d4:19:e2:d8:b2, fred, [1234::5] + +# Ignore any clients which are not specified in dhcp-host lines +# or /etc/ethers. Equivalent to ISC "deny unknown-clients". +# This relies on the special "known" tag which is set when +# a host is matched. +#dhcp-ignore=tag:!known + +# Send extra options which are tagged as "red" to any machine whose +# DHCP vendorclass string includes the substring "Linux" +#dhcp-vendorclass=set:red,Linux + +# Send extra options which are tagged as "red" to any machine one +# of whose DHCP userclass strings includes the substring "accounts" +#dhcp-userclass=set:red,accounts + +# Send extra options which are tagged as "red" to any machine whose +# MAC address matches the pattern. +#dhcp-mac=set:red,00:60:8C:*:*:* + +# If this line is uncommented, dnsmasq will read /etc/ethers and act +# on the ethernet-address/IP pairs found there just as if they had +# been given as --dhcp-host options. Useful if you keep +# MAC-address/host mappings there for other purposes. +#read-ethers + +# Send options to hosts which ask for a DHCP lease. +# See RFC 2132 for details of available options. +# Common options can be given to dnsmasq by name: +# run "dnsmasq --help dhcp" to get a list. +# Note that all the common settings, such as netmask and +# broadcast address, DNS server and default route, are given +# sane defaults by dnsmasq. You very likely will not need +# any dhcp-options. If you use Windows clients and Samba, there +# are some options which are recommended, they are detailed at the +# end of this section. + +# Override the default route supplied by dnsmasq, which assumes the +# router is the same machine as the one running dnsmasq. +#dhcp-option=3,1.2.3.4 + +# Do the same thing, but using the option name +#dhcp-option=option:router,1.2.3.4 + +# Override the default route supplied by dnsmasq and send no default +# route at all. Note that this only works for the options sent by +# default (1, 3, 6, 12, 28) the same line will send a zero-length option +# for all other option numbers. +#dhcp-option=3 + +# Set the NTP time server addresses to 192.168.0.4 and 10.10.0.5 +#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5 + +# Send DHCPv6 option. Note [] around IPv6 addresses. +#dhcp-option=option6:dns-server,[1234::77],[1234::88] + +# Send DHCPv6 option for namservers as the machine running +# dnsmasq and another. +#dhcp-option=option6:dns-server,[::],[1234::88] + +# Ask client to poll for option changes every six hours. (RFC4242) +#dhcp-option=option6:information-refresh-time,6h + +# Set the NTP time server address to be the same machine as +# is running dnsmasq +#dhcp-option=42,0.0.0.0 + +# Set the NIS domain name to "welly" +#dhcp-option=40,welly + +# Set the default time-to-live to 50 +#dhcp-option=23,50 + +# Set the "all subnets are local" flag +#dhcp-option=27,1 + +# Send the etherboot magic flag and then etherboot options (a string). +#dhcp-option=128,e4:45:74:68:00:00 +#dhcp-option=129,NIC=eepro100 + +# Specify an option which will only be sent to the "red" network +# (see dhcp-range for the declaration of the "red" network) +# Note that the tag: part must precede the option: part. +#dhcp-option = tag:red, option:ntp-server, 192.168.1.1 + +# The following DHCP options set up dnsmasq in the same way as is specified +# for the ISC dhcpcd in +# http://www.samba.org/samba/ftp/docs/textdocs/DHCP-Server-Configuration.txt +# adapted for a typical dnsmasq installation where the host running +# dnsmasq is also the host running samba. +# you may want to uncomment some or all of them if you use +# Windows clients and Samba. +#dhcp-option=19,0 # option ip-forwarding off +#dhcp-option=44,0.0.0.0 # set netbios-over-TCP/IP nameserver(s) aka WINS server(s) +#dhcp-option=45,0.0.0.0 # netbios datagram distribution server +#dhcp-option=46,8 # netbios node type + +# Send an empty WPAD option. This may be REQUIRED to get windows 7 to behave. +#dhcp-option=252,"\n" + +# Send RFC-3397 DNS domain search DHCP option. WARNING: Your DHCP client +# probably doesn't support this...... +#dhcp-option=option:domain-search,eng.apple.com,marketing.apple.com + +# Send RFC-3442 classless static routes (note the netmask encoding) +#dhcp-option=121,192.168.1.0/24,1.2.3.4,10.0.0.0/8,5.6.7.8 + +# Send vendor-class specific options encapsulated in DHCP option 43. +# The meaning of the options is defined by the vendor-class so +# options are sent only when the client supplied vendor class +# matches the class given here. (A substring match is OK, so "MSFT" +# matches "MSFT" and "MSFT 5.0"). This example sets the +# mtftp address to 0.0.0.0 for PXEClients. +#dhcp-option=vendor:PXEClient,1,0.0.0.0 + +# Send microsoft-specific option to tell windows to release the DHCP lease +# when it shuts down. Note the "i" flag, to tell dnsmasq to send the +# value as a four-byte integer - that's what microsoft wants. See +# http://technet2.microsoft.com/WindowsServer/en/library/a70f1bb7-d2d4-49f0-96d6-4b7414ecfaae1033.mspx?mfr=true +#dhcp-option=vendor:MSFT,2,1i + +# Send the Encapsulated-vendor-class ID needed by some configurations of +# Etherboot to allow is to recognise the DHCP server. +#dhcp-option=vendor:Etherboot,60,"Etherboot" + +# Send options to PXELinux. Note that we need to send the options even +# though they don't appear in the parameter request list, so we need +# to use dhcp-option-force here. +# See http://syslinux.zytor.com/pxe.php#special for details. +# Magic number - needed before anything else is recognised +#dhcp-option-force=208,f1:00:74:7e +# Configuration file name +#dhcp-option-force=209,configs/common +# Path prefix +#dhcp-option-force=210,/tftpboot/pxelinux/files/ +# Reboot time. (Note 'i' to send 32-bit value) +#dhcp-option-force=211,30i + +# Set the boot filename for netboot/PXE. You will only need +# this is you want to boot machines over the network and you will need +# a TFTP server; either dnsmasq's built in TFTP server or an +# external one. (See below for how to enable the TFTP server.) +#dhcp-boot=pxelinux.0 + +# The same as above, but use custom tftp-server instead machine running dnsmasq +#dhcp-boot=pxelinux,server.name,192.168.1.100 + +# Boot for Etherboot gPXE. The idea is to send two different +# filenames, the first loads gPXE, and the second tells gPXE what to +# load. The dhcp-match sets the gpxe tag for requests from gPXE. +#dhcp-match=set:gpxe,175 # gPXE sends a 175 option. +#dhcp-boot=tag:!gpxe,undionly.kpxe +#dhcp-boot=mybootimage + +# Encapsulated options for Etherboot gPXE. All the options are +# encapsulated within option 175 +#dhcp-option=encap:175, 1, 5b # priority code +#dhcp-option=encap:175, 176, 1b # no-proxydhcp +#dhcp-option=encap:175, 177, string # bus-id +#dhcp-option=encap:175, 189, 1b # BIOS drive code +#dhcp-option=encap:175, 190, user # iSCSI username +#dhcp-option=encap:175, 191, pass # iSCSI password + +# Test for the architecture of a netboot client. PXE clients are +# supposed to send their architecture as option 93. (See RFC 4578) +#dhcp-match=peecees, option:client-arch, 0 #x86-32 +#dhcp-match=itanics, option:client-arch, 2 #IA64 +#dhcp-match=hammers, option:client-arch, 6 #x86-64 +#dhcp-match=mactels, option:client-arch, 7 #EFI x86-64 + +# Do real PXE, rather than just booting a single file, this is an +# alternative to dhcp-boot. +#pxe-prompt="What system shall I netboot?" +# or with timeout before first available action is taken: +#pxe-prompt="Press F8 for menu.", 60 + +# Available boot services. for PXE. +#pxe-service=x86PC, "Boot from local disk" + +# Loads /pxelinux.0 from dnsmasq TFTP server. +#pxe-service=x86PC, "Install Linux", pxelinux + +# Loads /pxelinux.0 from TFTP server at 1.2.3.4. +# Beware this fails on old PXE ROMS. +#pxe-service=x86PC, "Install Linux", pxelinux, 1.2.3.4 + +# Use bootserver on network, found my multicast or broadcast. +#pxe-service=x86PC, "Install windows from RIS server", 1 + +# Use bootserver at a known IP address. +#pxe-service=x86PC, "Install windows from RIS server", 1, 1.2.3.4 + +# If you have multicast-FTP available, +# information for that can be passed in a similar way using options 1 +# to 5. See page 19 of +# http://download.intel.com/design/archives/wfm/downloads/pxespec.pdf + + +# Enable dnsmasq's built-in TFTP server +#enable-tftp + +# Set the root directory for files available via FTP. +#tftp-root=/var/ftpd + +# Make the TFTP server more secure: with this set, only files owned by +# the user dnsmasq is running as will be send over the net. +#tftp-secure + +# This option stops dnsmasq from negotiating a larger blocksize for TFTP +# transfers. It will slow things down, but may rescue some broken TFTP +# clients. +#tftp-no-blocksize + +# Set the boot file name only when the "red" tag is set. +#dhcp-boot=tag:red,pxelinux.red-net + +# An example of dhcp-boot with an external TFTP server: the name and IP +# address of the server are given after the filename. +# Can fail with old PXE ROMS. Overridden by --pxe-service. +#dhcp-boot=/var/ftpd/pxelinux.0,boothost,192.168.0.3 + +# If there are multiple external tftp servers having a same name +# (using /etc/hosts) then that name can be specified as the +# tftp_servername (the third option to dhcp-boot) and in that +# case dnsmasq resolves this name and returns the resultant IP +# addresses in round robin fasion. This facility can be used to +# load balance the tftp load among a set of servers. +#dhcp-boot=/var/ftpd/pxelinux.0,boothost,tftp_server_name + +# Set the limit on DHCP leases, the default is 150 +#dhcp-lease-max=150 + +# The DHCP server needs somewhere on disk to keep its lease database. +# This defaults to a sane location, but if you want to change it, use +# the line below. +#dhcp-leasefile=/var/lib/misc/dnsmasq.leases + +# Set the DHCP server to authoritative mode. In this mode it will barge in +# and take over the lease for any client which broadcasts on the network, +# whether it has a record of the lease or not. This avoids long timeouts +# when a machine wakes up on a new network. DO NOT enable this if there's +# the slightest chance that you might end up accidentally configuring a DHCP +# server for your campus/company accidentally. The ISC server uses +# the same option, and this URL provides more information: +# http://www.isc.org/files/auth.html +#dhcp-authoritative + +# Run an executable when a DHCP lease is created or destroyed. +# The arguments sent to the script are "add" or "del", +# then the MAC address, the IP address and finally the hostname +# if there is one. +#dhcp-script=/bin/echo + +# Set the cachesize here. +#cache-size=150 + +# If you want to disable negative caching, uncomment this. +#no-negcache + +# Normally responses which come from /etc/hosts and the DHCP lease +# file have Time-To-Live set as zero, which conventionally means +# do not cache further. If you are happy to trade lower load on the +# server for potentially stale date, you can set a time-to-live (in +# seconds) here. +#local-ttl= + +# If you want dnsmasq to detect attempts by Verisign to send queries +# to unregistered .com and .net hosts to its sitefinder service and +# have dnsmasq instead return the correct NXDOMAIN response, uncomment +# this line. You can add similar lines to do the same for other +# registries which have implemented wildcard A records. +#bogus-nxdomain=64.94.110.11 + +# If you want to fix up DNS results from upstream servers, use the +# alias option. This only works for IPv4. +# This alias makes a result of 1.2.3.4 appear as 5.6.7.8 +#alias=1.2.3.4,5.6.7.8 +# and this maps 1.2.3.x to 5.6.7.x +#alias=1.2.3.0,5.6.7.0,255.255.255.0 +# and this maps 192.168.0.10->192.168.0.40 to 10.0.0.10->10.0.0.40 +#alias=192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0 + +# Change these lines if you want dnsmasq to serve MX records. + +# Return an MX record named "maildomain.com" with target +# servermachine.com and preference 50 +#mx-host=maildomain.com,servermachine.com,50 + +# Set the default target for MX records created using the localmx option. +#mx-target=servermachine.com + +# Return an MX record pointing to the mx-target for all local +# machines. +#localmx + +# Return an MX record pointing to itself for all local machines. +#selfmx + +# Change the following lines if you want dnsmasq to serve SRV +# records. These are useful if you want to serve ldap requests for +# Active Directory and other windows-originated DNS requests. +# See RFC 2782. +# You may add multiple srv-host lines. +# The fields are ,,,, +# If the domain part if missing from the name (so that is just has the +# service and protocol sections) then the domain given by the domain= +# config option is used. (Note that expand-hosts does not need to be +# set for this to work.) + +# A SRV record sending LDAP for the example.com domain to +# ldapserver.example.com port 389 +#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389 + +# A SRV record sending LDAP for the example.com domain to +# ldapserver.example.com port 389 (using domain=) +#domain=example.com +#srv-host=_ldap._tcp,ldapserver.example.com,389 + +# Two SRV records for LDAP, each with different priorities +#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,1 +#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,2 + +# A SRV record indicating that there is no LDAP server for the domain +# example.com +#srv-host=_ldap._tcp.example.com + +# The following line shows how to make dnsmasq serve an arbitrary PTR +# record. This is useful for DNS-SD. (Note that the +# domain-name expansion done for SRV records _does_not +# occur for PTR records.) +#ptr-record=_http._tcp.dns-sd-services,"New Employee Page._http._tcp.dns-sd-services" + +# Change the following lines to enable dnsmasq to serve TXT records. +# These are used for things like SPF and zeroconf. (Note that the +# domain-name expansion done for SRV records _does_not +# occur for TXT records.) + +#Example SPF. +#txt-record=example.com,"v=spf1 a -all" + +#Example zeroconf +#txt-record=_http._tcp.example.com,name=value,paper=A4 + +# Provide an alias for a "local" DNS name. Note that this _only_ works +# for targets which are names from DHCP or /etc/hosts. Give host +# "bert" another name, bertrand +#cname=bertand,bert + +# For debugging purposes, log each DNS query as it passes through +# dnsmasq. +#log-queries + +# Log lots of extra information about DHCP transactions. +#log-dhcp + +# Include another lot of configuration options. +#conf-file=/etc/dnsmasq.more.conf +#conf-dir=/etc/dnsmasq.d + +# Include all the files in a directory except those ending in .bak +#conf-dir=/etc/dnsmasq.d,.bak + +# Include all files in a directory which end in .conf +#conf-dir=/etc/dnsmasq.d/*.conf diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index d9e448a9..defe9d24 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -260,6 +260,19 @@ setStaticIPv4(){ fi } ++versionCheckDNSmasq(){ + # Check if /etc/dnsmasq.conf is from pihole. If so replace with an original and install new in .d directory + dnsFile="/etc/dnsmasq.conf" + dnsSearch="addn-hosts=/etc/pihole/gravity.list" + + if grep -q $dnsSearch $dnsFile; then + $SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig + $SUDO cp /etc/.pihole/advanced/dnsmasq.conf.original /etc/dnsmasq.conf + fi + $SUDO cp /etc/.pihole/advanced/01-pihole.conf /etc/dnsmasq.d/01-pihole.conf + $SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.d/01-pihole.conf +} + installScripts(){ $SUDO echo ":::" $SUDO echo -n "::: Installing scripts..." @@ -276,11 +289,9 @@ installScripts(){ installConfigs(){ $SUDO echo ":::" $SUDO echo -n "::: Installing configs..." - $SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig + versionCheckDNSmasq $SUDO mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig - $SUDO cp /etc/.pihole/advanced/dnsmasq.conf /etc/dnsmasq.conf $SUDO cp /etc/.pihole/advanced/lighttpd.conf /etc/lighttpd/lighttpd.conf - $SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.conf $SUDO echo " done." } From abef758ff6c99c7856add2fe333935d688e1394a Mon Sep 17 00:00:00 2001 From: Chad Howell Date: Mon, 25 Jan 2016 00:05:17 -0500 Subject: [PATCH 028/100] Get ready for user selected DNSs Prep for using sed to insert user selected DNSs into 01-pihole.conf. Selections will come from dialog during install script containing the following choices: Google, DynDNS, and eventually 2 custom DNS servers. --- advanced/01-pihole.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/advanced/01-pihole.conf b/advanced/01-pihole.conf index 25f52a57..d0dcd970 100644 --- a/advanced/01-pihole.conf +++ b/advanced/01-pihole.conf @@ -20,8 +20,8 @@ no-resolv # Add other name servers here, with domain specs if they are for # non-public domains. -server=8.8.8.8 -server=8.8.4.4 +server=@DNS1@ +server=@DNS2@ # If you want dnsmasq to listen for DHCP and DNS requests only on # specified interfaces (and the loopback) give the name of the From 6cf6e16d22f499e155dfe80887f981ea350335d5 Mon Sep 17 00:00:00 2001 From: Chad Howell Date: Mon, 25 Jan 2016 00:11:00 -0500 Subject: [PATCH 029/100] Add ability to choose upstream DNS servers Give the user the ability to choose between Google and DynDNS upstream servers. Then insert the chosen DNS servers in to /etc/dnsmasq.d/01-pihole.conf. Todo: extend choices to include manually entered DNS servers. --- automated install/basic-install.sh | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index defe9d24..a165cb0e 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -260,6 +260,26 @@ setStaticIPv4(){ fi } +setDNS(){ + DNSChoseCmd=(whiptail --separate-output --radiolist "Select DNS Servers" $r $c 2) + DNSChooseOptions=(Google "Use Google's DNS Servers" on + DynDNS "Use DynDNS's DNS Servers" off) + DNSchoices=$("${DNSChoseCmd[@]}" "${DNSChooseOptions[@]}" 2>&1 >/dev/tty) + + case $DNSchoices in + Google) + echo "Google selected." + piholeDNS1="8.8.8.8" + piholeDNS2="8.8.4.4" + ;; + DynDNS) + echo "DynDNS selected." + piholeDNS1="208.67.222.222" + piholeDNS2="208.67.220.220" + ;; + esac +} + +versionCheckDNSmasq(){ # Check if /etc/dnsmasq.conf is from pihole. If so replace with an original and install new in .d directory dnsFile="/etc/dnsmasq.conf" @@ -271,6 +291,8 @@ setStaticIPv4(){ fi $SUDO cp /etc/.pihole/advanced/01-pihole.conf /etc/dnsmasq.d/01-pihole.conf $SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.d/01-pihole.conf + $SUDO sed -i "s/@DNS1@/$piholeDNS1/" /etc/dnsmasq.d/01-pihole.conf + $SUDO sed -i "s/@DNS2@/$piholeDNS2/" /etc/dnsmasq.d/01-pihole.conf } installScripts(){ @@ -484,7 +506,8 @@ chooseInterface # Let the user decide if they want to block ads over IPv4 and/or IPv6 use4andor6 - +# Decide what upstream DNS Servers to use +setDNS # Install and log everything to a file installPihole | tee $tmpLog From 0c444e6f2b058ffe39b884f56ec3976a595e3194 Mon Sep 17 00:00:00 2001 From: Chad Howell Date: Mon, 25 Jan 2016 00:12:51 -0500 Subject: [PATCH 030/100] Fix backup to use new 01-pihole.conf location Fix backup to use new 01-pihole.conf location --- automated install/basic-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index a165cb0e..4dfd593f 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -90,7 +90,7 @@ backupLegacyPihole(){ echo "Original Pi-hole detected. Initiating sub space transport" $SUDO mkdir -p /etc/pihole/original/ $SUDO mv /etc/dnsmasq.d/adList.conf /etc/pihole/original/adList.conf.$(date "+%Y-%m-%d") - $SUDO mv /etc/dnsmasq.conf /etc/pihole/original/dnsmasq.conf.$(date "+%Y-%m-%d") + $SUDO mv /etc/dnsmasq.d/01-pihole.conf /etc/pihole/original/dnsmasq.d/01-pihole.conf.$(date "+%Y-%m-%d") $SUDO mv /etc/resolv.conf /etc/pihole/original/resolv.conf.$(date "+%Y-%m-%d") $SUDO mv /etc/lighttpd/lighttpd.conf /etc/pihole/original/lighttpd.conf.$(date "+%Y-%m-%d") $SUDO mv /var/www/pihole/index.html /etc/pihole/original/index.html.$(date "+%Y-%m-%d") From 940480effefefd6bd8ec5423903afbc1ba3d82dd Mon Sep 17 00:00:00 2001 From: Chad Howell Date: Mon, 25 Jan 2016 00:57:36 -0500 Subject: [PATCH 031/100] Revert "Fix backup to use new 01-pihole.conf location" This reverts commit 0c444e6f2b058ffe39b884f56ec3976a595e3194. --- automated install/basic-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 4dfd593f..a165cb0e 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -90,7 +90,7 @@ backupLegacyPihole(){ echo "Original Pi-hole detected. Initiating sub space transport" $SUDO mkdir -p /etc/pihole/original/ $SUDO mv /etc/dnsmasq.d/adList.conf /etc/pihole/original/adList.conf.$(date "+%Y-%m-%d") - $SUDO mv /etc/dnsmasq.d/01-pihole.conf /etc/pihole/original/dnsmasq.d/01-pihole.conf.$(date "+%Y-%m-%d") + $SUDO mv /etc/dnsmasq.conf /etc/pihole/original/dnsmasq.conf.$(date "+%Y-%m-%d") $SUDO mv /etc/resolv.conf /etc/pihole/original/resolv.conf.$(date "+%Y-%m-%d") $SUDO mv /etc/lighttpd/lighttpd.conf /etc/pihole/original/lighttpd.conf.$(date "+%Y-%m-%d") $SUDO mv /var/www/pihole/index.html /etc/pihole/original/index.html.$(date "+%Y-%m-%d") From a21948d2c69e4f929033affedc83d7e9d2926796 Mon Sep 17 00:00:00 2001 From: Chad Howell Date: Mon, 25 Jan 2016 01:09:45 -0500 Subject: [PATCH 032/100] Typo fix Typo fix --- automated install/basic-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index a165cb0e..4a479749 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -280,7 +280,7 @@ setDNS(){ esac } -+versionCheckDNSmasq(){ +versionCheckDNSmasq(){ # Check if /etc/dnsmasq.conf is from pihole. If so replace with an original and install new in .d directory dnsFile="/etc/dnsmasq.conf" dnsSearch="addn-hosts=/etc/pihole/gravity.list" From ac373545d02771504f7542430956f2de10a85212 Mon Sep 17 00:00:00 2001 From: Chad Howell Date: Mon, 25 Jan 2016 01:27:10 -0500 Subject: [PATCH 033/100] versionCheckDNSmasq() fixups versionCheckDNSmasq() fixups per dschaper's suggestions. --- automated install/basic-install.sh | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 4a479749..c05fba94 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -282,12 +282,22 @@ setDNS(){ versionCheckDNSmasq(){ # Check if /etc/dnsmasq.conf is from pihole. If so replace with an original and install new in .d directory - dnsFile="/etc/dnsmasq.conf" + dnsFile1="/etc/dnsmasq.conf" + dnsFile2="/etc/dnsmasq.conf" dnsSearch="addn-hosts=/etc/pihole/gravity.list" - if grep -q $dnsSearch $dnsFile; then - $SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig - $SUDO cp /etc/.pihole/advanced/dnsmasq.conf.original /etc/dnsmasq.conf + # Check dnsmasq.conf for pihole magic + if grep -q $dnsSearch $dnsFile1; then + # If true, Check dnsmasq.conf.orig for pihole magic + if grep -q $dnsSearch $dnsFile1; then + # If true, use advanced/dnsmasq.conf.original + $SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig + $SUDO cp /etc/.pihole/advanced/dnsmasq.conf.original /etc/dnsmasq.conf + else + # If false, mv original file back + $SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig + fi + # If false, This is a fresh install fi $SUDO cp /etc/.pihole/advanced/01-pihole.conf /etc/dnsmasq.d/01-pihole.conf $SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.d/01-pihole.conf From d74c8261aaba7d058832de0a931a59c68499a9ab Mon Sep 17 00:00:00 2001 From: Chad Howell Date: Mon, 25 Jan 2016 01:38:41 -0500 Subject: [PATCH 034/100] dnsFile2="/etc/dnsmasq.conf.orig" added .orig --- automated install/basic-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index c05fba94..9eef79ec 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -283,7 +283,7 @@ setDNS(){ versionCheckDNSmasq(){ # Check if /etc/dnsmasq.conf is from pihole. If so replace with an original and install new in .d directory dnsFile1="/etc/dnsmasq.conf" - dnsFile2="/etc/dnsmasq.conf" + dnsFile2="/etc/dnsmasq.conf.orig" dnsSearch="addn-hosts=/etc/pihole/gravity.list" # Check dnsmasq.conf for pihole magic From 01d7fc0ac9f68d9c6172d7e860288fcf7e743662 Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Mon, 25 Jan 2016 10:07:12 +0000 Subject: [PATCH 035/100] Removed apt-get update/upgrade, instead checking for updates availible and advising user to update/upgrade after installation of pi-hole. Addresses issue #218 --- automated install/basic-install.sh | 35 ++++++++++++++++-------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index d9e448a9..09fe2eb3 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -293,24 +293,27 @@ stopServices(){ } checkForDependencies(){ - echo ":::" - #Check to see if apt-get update has already been run today - timestamp=$(stat -c %Y /var/cache/apt/) - timestampAsDate=$(date -d @$timestamp "+%b %e") + + #Running apt-get update/upgrade with minimal output can cause some issues with + #requiring user input (e.g password for phpmyadmin see #218) + #We'll change the logic up here, to check to see if there are any updates availible and + # if so, advise the user to run apt-get update/upgrade at their own discretion + today=$(date "+%b %e") - if [ ! "$today" == "$timestampAsDate" ]; then - #update package lists - echo -n "::: Updating package list before install...." - $SUDO apt-get -qq update > /dev/null & spinner $! - echo " done!" - echo -n "::: Upgrading installed apt-get packages...." - $SUDO apt-get -y -qq upgrade > /dev/null & spinner $! - echo " done!" - else - echo "::: Apt-get update already run today, any more would be overkill..." - fi - + echo -n "::: Checking apt-get for upgraded packages...." + updatesToInstall=$(sudo apt-get -s -o Debug::NoLocking=true upgrade | grep -c ^Inst) & spinner $! + echo " done!" + + if [ updatesToInstall > 0 ]; then + echo "::: There are $updatesToInstall updates availible for your pi!" + echo "::: Please consider running 'sudo apt-get update', followed by 'sudo apt-get upgrade'" + echo "::: after pi-hole has finished installing. + echo ":::" + echo "::: Continuing with pi-hole installation..." + else + echo "::: Your pi is up to date! Continuing with pi-hole installation..." + fi echo ":::" echo "::: Checking dependencies:" From 32389e4ab80079e5ee49606503f0d653d82ffefe Mon Sep 17 00:00:00 2001 From: Dan Schaper Date: Mon, 25 Jan 2016 02:27:44 -0800 Subject: [PATCH 036/100] Terminate string with missing quote --- automated install/basic-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 09fe2eb3..06fffd8e 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -308,7 +308,7 @@ checkForDependencies(){ if [ updatesToInstall > 0 ]; then echo "::: There are $updatesToInstall updates availible for your pi!" echo "::: Please consider running 'sudo apt-get update', followed by 'sudo apt-get upgrade'" - echo "::: after pi-hole has finished installing. + echo "::: after pi-hole has finished installing." echo ":::" echo "::: Continuing with pi-hole installation..." else From e99be28a73c1ba49d377ce6cace15fb5a1451b7e Mon Sep 17 00:00:00 2001 From: Dan Schaper Date: Mon, 25 Jan 2016 02:31:03 -0800 Subject: [PATCH 037/100] Variable missing $ --- automated install/basic-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 06fffd8e..de9cfed3 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -305,7 +305,7 @@ checkForDependencies(){ updatesToInstall=$(sudo apt-get -s -o Debug::NoLocking=true upgrade | grep -c ^Inst) & spinner $! echo " done!" - if [ updatesToInstall > 0 ]; then + if [ $updatesToInstall > 0 ]; then echo "::: There are $updatesToInstall updates availible for your pi!" echo "::: Please consider running 'sudo apt-get update', followed by 'sudo apt-get upgrade'" echo "::: after pi-hole has finished installing." From 4cedca342748df3dd5363a88cb003e8c08c7a762 Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Mon, 25 Jan 2016 12:47:03 +0000 Subject: [PATCH 038/100] add in a prompt to give users the option to quit installation or continue --- automated install/basic-install.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index de9cfed3..0feb5e8d 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -310,7 +310,16 @@ checkForDependencies(){ echo "::: Please consider running 'sudo apt-get update', followed by 'sudo apt-get upgrade'" echo "::: after pi-hole has finished installing." echo ":::" - echo "::: Continuing with pi-hole installation..." + #add in a prompt to give users the option to quit installation or continue + echo -n "::: Would you like to continue with the pi-hole installation? (Y/n):" + read answer + + case "$answer" in + [yY][eE][sS]|[yY] ) echo "::: Continuing!;; + * ) echo "::: Quitting install, please run 'curl -L install.pi-hole.net | bash' after updating packages!" + exit 0;; + esac + else echo "::: Your pi is up to date! Continuing with pi-hole installation..." fi From 354a42dd00502735238920ddfdae9e8af9b11b41 Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Mon, 25 Jan 2016 12:49:04 +0000 Subject: [PATCH 039/100] close quotes on line 318!!! --- automated install/basic-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 0feb5e8d..d96a4416 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -315,7 +315,7 @@ checkForDependencies(){ read answer case "$answer" in - [yY][eE][sS]|[yY] ) echo "::: Continuing!;; + [yY][eE][sS]|[yY] ) echo "::: Continuing!";; * ) echo "::: Quitting install, please run 'curl -L install.pi-hole.net | bash' after updating packages!" exit 0;; esac From 74ea597bd811a6dd01b17af8489012113243222a Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Mon, 25 Jan 2016 15:52:22 +0000 Subject: [PATCH 040/100] Cosmetic enhancement. Add the domain 'Pi-Hole.IsWorking.OK' to the top of the domain list to return a friendlier looking domain when pinging a blocked host! --- gravity.sh | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/gravity.sh b/gravity.sh index 255bb264..c33eb05c 100755 --- a/gravity.sh +++ b/gravity.sh @@ -55,7 +55,8 @@ sources=('https://adaway.org/hosts.txt' 'http://www.malwaredomainlist.com/hostslist/hosts.txt' 'http://pgl.yoyo.org/adservers/serverlist.php?' 'http://someonewhocares.org/hosts/hosts' -'http://winhelp2002.mvps.org/hosts.txt') +'http://winhelp2002.mvps.org/hosts.txt' + 'http://mirror1.malwaredomains.com/files/justdomains') # Variables for various stages of downloading and formatting the list basename=pihole @@ -256,10 +257,15 @@ function gravity_hostFormat() { echo "::: Formatting domains into a HOSTS file..." # If there is a value in the $piholeIPv6, then IPv6 will be used, so the awk command modified to create a line for both protocols if [[ -n $piholeIPv6 ]];then - cat $piholeDir/$eventHorizon | awk -v ipv4addr="$piholeIP" -v ipv6addr="$piholeIPv6" '{sub(/\r$/,""); print ipv4addr" "$0"\n"ipv6addr" "$0}' > $piholeDir/$accretionDisc + #Add dummy domain Pi-Hole.IsWorking.OK to the top of gravity.list to make ping result return a friendlier looking domain! + echo -e "$piholeIP Pi-Hole.IsWorking.OK \n$piholeIPv6 Pi-Hole.IsWorking.OK" > $piholeDir/$accretionDisc + cat $piholeDir/$eventHorizon | awk -v ipv4addr="$piholeIP" -v ipv6addr="$piholeIPv6" '{sub(/\r$/,""); print ipv4addr" "$0"\n"ipv6addr" "$0}' >> $piholeDir/$accretionDisc + else - # Otherwise, just create gravity.list as normal using IPv4 - cat $piholeDir/$eventHorizon | awk -v ipv4addr="$piholeIP" '{sub(/\r$/,""); print ipv4addr" "$0}' > $piholeDir/$accretionDisc + # Otherwise, just create gravity.list as normal using IPv4 + #Add dummy domain Pi-Hole.IsWorking.OK to the top of gravity.list to make ping result return a friendlier looking domain! + echo -e "$piholeIP Pi-Hole.IsWorking.OK" > $piholeDir/$accretionDisc + cat $piholeDir/$eventHorizon | awk -v ipv4addr="$piholeIP" '{sub(/\r$/,""); print ipv4addr" "$0}' >> $piholeDir/$accretionDisc fi # Copy the file over as /etc/pihole/gravity.list so dnsmasq can use it cp $piholeDir/$accretionDisc $adList From e87443b3e4c4ec10de1bed3425e93441d5109c6c Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Mon, 25 Jan 2016 15:53:49 +0000 Subject: [PATCH 041/100] add 'http://mirror1.malwaredomains.com/files/justdomains' to list of ad-list sources, can be removed if it causes problems --- gravity.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gravity.sh b/gravity.sh index c33eb05c..5097e050 100755 --- a/gravity.sh +++ b/gravity.sh @@ -56,7 +56,7 @@ sources=('https://adaway.org/hosts.txt' 'http://pgl.yoyo.org/adservers/serverlist.php?' 'http://someonewhocares.org/hosts/hosts' 'http://winhelp2002.mvps.org/hosts.txt' - 'http://mirror1.malwaredomains.com/files/justdomains') +'http://mirror1.malwaredomains.com/files/justdomains') # Variables for various stages of downloading and formatting the list basename=pihole From 2b99fa81f337bb166f04f33f75a4e2aa2b7f665e Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Mon, 25 Jan 2016 16:08:48 +0000 Subject: [PATCH 042/100] Tidy up output lines around new code --- automated install/basic-install.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index d96a4416..a8676721 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -300,11 +300,12 @@ checkForDependencies(){ # if so, advise the user to run apt-get update/upgrade at their own discretion today=$(date "+%b %e") - + echo ":::" echo -n "::: Checking apt-get for upgraded packages...." updatesToInstall=$(sudo apt-get -s -o Debug::NoLocking=true upgrade | grep -c ^Inst) & spinner $! echo " done!" + echo ":::" if [ $updatesToInstall > 0 ]; then echo "::: There are $updatesToInstall updates availible for your pi!" echo "::: Please consider running 'sudo apt-get update', followed by 'sudo apt-get upgrade'" From 80bec9c5cfa72ef28c4d7732ad4cb487189045ec Mon Sep 17 00:00:00 2001 From: PromoFaux Date: Mon, 25 Jan 2016 16:28:26 +0000 Subject: [PATCH 043/100] Delete install Not sure how this got in here... :) --- automated install/install | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 automated install/install diff --git a/automated install/install b/automated install/install deleted file mode 100644 index e69de29b..00000000 From 556799428ce6ed9ef41f2429c7bdd2470757f431 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Tue, 26 Jan 2016 20:22:29 +0000 Subject: [PATCH 044/100] Contains default adlists. --- adlists.default | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 adlists.default diff --git a/adlists.default b/adlists.default new file mode 100644 index 00000000..d603c5f0 --- /dev/null +++ b/adlists.default @@ -0,0 +1,8 @@ +https://adaway.org/hosts.txt +http://adblock.gjtech.net/?format=unix-hosts +http://hosts-file.net/ad_servers.txt +http://www.malwaredomainlist.com/hostslist/hosts.txt +http://pgl.yoyo.org/adservers/serverlist.php? +http://someonewhocares.org/hosts/hosts +http://winhelp2002.mvps.org/hosts.txt +http://mirror1.malwaredomains.com/files/justdomains \ No newline at end of file From 352ebc3193d17ae4e075eec7f71bfe909ab8fa06 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Tue, 26 Jan 2016 20:26:09 +0000 Subject: [PATCH 045/100] outsource list of adlists to a file in /etc/pihole/. --- gravity.sh | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/gravity.sh b/gravity.sh index 5097e050..5fbcc82f 100755 --- a/gravity.sh +++ b/gravity.sh @@ -29,6 +29,9 @@ fi piholeIPfile=/tmp/piholeIP piholeIPv6file=/etc/pihole/.useIPv6 +adListFile=/etc/pihole/adlists.list +adListDefault=/etc/pihole/adlists.default + if [[ -f $piholeIPfile ]];then # If the file exists, it means it was exported from the installation script and we should use that value instead of detecting it in this script piholeIP=$(cat $piholeIPfile) @@ -45,18 +48,8 @@ if [[ -f $piholeIPv6file ]];then piholeIPv6=$(ip -6 route get 2001:4860:4860::8888 | awk -F " " '{ for(i=1;i<=NF;i++) if ($i == "src") print $(i+1) }') fi -# Ad-list sources--one per line in single quotes -# The mahakala source is commented out due to many users having issues with it blocking legitimate domains. -# Uncomment at your own risk -sources=('https://adaway.org/hosts.txt' -'http://adblock.gjtech.net/?format=unix-hosts' -#'http://adblock.mahakala.is/' -'http://hosts-file.net/ad_servers.txt' -'http://www.malwaredomainlist.com/hostslist/hosts.txt' -'http://pgl.yoyo.org/adservers/serverlist.php?' -'http://someonewhocares.org/hosts/hosts' -'http://winhelp2002.mvps.org/hosts.txt' -'http://mirror1.malwaredomains.com/files/justdomains') + + # Variables for various stages of downloading and formatting the list basename=pihole @@ -97,7 +90,26 @@ spinner(){ ########################### # collapse - begin formation of pihole function gravity_collapse() { - echo -n "::: Neutrino emissions detected..." + echo "::: Neutrino emissions detected..." + echo ":::" + #Decide if we're using a custom ad block list, or defaults. + if [ -f $adListFile ]; then + #custom file found, use this instead of default + echo -n "::: Custom adList file detected. Reading..." + sources=() + while read -a line; do + sources+=($line) + done < $adListFile + echo " done!" + else + #no custom file found, use defaults! + echo -n "::: No custom adlist file detected, reading from default file..." + sources=() + while read -a line; do + sources+=($line) + done < $adListDefault + echo " done!" + fi # Create the pihole resource directory if it doesn't exist. Future files will be stored here if [[ -d $piholeDir ]];then From ef99fe2d18f4dbc1812af4b22de47527a2346752 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Tue, 26 Jan 2016 20:33:49 +0000 Subject: [PATCH 046/100] Add line to copy default ad list into /etc/pihole --- automated install/basic-install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index a8676721..dfe279a9 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -434,6 +434,7 @@ runGravity(){ $SUDO echo "::: Preparing to run gravity.sh to refresh hosts..." if ls /etc/pihole/list* 1> /dev/null 2>&1; then echo "::: Cleaning up previous install (preserving whitelist/blacklist)" + $SUDO cp -o /etc/.pihole/adlists.default /etc/pihole/adlists.default $SUDO rm /etc/pihole/list.* fi #Don't run as SUDO, this was causing issues From 4a61b80dd6a43f9a3837eb26cf5e64f1c37e4019 Mon Sep 17 00:00:00 2001 From: PromoFaux Date: Tue, 26 Jan 2016 23:14:38 +0000 Subject: [PATCH 047/100] Update adlists.default Add new line to end of file.. Github was complaining --- adlists.default | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adlists.default b/adlists.default index d603c5f0..dd391357 100644 --- a/adlists.default +++ b/adlists.default @@ -5,4 +5,4 @@ http://www.malwaredomainlist.com/hostslist/hosts.txt http://pgl.yoyo.org/adservers/serverlist.php? http://someonewhocares.org/hosts/hosts http://winhelp2002.mvps.org/hosts.txt -http://mirror1.malwaredomains.com/files/justdomains \ No newline at end of file +http://mirror1.malwaredomains.com/files/justdomains From ae336da7a154133e2c33222c857afb6bf96a1c00 Mon Sep 17 00:00:00 2001 From: Chad Howell Date: Wed, 27 Jan 2016 01:11:38 -0500 Subject: [PATCH 048/100] Fix formatting, use consistent style, add comments Fix formatting, use consistent style, add comments --- automated install/basic-install.sh | 177 +++++++++++++++-------------- 1 file changed, 90 insertions(+), 87 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index d9e448a9..0b78d850 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -59,33 +59,32 @@ else fi fi +# Is this if statement used anymore? if [ -f "/etc/dnsmasq.d/01-pihole.conf" ]; then - #Likely an existing install + # Likely an existing install upgrade=true else - upgrade=false + upgrade=false fi ####### FUNCTIONS ########## ###All credit for the below function goes to http://fitnr.com/showing-a-bash-spinner.html -spinner(){ - local pid=$1 +spinner() { + local pid=$1 - spin='-\|/' - i=0 - while $SUDO kill -0 $pid 2>/dev/null - do - i=$(( (i+1) %4 )) - printf "\b${spin:$i:1}" - sleep .1 - done - printf "\b" + spin='-\|/' + i=0 + while $SUDO kill -0 $pid 2>/dev/null + do + i=$(( (i+1) %4 )) + printf "\b${spin:$i:1}" + sleep .1 + done + printf "\b" } - - - -backupLegacyPihole(){ +backupLegacyPihole() { + # This function detects and backups the pi-hole v1 files. It will not do anything to the current version files. if [[ -f /etc/dnsmasq.d/adList.conf ]];then echo "Original Pi-hole detected. Initiating sub space transport" $SUDO mkdir -p /etc/pihole/original/ @@ -100,7 +99,7 @@ backupLegacyPihole(){ fi } -welcomeDialogs(){ +welcomeDialogs() { # 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 @@ -112,8 +111,8 @@ welcomeDialogs(){ In the next section, you can choose to use your current network settings (DHCP) or to manually edit them." $r $c } -chooseInterface(){ -# Turn the available interfaces into an array so it can be used with a whiptail dialog +chooseInterface() { + # Turn the available interfaces into an array so it can be used with a whiptail dialog interfacesArray=() firstloop=1 @@ -141,7 +140,7 @@ chooseInterface(){ } -use4andor6(){ +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 @@ -179,14 +178,15 @@ use4andor6(){ fi } -useIPv6dialog(){ +useIPv6dialog() { + # Show the IPv6 address used for blocking piholeIPv6=$(ip -6 route get 2001:4860:4860::8888 | awk -F " " '{ for(i=1;i<=NF;i++) if ($i == "src") print $(i+1) }') whiptail --msgbox --backtitle "IPv6..." --title "IPv6 Supported" "$piholeIPv6 will be used to block ads." $r $c $SUDO mkdir -p /etc/pihole/ $SUDO touch /etc/pihole/.useIPv6 } -getStaticIPv4Settings(){ +getStaticIPv4Settings() { # Ask if the user wants 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? IP address: $IPv4addr @@ -241,15 +241,16 @@ getStaticIPv4Settings(){ fi } -setDHCPCD(){ - #Append these lines to dhcpcd.conf to enable a static IP +setDHCPCD() { + # Append these lines to dhcpcd.conf to enable a static IP echo "interface $piholeInterface static ip_address=$IPv4addr static routers=$IPv4gw static domain_name_servers=$IPv4gw" | $SUDO tee -a $dhcpcdFile >/dev/null } -setStaticIPv4(){ +setStaticIPv4() { + # Tries to set the IPv4 address if grep -q $IPv4addr $dhcpcdFile; then # address already set, noop : @@ -260,7 +261,8 @@ setStaticIPv4(){ fi } -installScripts(){ +installScripts() { + # Install the scripts from /etc/.pihole to their various locations $SUDO echo ":::" $SUDO echo -n "::: Installing scripts..." $SUDO cp /etc/.pihole/gravity.sh /usr/local/bin/gravity.sh @@ -273,7 +275,8 @@ installScripts(){ $SUDO echo " done." } -installConfigs(){ +installConfigs() { + # Install the configs from /etc/.pihole to their various locations $SUDO echo ":::" $SUDO echo -n "::: Installing configs..." $SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig @@ -284,7 +287,8 @@ installConfigs(){ $SUDO echo " done." } -stopServices(){ +stopServices() { + # Stop dnsmasq and lighttpd $SUDO echo ":::" $SUDO echo -n "::: Stopping services..." $SUDO service dnsmasq stop & spinner $! || true @@ -292,14 +296,14 @@ stopServices(){ $SUDO echo " done." } -checkForDependencies(){ - echo ":::" - #Check to see if apt-get update has already been run today - timestamp=$(stat -c %Y /var/cache/apt/) - timestampAsDate=$(date -d @$timestamp "+%b %e") - today=$(date "+%b %e") - - if [ ! "$today" == "$timestampAsDate" ]; then +checkForDependencies() { + echo ":::" + #Check to see if apt-get update has already been run today + timestamp=$(stat -c %Y /var/cache/apt/) + timestampAsDate=$(date -d @$timestamp "+%b %e") + today=$(date "+%b %e") + + if [ ! "$today" == "$timestampAsDate" ]; then #update package lists echo -n "::: Updating package list before install...." $SUDO apt-get -qq update > /dev/null & spinner $! @@ -308,64 +312,59 @@ checkForDependencies(){ $SUDO apt-get -y -qq upgrade > /dev/null & spinner $! echo " done!" else - echo "::: Apt-get update already run today, any more would be overkill..." + echo "::: Apt-get update already run today, any more would be overkill..." fi - - + echo ":::" echo "::: Checking dependencies:" - dependencies=( dnsutils bc toilet figlet dnsmasq lighttpd php5-common php5-cgi php5 git curl unzip wget ) - for i in "${dependencies[@]}" - do - : - echo -n "::: Checking for $i..." - if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then - echo -n " Not found! Installing...." - $SUDO apt-get -y -qq install $i > /dev/null & spinner $! - echo " done!" - else - echo " already installed!" - fi - done + dependencies=( dnsutils bc toilet figlet dnsmasq lighttpd php5-common php5-cgi php5 git curl unzip wget ) + for i in "${dependencies[@]}" + do + : + echo -n "::: Checking for $i..." + if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then + echo -n " Not found! Installing...." + $SUDO apt-get -y -qq install $i > /dev/null & spinner $! + echo " done!" + else + echo " already installed!" + fi + done } -getGitFiles(){ - - echo ":::" +getGitFiles() { + # Setup git repos for base files and web admin + echo ":::" echo "::: Checking for existing base files..." if is_repo $piholeFilesDir; then - make_repo $piholeFilesDir $piholeGitUrl - else - update_repo $piholeFilesDir - fi - - echo ":::" - echo "::: Checking for existing web interface..." - if is_repo $webInterfaceDir; then - make_repo $webInterfaceDir $webInterfaceGitUrl - else - update_repo $webInterfaceDir - - fi + make_repo $piholeFilesDir $piholeGitUrl + else + update_repo $piholeFilesDir + fi + echo ":::" + echo "::: Checking for existing web interface..." + if is_repo $webInterfaceDir; then + make_repo $webInterfaceDir $webInterfaceGitUrl + else + update_repo $webInterfaceDir + fi } is_repo() { - echo -n "::: Checking $1 is a repo..." - # if the directory does not have a .git folder - # it is not a repo + # If the directory does not have a .git folder it is not a repo + echo -n "::: Checking $1 is a repo..." if [ -d "$1/.git" ]; then echo " OK!" return 1 fi echo " not found!!" return 0 - } make_repo() { - # remove the non-repod interface and clone the interface + # Remove the non-repod interface and clone the interface echo -n "::: Cloning $2 into $1..." $SUDO rm -rf $1 $SUDO git clone -q "$2" "$1" > /dev/null & spinner $! @@ -373,7 +372,7 @@ make_repo() { } update_repo() { - # pull the latest commits + # Pull the latest commits echo -n "::: Updating repo in $1..." cd "$1" $SUDO git pull -q > /dev/null & spinner $! @@ -381,7 +380,8 @@ update_repo() { } -CreateLogFile(){ +CreateLogFile() { + # Create logfiles if necessary echo ":::" $SUDO echo -n "::: Creating log file and changing owner to dnsmasq..." if [ ! -f /var/log/pihole.log ]; then @@ -391,11 +391,11 @@ CreateLogFile(){ $SUDO echo " done!" else $SUDO echo " already exists!" - fi - + fi } -installPiholeWeb(){ +installPiholeWeb() { + # Install the web interface $SUDO echo ":::" $SUDO echo -n "::: Installing pihole custom index page..." if [ -d "/var/www/html/pihole" ]; then @@ -406,17 +406,18 @@ installPiholeWeb(){ $SUDO cp /etc/.pihole/advanced/index.html /var/www/html/pihole/index.html $SUDO echo " done!" fi - } -installCron(){ +installCron() { + # Install the cron job $SUDO echo ":::" $SUDO echo -n "::: Installing latest Cron script..." $SUDO cp /etc/.pihole/advanced/pihole.cron /etc/cron.d/pihole $SUDO echo " done!" } -runGravity(){ +runGravity() { + # Rub gravity.sh to build blacklists $SUDO echo ":::" $SUDO echo "::: Preparing to run gravity.sh to refresh hosts..." if ls /etc/pihole/list* 1> /dev/null 2>&1; then @@ -426,13 +427,13 @@ runGravity(){ #Don't run as SUDO, this was causing issues echo "::: Running gravity.sh" echo ":::" - + /usr/local/bin/gravity.sh - } -installPihole(){ +installPihole() { + # Install base files and web interface checkForDependencies # done stopServices @@ -451,8 +452,9 @@ installPihole(){ runGravity } -displayFinalMessage(){ -whiptail --msgbox --backtitle "Make it so." --title "Installation Complete!" "Configure your devices to use the Pi-hole as their DNS server using: +displayFinalMessage() { + # Final completion message to user + whiptail --msgbox --backtitle "Make it so." --title "Installation Complete!" "Configure your devices to use the Pi-hole as their DNS server using: $IPv4addr $piholeIPv6 @@ -483,5 +485,6 @@ $SUDO mv $tmpLog $instalLogLoc displayFinalMessage +# Start services $SUDO service dnsmasq start $SUDO service lighttpd start From b1bd56cd517898d6bab51abbcb9adc72559500b2 Mon Sep 17 00:00:00 2001 From: PromoFaux Date: Wed, 27 Jan 2016 09:47:28 +0000 Subject: [PATCH 049/100] Update basic-install.sh --- automated install/basic-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index dfe279a9..29d0cec6 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -434,7 +434,7 @@ runGravity(){ $SUDO echo "::: Preparing to run gravity.sh to refresh hosts..." if ls /etc/pihole/list* 1> /dev/null 2>&1; then echo "::: Cleaning up previous install (preserving whitelist/blacklist)" - $SUDO cp -o /etc/.pihole/adlists.default /etc/pihole/adlists.default + $SUDO cp /etc/.pihole/adlists.default /etc/pihole/adlists.default $SUDO rm /etc/pihole/list.* fi #Don't run as SUDO, this was causing issues From 98a0d17431df81e40d505ad19eb29909e9c9618a Mon Sep 17 00:00:00 2001 From: PromoFaux Date: Wed, 27 Jan 2016 15:28:40 +0000 Subject: [PATCH 050/100] Update basic-install.sh Emergency Bug fix. I take the blame for this one, it got lost in a merge! --- automated install/basic-install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index a8676721..94fd0b46 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -182,7 +182,7 @@ use4andor6(){ useIPv6dialog(){ piholeIPv6=$(ip -6 route get 2001:4860:4860::8888 | awk -F " " '{ for(i=1;i<=NF;i++) if ($i == "src") print $(i+1) }') whiptail --msgbox --backtitle "IPv6..." --title "IPv6 Supported" "$piholeIPv6 will be used to block ads." $r $c - $SUDO mkdir -p /etc/pihole/ + $SUDO touch /etc/pihole/.useIPv6 } @@ -448,7 +448,7 @@ runGravity(){ installPihole(){ checkForDependencies # done stopServices - + $SUDO mkdir -p /etc/pihole/ $SUDO chown www-data:www-data /var/www/html $SUDO chmod 775 /var/www/html $SUDO usermod -a -G www-data pi From 701ae06e4aa17c89f02703e1937cdadd56825399 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Wed, 27 Jan 2016 21:14:06 +0000 Subject: [PATCH 051/100] Move copying of adlists.default to gravity.sh --- automated install/basic-install.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index dfe279a9..39a043d9 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -431,10 +431,9 @@ installCron(){ runGravity(){ $SUDO echo ":::" - $SUDO echo "::: Preparing to run gravity.sh to refresh hosts..." + $SUDO echo "::: Preparing to run gravity.sh to refresh hosts..." if ls /etc/pihole/list* 1> /dev/null 2>&1; then - echo "::: Cleaning up previous install (preserving whitelist/blacklist)" - $SUDO cp -o /etc/.pihole/adlists.default /etc/pihole/adlists.default + echo "::: Cleaning up previous install (preserving whitelist/blacklist)" $SUDO rm /etc/pihole/list.* fi #Don't run as SUDO, this was causing issues From b75b290351f60f694a95b75211e5aeb9dc558ced Mon Sep 17 00:00:00 2001 From: Promofaux Date: Wed, 27 Jan 2016 21:14:23 +0000 Subject: [PATCH 052/100] adlists.default copied on each run of gravity. In case it has been overwritten --- gravity.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gravity.sh b/gravity.sh index 5fbcc82f..11689479 100755 --- a/gravity.sh +++ b/gravity.sh @@ -331,7 +331,7 @@ function gravity_reload() { echo " done!" } - +$SUDO cp -o /etc/.pihole/adlists.default /etc/pihole/adlists.default gravity_collapse gravity_spinup gravity_Schwarzchild From 3d78b44a8ee5933a4dfe7f7396e161681a5af0d6 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Wed, 27 Jan 2016 22:32:08 +0000 Subject: [PATCH 053/100] Changes as in #253, but with less commits to keep the repo tidy --- automated install/basic-install.sh | 67 ++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 23 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index a8676721..ed5fd60d 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -16,7 +16,9 @@ # # curl -L install.pi-hole.net | bash + ######## VARIABLES ######### + tmpLog=/tmp/pihole-install.log instalLogLoc=/etc/pihole/install.log @@ -34,7 +36,9 @@ columns=$(tput cols) r=$(( rows / 2 )) c=$(( columns / 2 )) + # Find IP used to route to outside world + IPv4dev=$(ip route get 8.8.8.8 | awk '{for(i=1;i<=NF;i++)if($i~/dev/)print $(i+1)}') IPv4addr=$(ip -o -f inet addr show dev $IPv4dev | awk '{print $4}' | awk 'END {print}') IPv4gw=$(ip route get 8.8.8.8 | awk '{print $3}') @@ -59,7 +63,7 @@ else fi fi -if [ -f "/etc/dnsmasq.d/01-pihole.conf" ]; then +if [ -d "/etc/pihole" ]; then #Likely an existing install upgrade=true else @@ -182,7 +186,7 @@ use4andor6(){ useIPv6dialog(){ piholeIPv6=$(ip -6 route get 2001:4860:4860::8888 | awk -F " " '{ for(i=1;i<=NF;i++) if ($i == "src") print $(i+1) }') whiptail --msgbox --backtitle "IPv6..." --title "IPv6 Supported" "$piholeIPv6 will be used to block ads." $r $c - $SUDO mkdir -p /etc/pihole/ + $SUDO touch /etc/pihole/.useIPv6 } @@ -256,7 +260,9 @@ setStaticIPv4(){ else setDHCPCD $SUDO ip addr replace dev $piholeInterface $IPv4addr - echo "Setting IP to $IPv4addr. You may need to restart after the install is complete." + echo ":::" + echo "::: Setting IP to $IPv4addr. You may need to restart after the install is complete." + echo ":::" fi } @@ -269,7 +275,7 @@ installScripts(){ $SUDO cp /etc/.pihole/advanced/Scripts/blacklist.sh /usr/local/bin/blacklist.sh $SUDO cp /etc/.pihole/advanced/Scripts/piholeLogFlush.sh /usr/local/bin/piholeLogFlush.sh $SUDO cp /etc/.pihole/advanced/Scripts/updateDashboard.sh /usr/local/bin/updateDashboard.sh - $SUDO chmod 755 /usr/local/bin/{gravity,chronometer,whitelist,blacklist,piholeLogFlush,updateDashboard}.sh + $SUDO chmod 755 /usr/local/bin/{gravity,chronometer,whitelist,blacklist,piholeLogFlush,updateDashboard}.sh $SUDO echo " done." } @@ -299,30 +305,47 @@ checkForDependencies(){ #We'll change the logic up here, to check to see if there are any updates availible and # if so, advise the user to run apt-get update/upgrade at their own discretion + + #Check to see if apt-get update has already been run today + # it needs to have been run at least once on new installs! + + timestamp=$(stat -c %Y /var/cache/apt/) + timestampAsDate=$(date -d @$timestamp "+%b %e") today=$(date "+%b %e") - echo ":::" + + if [ ! "$today" == "$timestampAsDate" ]; then + #update package lists + echo ":::" + echo -n "::: apt-get update has not been run today. Running now..." + $SUDO apt-get -qq update & spinner $! + echo " done!" + fi + + echo ":::" echo -n "::: Checking apt-get for upgraded packages...." - updatesToInstall=$(sudo apt-get -s -o Debug::NoLocking=true upgrade | grep -c ^Inst) & spinner $! + updatesToInstall=$(sudo apt-get -s -o Debug::NoLocking=true upgrade | grep -c ^Inst) echo " done!" - + echo ":::" - if [ $updatesToInstall > 0 ]; then + if [[ $updatesToInstall -eq "0" ]]; then + echo "::: Your pi is up to date! Continuing with pi-hole installation..." + else echo "::: There are $updatesToInstall updates availible for your pi!" - echo "::: Please consider running 'sudo apt-get update', followed by 'sudo apt-get upgrade'" - echo "::: after pi-hole has finished installing." + echo "::: Please run 'sudo apt-get upgrade' before continuing with installation" echo ":::" + echo "::: Quitting install, please run 'curl -L install.pi-hole.net | bash' after updating packages!" + echo ":::" + + exit 1 #add in a prompt to give users the option to quit installation or continue - echo -n "::: Would you like to continue with the pi-hole installation? (Y/n):" - read answer + #echo -n "::: Would you like to continue with the pi-hole installation? (Y/n):" + #read answer - case "$answer" in - [yY][eE][sS]|[yY] ) echo "::: Continuing!";; - * ) echo "::: Quitting install, please run 'curl -L install.pi-hole.net | bash' after updating packages!" - exit 0;; - esac - - else - echo "::: Your pi is up to date! Continuing with pi-hole installation..." + #case "$answer" in + # [yY][eE][sS]|[yY] ) echo "::: Continuing!";; + # * ) echo "::: Quitting install, please run 'curl -L install.pi-hole.net | bash' after updating packages!" + + #esac fi echo ":::" @@ -477,6 +500,7 @@ The install log is in /etc/pihole." $r $c ######## SCRIPT ############ # Start the installer +$SUDO mkdir -p /etc/pihole/ welcomeDialogs # Just back up the original Pi-hole right away since it won't take long and it gets it out of the way @@ -486,8 +510,6 @@ chooseInterface # Let the user decide if they want to block ads over IPv4 and/or IPv6 use4andor6 - - # Install and log everything to a file installPihole | tee $tmpLog @@ -495,6 +517,5 @@ installPihole | tee $tmpLog $SUDO mv $tmpLog $instalLogLoc displayFinalMessage - $SUDO service dnsmasq start $SUDO service lighttpd start From 5111880edfe44447dc7ea92b8e56d06933086918 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Wed, 27 Jan 2016 22:35:52 +0000 Subject: [PATCH 054/100] remove erroneous -o --- gravity.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gravity.sh b/gravity.sh index 11689479..3004b8a2 100755 --- a/gravity.sh +++ b/gravity.sh @@ -331,7 +331,7 @@ function gravity_reload() { echo " done!" } -$SUDO cp -o /etc/.pihole/adlists.default /etc/pihole/adlists.default +$SUDO cp /etc/.pihole/adlists.default /etc/pihole/adlists.default gravity_collapse gravity_spinup gravity_Schwarzchild From c00fb44cee77ae61e44acc1cb00e55c1ca457f9e Mon Sep 17 00:00:00 2001 From: Promofaux Date: Wed, 27 Jan 2016 23:28:36 +0000 Subject: [PATCH 055/100] Do not force apt-get upgrade on the user. Instead, advise them. We only need to make sure apt-get update has been run --- automated install/basic-install.sh | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index ed5fd60d..745566aa 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -331,21 +331,8 @@ checkForDependencies(){ echo "::: Your pi is up to date! Continuing with pi-hole installation..." else echo "::: There are $updatesToInstall updates availible for your pi!" - echo "::: Please run 'sudo apt-get upgrade' before continuing with installation" + echo "::: We recommend you run 'sudo apt-get upgrade' after installing Pi-Hole! " echo ":::" - echo "::: Quitting install, please run 'curl -L install.pi-hole.net | bash' after updating packages!" - echo ":::" - - exit 1 - #add in a prompt to give users the option to quit installation or continue - #echo -n "::: Would you like to continue with the pi-hole installation? (Y/n):" - #read answer - - #case "$answer" in - # [yY][eE][sS]|[yY] ) echo "::: Continuing!";; - # * ) echo "::: Quitting install, please run 'curl -L install.pi-hole.net | bash' after updating packages!" - - #esac fi echo ":::" @@ -518,4 +505,4 @@ $SUDO mv $tmpLog $instalLogLoc displayFinalMessage $SUDO service dnsmasq start -$SUDO service lighttpd start +$SUDO service lighttpd start \ No newline at end of file From cadc506aa59b727cbdbf89abb8418a642504db81 Mon Sep 17 00:00:00 2001 From: Dan Schaper Date: Thu, 28 Jan 2016 09:25:00 +0000 Subject: [PATCH 056/100] Remove extraneous whitespace from basic-install.sh --- automated install/basic-install.sh | 64 +++++++++++++++--------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index ba682e5b..871f1884 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -106,10 +106,10 @@ backupLegacyPihole() { welcomeDialogs() { # 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 - + # Support for a part-time dev whiptail --msgbox --backtitle "Plea" --title "Free and open source" "The Pi-hole is free, but powered by your donations: http://pi-hole.net/donate" $r $c - + # Explain the need for a static address 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 @@ -119,7 +119,7 @@ chooseInterface() { # Turn the available interfaces into an array so it can be used with a whiptail dialog interfacesArray=() firstloop=1 - + while read -r line do mode="OFF" @@ -129,12 +129,12 @@ chooseInterface() { fi interfacesArray+=("$line" "available" "$mode") done <<< "$availableInterfaces" - + # Find out how many interfaces are available to choose from interfaceCount=$(echo "$availableInterfaces" | wc -l) chooseInterfaceCmd=(whiptail --separate-output --radiolist "Choose An Interface" $r $c $interfaceCount) chooseInterfaceOptions=$("${chooseInterfaceCmd[@]}" "${interfacesArray[@]}" 2>&1 >/dev/tty) - + for desiredInterface in $chooseInterfaceOptions do piholeInterface=$desiredInterface @@ -186,7 +186,7 @@ useIPv6dialog() { # Show the IPv6 address used for blocking piholeIPv6=$(ip -6 route get 2001:4860:4860::8888 | awk -F " " '{ for(i=1;i<=NF;i++) if ($i == "src") print $(i+1) }') whiptail --msgbox --backtitle "IPv6..." --title "IPv6 Supported" "$piholeIPv6 will be used to block ads." $r $c - + $SUDO touch /etc/pihole/.useIPv6 } @@ -271,13 +271,13 @@ installScripts() { # Install the scripts from /etc/.pihole to their various locations $SUDO echo ":::" $SUDO echo -n "::: Installing scripts..." - $SUDO cp /etc/.pihole/gravity.sh /usr/local/bin/gravity.sh + $SUDO cp /etc/.pihole/gravity.sh /usr/local/bin/gravity.sh $SUDO cp /etc/.pihole/advanced/Scripts/chronometer.sh /usr/local/bin/chronometer.sh - $SUDO cp /etc/.pihole/advanced/Scripts/whitelist.sh /usr/local/bin/whitelist.sh - $SUDO cp /etc/.pihole/advanced/Scripts/blacklist.sh /usr/local/bin/blacklist.sh - $SUDO cp /etc/.pihole/advanced/Scripts/piholeLogFlush.sh /usr/local/bin/piholeLogFlush.sh - $SUDO cp /etc/.pihole/advanced/Scripts/updateDashboard.sh /usr/local/bin/updateDashboard.sh - $SUDO chmod 755 /usr/local/bin/{gravity,chronometer,whitelist,blacklist,piholeLogFlush,updateDashboard}.sh + $SUDO cp /etc/.pihole/advanced/Scripts/whitelist.sh /usr/local/bin/whitelist.sh + $SUDO cp /etc/.pihole/advanced/Scripts/blacklist.sh /usr/local/bin/blacklist.sh + $SUDO cp /etc/.pihole/advanced/Scripts/piholeLogFlush.sh /usr/local/bin/piholeLogFlush.sh + $SUDO cp /etc/.pihole/advanced/Scripts/updateDashboard.sh /usr/local/bin/updateDashboard.sh + $SUDO chmod 755 /usr/local/bin/{gravity,chronometer,whitelist,blacklist,piholeLogFlush,updateDashboard}.sh $SUDO echo " done." } @@ -287,8 +287,8 @@ installConfigs() { $SUDO echo -n "::: Installing configs..." $SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig $SUDO mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig - $SUDO cp /etc/.pihole/advanced/dnsmasq.conf /etc/dnsmasq.conf - $SUDO cp /etc/.pihole/advanced/lighttpd.conf /etc/lighttpd/lighttpd.conf + $SUDO cp /etc/.pihole/advanced/dnsmasq.conf /etc/dnsmasq.conf + $SUDO cp /etc/.pihole/advanced/lighttpd.conf /etc/lighttpd/lighttpd.conf $SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.conf $SUDO echo " done." } @@ -297,8 +297,8 @@ stopServices() { # Stop dnsmasq and lighttpd $SUDO echo ":::" $SUDO echo -n "::: Stopping services..." - $SUDO service dnsmasq stop & spinner $! || true - $SUDO service lighttpd stop & spinner $! || true + $SUDO service dnsmasq stop & spinner $! || true + $SUDO service lighttpd stop & spinner $! || true $SUDO echo " done." } @@ -315,26 +315,26 @@ checkForDependencies() { timestampAsDate=$(date -d @$timestamp "+%b %e") today=$(date "+%b %e") - if [ ! "$today" == "$timestampAsDate" ]; then + if [ ! "$today" == "$timestampAsDate" ]; then #update package lists echo ":::" echo -n "::: apt-get update has not been run today. Running now..." $SUDO apt-get -qq update & spinner $! echo " done!" - fi - echo ":::" + fi + echo ":::" echo -n "::: Checking apt-get for upgraded packages...." updatesToInstall=$(sudo apt-get -s -o Debug::NoLocking=true upgrade | grep -c ^Inst) echo " done!" echo ":::" if [[ $updatesToInstall -eq "0" ]]; then echo "::: Your pi is up to date! Continuing with pi-hole installation..." - else + else echo "::: There are $updatesToInstall updates availible for your pi!" - echo "::: We recommend you run 'sudo apt-get upgrade' after installing Pi-Hole! " + echo "::: We recommend you run 'sudo apt-get upgrade' after installing Pi-Hole! " echo ":::" fi - echo ":::" + echo ":::" echo "::: Checking dependencies:" dependencies=( dnsutils bc toilet figlet dnsmasq lighttpd php5-common php5-cgi php5 git curl unzip wget ) @@ -356,16 +356,16 @@ getGitFiles() { # Setup git repos for base files and web admin echo ":::" echo "::: Checking for existing base files..." - if is_repo $piholeFilesDir; then - make_repo $piholeFilesDir $piholeGitUrl + if is_repo $piholeFilesDir; then + make_repo $piholeFilesDir $piholeGitUrl else - update_repo $piholeFilesDir + update_repo $piholeFilesDir fi - echo ":::" + echo ":::" echo "::: Checking for existing web interface..." - if is_repo $webInterfaceDir; then - make_repo $webInterfaceDir $webInterfaceGitUrl + if is_repo $webInterfaceDir; then + make_repo $webInterfaceDir $webInterfaceGitUrl else update_repo $webInterfaceDir fi @@ -410,7 +410,7 @@ CreateLogFile() { $SUDO echo " done!" else $SUDO echo " already exists!" - fi + fi } installPiholeWeb() { @@ -460,8 +460,8 @@ installPihole() { $SUDO chmod 775 /var/www/html $SUDO usermod -a -G www-data pi $SUDO lighty-enable-mod fastcgi fastcgi-php > /dev/null - - getGitFiles + + getGitFiles installScripts installConfigs #installWebAdmin @@ -505,4 +505,4 @@ displayFinalMessage # Start services $SUDO service dnsmasq start -$SUDO service lighttpd start \ No newline at end of file +$SUDO service lighttpd start From 5fa0d798e2e22963cc50983988adf83b1d9b9677 Mon Sep 17 00:00:00 2001 From: PromoFaux Date: Thu, 28 Jan 2016 10:13:55 +0000 Subject: [PATCH 057/100] Update README.md Add link to segment on MSDN/Channel 9's Defrag Show --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index cc58b154..19ab0241 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ Once installed, [configure your router to have **DHCP clients use the Pi as thei - [Minibian Pi-hole](http://munkjensen.net/wiki/index.php/See_my_Pi-Hole#Minibian_Pi-hole) ## Coverage +- [The Defrag Show - MSDN/Channel 9](https://channel9.msdn.com/Shows/The-Defrag-Show/Defrag-Endoscope-USB-Camera-The-Final-HoloLens-Vote-Adblock-Pi-and-more?WT.mc_id=dlvr_twitter_ch9#time=20m39s) - [MacObserver Podcast 585](http://www.macobserver.com/tmo/podcast/macgeekgab-585) - [Medium: Block All Ads For $53](https://medium.com/@robleathern/block-ads-on-all-home-devices-for-53-18-a5f1ec139693#.gj1xpgr5d) - [MakeUseOf: Adblock Everywhere, The Pi-hole Way](http://www.makeuseof.com/tag/adblock-everywhere-raspberry-pi-hole-way/) From 49a56cf131ccd2109713eaddf4f7c2c4d0feaf2c Mon Sep 17 00:00:00 2001 From: Mcat12 Date: Fri, 29 Jan 2016 08:25:35 -0500 Subject: [PATCH 058/100] Start on new versioning --- automated install/basic-install.sh | 3 ++- version.txt | 0 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 version.txt diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 762de49c..bbc8b25f 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -285,7 +285,8 @@ installConfigs(){ $SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig $SUDO mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig $SUDO cp /etc/.pihole/advanced/dnsmasq.conf /etc/dnsmasq.conf - $SUDO cp /etc/.pihole/advanced/lighttpd.conf /etc/lighttpd/lighttpd.conf + $SUDO cp /etc/.pihole/advanced/lighttpd.conf /etc/lighttpd/lighttpd.conf + $SUDO cp /etc/.pihole/version.txt /etc/pihole/version.txt $SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.conf $SUDO echo " done." } diff --git a/version.txt b/version.txt new file mode 100644 index 00000000..e69de29b From 0ece58b9cbf64f61c0470a4f56bc5c991eadcac1 Mon Sep 17 00:00:00 2001 From: Mcat12 Date: Fri, 29 Jan 2016 12:23:03 -0500 Subject: [PATCH 059/100] Add version --- automated install/basic-install.sh | 4 ++-- version.txt | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index bbc8b25f..60df899b 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -286,7 +286,7 @@ installConfigs(){ $SUDO mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig $SUDO cp /etc/.pihole/advanced/dnsmasq.conf /etc/dnsmasq.conf $SUDO cp /etc/.pihole/advanced/lighttpd.conf /etc/lighttpd/lighttpd.conf - $SUDO cp /etc/.pihole/version.txt /etc/pihole/version.txt + $SUDO cp /etc/.pihole/version.txt /etc/pihole/version.txt $SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.conf $SUDO echo " done." } @@ -506,4 +506,4 @@ $SUDO mv $tmpLog $instalLogLoc displayFinalMessage $SUDO service dnsmasq start -$SUDO service lighttpd start \ No newline at end of file +$SUDO service lighttpd start diff --git a/version.txt b/version.txt index e69de29b..7208c218 100644 --- a/version.txt +++ b/version.txt @@ -0,0 +1 @@ +2.4 \ No newline at end of file From 895647b908c70764fda728c392183da18ce8815b Mon Sep 17 00:00:00 2001 From: Mcat12 Date: Fri, 29 Jan 2016 12:32:58 -0500 Subject: [PATCH 060/100] Don't copy version to install dir --- automated install/basic-install.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 60df899b..67df56be 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -286,7 +286,6 @@ installConfigs(){ $SUDO mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig $SUDO cp /etc/.pihole/advanced/dnsmasq.conf /etc/dnsmasq.conf $SUDO cp /etc/.pihole/advanced/lighttpd.conf /etc/lighttpd/lighttpd.conf - $SUDO cp /etc/.pihole/version.txt /etc/pihole/version.txt $SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.conf $SUDO echo " done." } From b93e46de1438e5e93b0f640f0914ee7c39d6ffe0 Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Sat, 30 Jan 2016 14:55:02 +0000 Subject: [PATCH 061/100] Update basic-install.sh --- automated install/basic-install.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index f3771764..cd1b1efa 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -287,11 +287,7 @@ installConfigs() { $SUDO echo -n "::: Installing configs..." $SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig $SUDO mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig -<<<<<<< HEAD - $SUDO cp /etc/.pihole/advanced/dnsmasq.conf /etc/dnsmasq.conf -======= $SUDO cp /etc/.pihole/advanced/dnsmasq.conf /etc/dnsmasq.conf ->>>>>>> CBH/Bugfix/Formatting $SUDO cp /etc/.pihole/advanced/lighttpd.conf /etc/lighttpd/lighttpd.conf $SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.conf $SUDO echo " done." From b83704dac206f30ab8caf4ad454f78c5519117ae Mon Sep 17 00:00:00 2001 From: Jacob Salmela Date: Sat, 30 Jan 2016 10:20:01 -0600 Subject: [PATCH 062/100] splunk app --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 19ab0241..a0bf4cc3 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ Once installed, [configure your router to have **DHCP clients use the Pi as thei - [Minibian Pi-hole](http://munkjensen.net/wiki/index.php/See_my_Pi-Hole#Minibian_Pi-hole) ## Coverage +- [Splunk: Pi-hole Visualizser](https://splunkbase.splunk.com/app/3023/) - [The Defrag Show - MSDN/Channel 9](https://channel9.msdn.com/Shows/The-Defrag-Show/Defrag-Endoscope-USB-Camera-The-Final-HoloLens-Vote-Adblock-Pi-and-more?WT.mc_id=dlvr_twitter_ch9#time=20m39s) - [MacObserver Podcast 585](http://www.macobserver.com/tmo/podcast/macgeekgab-585) - [Medium: Block All Ads For $53](https://medium.com/@robleathern/block-ads-on-all-home-devices-for-53-18-a5f1ec139693#.gj1xpgr5d) From a1204cf246e851983e2a2ee51acbf000fff17544 Mon Sep 17 00:00:00 2001 From: Jacob Salmela Date: Sat, 30 Jan 2016 10:20:01 -0600 Subject: [PATCH 063/100] splunk app --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 19ab0241..a0bf4cc3 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ Once installed, [configure your router to have **DHCP clients use the Pi as thei - [Minibian Pi-hole](http://munkjensen.net/wiki/index.php/See_my_Pi-Hole#Minibian_Pi-hole) ## Coverage +- [Splunk: Pi-hole Visualizser](https://splunkbase.splunk.com/app/3023/) - [The Defrag Show - MSDN/Channel 9](https://channel9.msdn.com/Shows/The-Defrag-Show/Defrag-Endoscope-USB-Camera-The-Final-HoloLens-Vote-Adblock-Pi-and-more?WT.mc_id=dlvr_twitter_ch9#time=20m39s) - [MacObserver Podcast 585](http://www.macobserver.com/tmo/podcast/macgeekgab-585) - [Medium: Block All Ads For $53](https://medium.com/@robleathern/block-ads-on-all-home-devices-for-53-18-a5f1ec139693#.gj1xpgr5d) From 48f9a61ff0f577b61c6e9129ed59f13ff242678d Mon Sep 17 00:00:00 2001 From: Mcat12 Date: Sat, 30 Jan 2016 15:12:40 -0500 Subject: [PATCH 064/100] Updated License --- advanced/Scripts/blacklist.sh | 7 +++++-- advanced/Scripts/chronometer.sh | 7 +++++-- advanced/Scripts/piholeLogFlush.sh | 14 ++++++++------ advanced/Scripts/updateDashboard.sh | 19 +++++++++---------- advanced/Scripts/whitelist.sh | 7 +++++-- advanced/dnsmasq.conf | 11 +++++++++++ advanced/dphys-swapfile | 11 +++++++++++ advanced/lighttpd.conf | 11 +++++++++++ advanced/pihole.cron | 11 +++++++++++ automated install/basic-install.sh | 8 ++++---- automated install/uninstall.sh | 8 +++++--- block hulu ads/lighttpd.conf | 11 +++++++++++ block hulu ads/minidlna.conf | 13 ++++++++++++- 13 files changed, 108 insertions(+), 30 deletions(-) diff --git a/advanced/Scripts/blacklist.sh b/advanced/Scripts/blacklist.sh index 3e7753d3..70b8131a 100644 --- a/advanced/Scripts/blacklist.sh +++ b/advanced/Scripts/blacklist.sh @@ -1,6 +1,9 @@ #!/usr/bin/env bash -# (c) 2015 by Jacob Salmela -# This file is part of Pi-hole. +# 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 +# Blacklists domains # # 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 diff --git a/advanced/Scripts/chronometer.sh b/advanced/Scripts/chronometer.sh index 54916d6e..2fe00498 100755 --- a/advanced/Scripts/chronometer.sh +++ b/advanced/Scripts/chronometer.sh @@ -1,6 +1,9 @@ #!/usr/bin/env bash -# (c) 2015 by Jacob Salmela -# This file is part of Pi-hole. +# 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 +# Calculates stats and displays to an LCD # # 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 diff --git a/advanced/Scripts/piholeLogFlush.sh b/advanced/Scripts/piholeLogFlush.sh index 832c98c9..bbcf1ade 100755 --- a/advanced/Scripts/piholeLogFlush.sh +++ b/advanced/Scripts/piholeLogFlush.sh @@ -1,11 +1,13 @@ #!/usr/bin/env 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 # Flushes /var/log/pihole.log -# (c) 2015 by Jacob Salmela -# This file is part of Pi-hole. # -#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. +# 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. truncate -s 0 /var/log/pihole.log diff --git a/advanced/Scripts/updateDashboard.sh b/advanced/Scripts/updateDashboard.sh index 11de6264..edf04896 100644 --- a/advanced/Scripts/updateDashboard.sh +++ b/advanced/Scripts/updateDashboard.sh @@ -1,15 +1,14 @@ #!/usr/bin/env 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 +# Updates the Pi-hole web interface # -# this script will update the pihole web interface files. -# -# if this is the first time running this script after an -# existing installation, the existing web interface files -# will be removed and replaced with the latest master -# branch from github. subsequent executions of this script -# will pull the latest version of the web interface. -# -# @TODO: add git as requirement to basic-install.sh -# +# 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. WEB_INTERFACE_GIT_URL="https://github.com/pi-hole/AdminLTE.git" WEB_INTERFACE_DIR="/var/www/html/admin" diff --git a/advanced/Scripts/whitelist.sh b/advanced/Scripts/whitelist.sh index 500d65df..853c3b79 100755 --- a/advanced/Scripts/whitelist.sh +++ b/advanced/Scripts/whitelist.sh @@ -1,6 +1,9 @@ #!/usr/bin/env bash -# (c) 2015 by Jacob Salmela -# This file is part of Pi-hole. +# 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 +# Whitelists domains # # 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 diff --git a/advanced/dnsmasq.conf b/advanced/dnsmasq.conf index 25f52a57..a0b77a5e 100644 --- a/advanced/dnsmasq.conf +++ b/advanced/dnsmasq.conf @@ -1,3 +1,14 @@ +# 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 +# dnsmasq config for Pi-hole +# +# 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. + # If you want dnsmasq to read another file, as well as /etc/hosts, use # this. addn-hosts=/etc/pihole/gravity.list diff --git a/advanced/dphys-swapfile b/advanced/dphys-swapfile index 229f00e6..d8225175 100644 --- a/advanced/dphys-swapfile +++ b/advanced/dphys-swapfile @@ -1 +1,12 @@ +# 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 +# Swap file config +# +# 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. + CONF_SWAPSIZE=500 diff --git a/advanced/lighttpd.conf b/advanced/lighttpd.conf index 6b33fa50..5a662ffa 100644 --- a/advanced/lighttpd.conf +++ b/advanced/lighttpd.conf @@ -1,3 +1,14 @@ +# 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 +# lighttpd config for Pi-hole +# +# 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. + server.modules = ( "mod_access", "mod_accesslog", diff --git a/advanced/pihole.cron b/advanced/pihole.cron index 57f1c10c..83b431a4 100644 --- a/advanced/pihole.cron +++ b/advanced/pihole.cron @@ -1,3 +1,14 @@ +# 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 +# Updates ad sources every week +# +# 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. + # Pi-hole: Update the ad sources once a week on Sunday at 01:59 # Download any updates from the ad lists 59 1 * * 7 root /usr/local/bin/gravity.sh diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 871f1884..8569d00b 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -1,15 +1,15 @@ #!/usr/bin/env bash # Pi-hole: A black hole for Internet advertisements -# by Jacob Salmela +# (c) 2015, 2016 by Jacob Salmela # Network-wide ad blocking via your Raspberry Pi -# -# (c) 2015 by Jacob Salmela -# This file is part of Pi-hole. +# http://pi-hole.net +# Installs Pi-hole # # 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. + # pi-hole.net/donate # # Install with this command (from your Pi): diff --git a/automated install/uninstall.sh b/automated install/uninstall.sh index 59eca67b..ee4e80a0 100644 --- a/automated install/uninstall.sh +++ b/automated install/uninstall.sh @@ -1,7 +1,9 @@ #!/usr/bin/env bash -# Completely uninstalls the Pi-hole -# (c) 2015 by Jacob Salmela -# This file is part of Pi-hole. +# 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 +# Completely uninstalls Pi-hole # # 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 diff --git a/block hulu ads/lighttpd.conf b/block hulu ads/lighttpd.conf index b22f599e..9e8d1f80 100644 --- a/block hulu ads/lighttpd.conf +++ b/block hulu ads/lighttpd.conf @@ -1,3 +1,14 @@ +# 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 +# Lighttpd config file for Pi-hole +# +# 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. + server.modules = ( "mod_access", "mod_alias", diff --git a/block hulu ads/minidlna.conf b/block hulu ads/minidlna.conf index 9eccc7b6..3f9e188f 100644 --- a/block hulu ads/minidlna.conf +++ b/block hulu ads/minidlna.conf @@ -1,6 +1,17 @@ +# 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 +# MiniDLNA config file for Pi-hole +# +# 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. + media_dir=V,/var/lib/minidlna/videos/ port=8200 friendly_name=pihole serial=12345678 model_number=1 -inotify=yes \ No newline at end of file +inotify=yes From 0cfb3c7ab4e53d8c921177c83b2eaaf434f18878 Mon Sep 17 00:00:00 2001 From: Mcat12 Date: Sat, 30 Jan 2016 19:21:31 -0500 Subject: [PATCH 065/100] Fixed config issue --- automated install/basic-install.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 169ce9aa..59566561 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -332,8 +332,7 @@ installConfigs() { $SUDO echo -n "::: Installing configs..." versionCheckDNSmasq $SUDO mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig - $SUDO cp /etc/.pihole/advanced/lighttpd.conf /etc/lighttpd/lighttpd.conf - $SUDO cp /etc/.pihole/advanced/dnsmasq.conf /etc/dnsmasq.conf + $SUDO cp /etc/.pihole/advanced/lighttpd.conf /etc/lighttpd/lighttpd.conf $SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.conf $SUDO echo " done." } From d18e064d21a67cfd116538cb5360660fdfc1f90a Mon Sep 17 00:00:00 2001 From: Dan Schaper Date: Sat, 30 Jan 2016 16:30:38 -0800 Subject: [PATCH 066/100] Remove no longer needed change to config file Config file moved, no longer needed command removed. --- automated install/basic-install.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 59566561..cbf36900 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -333,7 +333,6 @@ installConfigs() { versionCheckDNSmasq $SUDO mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig $SUDO cp /etc/.pihole/advanced/lighttpd.conf /etc/lighttpd/lighttpd.conf - $SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.conf $SUDO echo " done." } From 5060ed8970821348e9ef09f1b293a1727470f9f1 Mon Sep 17 00:00:00 2001 From: Chad Howell Date: Sat, 30 Jan 2016 20:51:28 -0500 Subject: [PATCH 067/100] Add error checking for grep and correct typos --- automated install/basic-install.sh | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index cbf36900..22ab4eee 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -293,19 +293,26 @@ versionCheckDNSmasq(){ dnsFile2="/etc/dnsmasq.conf.orig" dnsSearch="addn-hosts=/etc/pihole/gravity.list" - # Check dnsmasq.conf for pihole magic - if grep -q $dnsSearch $dnsFile1; then - # If true, Check dnsmasq.conf.orig for pihole magic + # Check if /etc/dnsmasq.conf exists + if [ -d "/etc/dnsmasq.conf" ]; then + # If true, Check dnsmasq.conf for pihole magic if grep -q $dnsSearch $dnsFile1; then - # If true, use advanced/dnsmasq.conf.original - $SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig - $SUDO cp /etc/.pihole/advanced/dnsmasq.conf.original /etc/dnsmasq.conf - else - # If false, mv original file back - $SUDO mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig + # If true, Check dnsmasq.conf.orig for pihole magic + if grep -q $dnsSearch $dnsFile2; then + # If true, use advanced/dnsmasq.conf.original + $SUDO mv -f /etc/dnsmasq.conf /etc/dnsmasq.conf.orig + $SUDO cp /etc/.pihole/advanced/dnsmasq.conf.original /etc/dnsmasq.conf + else + # If false, mv original file back + $SUDO mv -f /etc/dnsmasq.conf.orig /etc/dnsmasq.conf + fi + # If false, This is a fresh install fi - # If false, This is a fresh install + else + # If false, use advanced/dnsmasq.conf.original + $SUDO cp /etc/.pihole/advanced/dnsmasq.conf.original /etc/dnsmasq.conf fi + $SUDO cp /etc/.pihole/advanced/01-pihole.conf /etc/dnsmasq.d/01-pihole.conf $SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.d/01-pihole.conf $SUDO sed -i "s/@DNS1@/$piholeDNS1/" /etc/dnsmasq.d/01-pihole.conf From 29e0e1760bbf8579f0574e99d0ea6791e473b5f6 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 31 Jan 2016 20:39:12 +0000 Subject: [PATCH 068/100] Fixes #154 #269. No need for PR #214 any more. --- automated install/basic-install.sh | 121 ++++++++++++++++------------- 1 file changed, 68 insertions(+), 53 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 22ab4eee..8f6d94ba 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -90,7 +90,7 @@ spinner() { backupLegacyPihole() { # This function detects and backups the pi-hole v1 files. It will not do anything to the current version files. if [[ -f /etc/dnsmasq.d/adList.conf ]];then - echo "Original Pi-hole detected. Initiating sub space transport" + echo "::: Original Pi-hole detected. Initiating sub space transport" $SUDO mkdir -p /etc/pihole/original/ $SUDO mv /etc/dnsmasq.d/adList.conf /etc/pihole/original/adList.conf.$(date "+%Y-%m-%d") $SUDO mv /etc/dnsmasq.conf /etc/pihole/original/dnsmasq.conf.$(date "+%Y-%m-%d") @@ -134,13 +134,18 @@ chooseInterface() { interfaceCount=$(echo "$availableInterfaces" | wc -l) chooseInterfaceCmd=(whiptail --separate-output --radiolist "Choose An Interface" $r $c $interfaceCount) chooseInterfaceOptions=$("${chooseInterfaceCmd[@]}" "${interfacesArray[@]}" 2>&1 >/dev/tty) - - for desiredInterface in $chooseInterfaceOptions - do + if [[ $? = 0 ]];then + for desiredInterface in $chooseInterfaceOptions + do piholeInterface=$desiredInterface echo "::: Using interface: $piholeInterface" echo ${piholeInterface} > /tmp/piholeINT - done + done + else + echo "::: Cancel selected, exiting...." + exit 1 + fi + } @@ -150,34 +155,40 @@ use4andor6() { options=(IPv4 "Block ads over IPv4" on IPv6 "Block ads over IPv6" off) choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty) - for choice in $choices - do - case $choice in - IPv4 ) useIPv4=true;; - IPv6 ) useIPv6=true;; - esac - done - if [ $useIPv4 ] && [ ! $useIPv6 ]; then - getStaticIPv4Settings - setStaticIPv4 - echo "::: Using IPv4 on $IPv4addr" - echo "::: IPv6 will NOT be used." - fi - if [ ! $useIPv4 ] && [ $useIPv6 ]; then - useIPv6dialog - echo "::: IPv4 will NOT be used." - echo "::: Using IPv6 on $piholeIPv6" - fi - if [ $useIPv4 ] && [ $useIPv6 ]; then - getStaticIPv4Settings - setStaticIPv4 - useIPv6dialog - echo "::: Using IPv4 on $IPv4addr" - echo "::: Using IPv6 on $piholeIPv6" - fi - if [ ! $useIPv4 ] && [ ! $useIPv6 ]; then - echo "::: Cannot continue, neither IPv4 or IPv6 selected" - echo "::: Exiting" + if [[ $? = 0 ]];then + for choice in $choices + do + case $choice in + IPv4 ) useIPv4=true;; + IPv6 ) useIPv6=true;; + esac + done + + if [ $useIPv4 ] && [ ! $useIPv6 ]; then + getStaticIPv4Settings + setStaticIPv4 + echo "::: Using IPv4 on $IPv4addr" + echo "::: IPv6 will NOT be used." + fi + if [ ! $useIPv4 ] && [ $useIPv6 ]; then + useIPv6dialog + echo "::: IPv4 will NOT be used." + echo "::: Using IPv6 on $piholeIPv6" + fi + if [ $useIPv4 ] && [ $useIPv6 ]; then + getStaticIPv4Settings + setStaticIPv4 + useIPv6dialog + echo "::: Using IPv4 on $IPv4addr" + echo "::: Using IPv6 on $piholeIPv6" + fi + if [ ! $useIPv4 ] && [ ! $useIPv6 ]; then + echo "::: Cannot continue, neither IPv4 or IPv6 selected" + echo "::: Exiting" + exit 1 + fi + else + echo "::: Cancel selected. Exiting..." exit 1 fi } @@ -209,11 +220,11 @@ getStaticIPv4Settings() { # Ask for the IPv4 address IPv4addr=$(whiptail --backtitle "Calibrating network interface" --title "IPv4 address" --inputbox "Enter your desired IPv4 address" $r $c $IPv4addr 3>&1 1>&2 2>&3) if [[ $? = 0 ]];then - echo "Your static IPv4 address: $IPv4addr" + echo "::: Your static IPv4 address: $IPv4addr" # Ask for the gateway IPv4gw=$(whiptail --backtitle "Calibrating network interface" --title "IPv4 gateway (router)" --inputbox "Enter your desired IPv4 default gateway" $r $c $IPv4gw 3>&1 1>&2 2>&3) if [[ $? = 0 ]];then - echo "Your static IPv4 gateway: $IPv4gw" + echo "::: Your static IPv4 gateway: $IPv4gw" # Give the user a chance to review their settings before moving on if (whiptail --backtitle "Calibrating network interface" --title "Static IP Address" --yesno "Are these settings correct? IP address: $IPv4addr @@ -231,14 +242,14 @@ getStaticIPv4Settings() { else # Cancelling gateway settings window ipSettingsCorrect=False - echo "User canceled." - exit + echo "::: Cancel selected. Exiting..." + exit 1 fi else # Cancelling IPv4 settings window ipSettingsCorrect=False - echo "User canceled." - exit + echo "::: Cancel selected. Exiting..." + exit 1 fi done # End the if statement for DHCP vs. static @@ -247,7 +258,7 @@ getStaticIPv4Settings() { setDHCPCD() { # Append these lines to dhcpcd.conf to enable a static IP - echo "interface $piholeInterface + echo "::: interface $piholeInterface static ip_address=$IPv4addr static routers=$IPv4gw static domain_name_servers=$IPv4gw" | $SUDO tee -a $dhcpcdFile >/dev/null @@ -272,19 +283,23 @@ setDNS(){ DNSChooseOptions=(Google "Use Google's DNS Servers" on DynDNS "Use DynDNS's DNS Servers" off) DNSchoices=$("${DNSChoseCmd[@]}" "${DNSChooseOptions[@]}" 2>&1 >/dev/tty) - - case $DNSchoices in - Google) - echo "Google selected." - piholeDNS1="8.8.8.8" - piholeDNS2="8.8.4.4" - ;; - DynDNS) - echo "DynDNS selected." - piholeDNS1="208.67.222.222" - piholeDNS2="208.67.220.220" - ;; - esac + if [[ $? = 0 ]];then + case $DNSchoices in + Google) + echo "::: Using Google DNS servers." + piholeDNS1="8.8.8.8" + piholeDNS2="8.8.4.4" + ;; + DynDNS) + echo "::: Using DynDNS servers." + piholeDNS1="208.67.222.222" + piholeDNS2="208.67.220.220" + ;; + esac + else + echo "::: Cancel selected. Exiting..." + exit 1 + fi } versionCheckDNSmasq(){ From c6450e60e1f740c2029d55657e572edd050090ab Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Sun, 31 Jan 2016 20:58:11 +0000 Subject: [PATCH 069/100] Update version.txt Change version number to 2.5 --- version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.txt b/version.txt index 7208c218..95e3ba81 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.4 \ No newline at end of file +2.5 From 9412fe8a0a52ee26f2baace67e63e35c586c0576 Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Sun, 31 Jan 2016 21:01:13 +0000 Subject: [PATCH 070/100] Delete version.txt @mcat12 said it's not needed anymore. --- version.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 version.txt diff --git a/version.txt b/version.txt deleted file mode 100644 index 95e3ba81..00000000 --- a/version.txt +++ /dev/null @@ -1 +0,0 @@ -2.5 From 3fdf588cc971887732534cee53163a4b698e9aa9 Mon Sep 17 00:00:00 2001 From: Dan Schaper Date: Mon, 1 Feb 2016 02:09:11 +0000 Subject: [PATCH 071/100] Costmetic fixes, change DynDNS to OpenDNS --- automated install/basic-install.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 3992665d..2749648d 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -279,9 +279,9 @@ setStaticIPv4() { } setDNS(){ - DNSChoseCmd=(whiptail --separate-output --radiolist "Select DNS Servers" $r $c 2) - DNSChooseOptions=(Google "Use Google's DNS Servers" on - DynDNS "Use DynDNS's DNS Servers" off) + DNSChoseCmd=(whiptail --separate-output --radiolist "Select Upstream DNS Provider" $r $c 2) + DNSChooseOptions=(Google "" on + OpenDNS "" off) DNSchoices=$("${DNSChoseCmd[@]}" "${DNSChooseOptions[@]}" 2>&1 >/dev/tty) if [[ $? = 0 ]];then case $DNSchoices in @@ -291,7 +291,7 @@ setDNS(){ piholeDNS2="8.8.4.4" ;; DynDNS) - echo "::: Using DynDNS servers." + echo "::: Using OpenDNS servers." piholeDNS1="208.67.222.222" piholeDNS2="208.67.220.220" ;; From 38e73a188a9570436a179b8be4333468f7a1bf67 Mon Sep 17 00:00:00 2001 From: Dan Schaper Date: Mon, 1 Feb 2016 02:11:55 +0000 Subject: [PATCH 072/100] Fix array selection --- automated install/basic-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 2749648d..5400e683 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -290,7 +290,7 @@ setDNS(){ piholeDNS1="8.8.8.8" piholeDNS2="8.8.4.4" ;; - DynDNS) + OpenDNS) echo "::: Using OpenDNS servers." piholeDNS1="208.67.222.222" piholeDNS2="208.67.220.220" From aa1d3a4c2ea3f490e5079a5d19bb21ef8fdd0c51 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Mon, 1 Feb 2016 22:19:17 +0000 Subject: [PATCH 073/100] Fix logic in versionCheckDNSmasq, as dnsmasq.conf was being overwritten every time install was run. Fixes @kmr2319 's concern in #98 --- automated install/basic-install.sh | 62 ++++++++++++++++-------------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 3992665d..f3221743 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -303,35 +303,39 @@ setDNS(){ } versionCheckDNSmasq(){ - # Check if /etc/dnsmasq.conf is from pihole. If so replace with an original and install new in .d directory - dnsFile1="/etc/dnsmasq.conf" - dnsFile2="/etc/dnsmasq.conf.orig" - dnsSearch="addn-hosts=/etc/pihole/gravity.list" - - # Check if /etc/dnsmasq.conf exists - if [ -d "/etc/dnsmasq.conf" ]; then - # If true, Check dnsmasq.conf for pihole magic - if grep -q $dnsSearch $dnsFile1; then - # If true, Check dnsmasq.conf.orig for pihole magic - if grep -q $dnsSearch $dnsFile2; then - # If true, use advanced/dnsmasq.conf.original - $SUDO mv -f /etc/dnsmasq.conf /etc/dnsmasq.conf.orig - $SUDO cp /etc/.pihole/advanced/dnsmasq.conf.original /etc/dnsmasq.conf - else - # If false, mv original file back - $SUDO mv -f /etc/dnsmasq.conf.orig /etc/dnsmasq.conf - fi - # If false, This is a fresh install - fi - else - # If false, use advanced/dnsmasq.conf.original - $SUDO cp /etc/.pihole/advanced/dnsmasq.conf.original /etc/dnsmasq.conf - fi - - $SUDO cp /etc/.pihole/advanced/01-pihole.conf /etc/dnsmasq.d/01-pihole.conf - $SUDO sed -i "s/@INT@/$piholeInterface/" /etc/dnsmasq.d/01-pihole.conf - $SUDO sed -i "s/@DNS1@/$piholeDNS1/" /etc/dnsmasq.d/01-pihole.conf - $SUDO sed -i "s/@DNS2@/$piholeDNS2/" /etc/dnsmasq.d/01-pihole.conf + # Check if /etc/dnsmasq.conf is from pihole. If so replace with an original and install new in .d directory + dnsFile1="/etc/dnsmasq.conf" + dnsFile2="/etc/dnsmasq.conf.orig" + dnsSearch="addn-hosts=/etc/pihole/gravity.list" + + defaultFile="/etc/.pihole/advanced/dnsmasq.conf.original" + newFileToInstall="/etc/.pihole/advanced/01-pihole.conf" + newFileFinalLocation="/etc/dnsmasq.d/01-pihole.conf" + + if [ -f $dnsFile1 ]; then + echo -n "::: Existing dnsmasq.conf found..." + if grep -q $dnsSearch $dnsFile1; then + echo " it is from a previous pi-hole install." + echo -n "::: Backing up dnsmasq.conf to dnsmasq.conf.orig..." + $SUDO mv -f $dnsFile1 $dnsFile2 + echo " done." + echo -n "::: Restoring default dnsmasq.conf..." + $SUDO cp $defaultFile $dnsFile1 + echo " done." + else + echo " it is not a pi-hole file, leaving alone!" + fi + else + echo -n "::: No dnsmasq.conf found.. restoring default dnsmasq.conf..." + $SUDO cp $defaultFile $dnsFile1 + echo " done." + fi + + echo "::: copying 01-pihole.conf to /etc/dnsmasq.d/01-pihole.conf" + $SUDO cp $newFileToInstall $newFileFinalLocation + $SUDO sed -i "s/@INT@/$piholeInterface/" $newFileFinalLocation + $SUDO sed -i "s/@DNS1@/$piholeDNS1/" $newFileFinalLocation + $SUDO sed -i "s/@DNS2@/$piholeDNS2/" $newFileFinalLocation } installScripts() { From 06cba7defdae776b8bacaf7b3c96f50066a66b45 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Mon, 1 Feb 2016 22:25:28 +0000 Subject: [PATCH 074/100] Fix script output around new changes --- automated install/basic-install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 516b145d..099cf01c 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -331,8 +331,9 @@ versionCheckDNSmasq(){ echo " done." fi - echo "::: copying 01-pihole.conf to /etc/dnsmasq.d/01-pihole.conf" + echo "::: Copying 01-pihole.conf to /etc/dnsmasq.d/01-pihole.conf..." $SUDO cp $newFileToInstall $newFileFinalLocation + echo " done." $SUDO sed -i "s/@INT@/$piholeInterface/" $newFileFinalLocation $SUDO sed -i "s/@DNS1@/$piholeDNS1/" $newFileFinalLocation $SUDO sed -i "s/@DNS2@/$piholeDNS2/" $newFileFinalLocation @@ -355,11 +356,10 @@ installScripts() { installConfigs() { # Install the configs from /etc/.pihole to their various locations $SUDO echo ":::" - $SUDO echo -n "::: Installing configs..." + $SUDO echo "::: Installing configs..." versionCheckDNSmasq $SUDO mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig $SUDO cp /etc/.pihole/advanced/lighttpd.conf /etc/lighttpd/lighttpd.conf - $SUDO echo " done." } stopServices() { From c93c4cc5e61c737a4dc76b79e6eea499506b7c1b Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Mon, 1 Feb 2016 22:28:35 +0000 Subject: [PATCH 075/100] Update basic-install.sh ahem --- automated install/basic-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 099cf01c..11bdf0c5 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -331,7 +331,7 @@ versionCheckDNSmasq(){ echo " done." fi - echo "::: Copying 01-pihole.conf to /etc/dnsmasq.d/01-pihole.conf..." + echo -n "::: Copying 01-pihole.conf to /etc/dnsmasq.d/01-pihole.conf..." $SUDO cp $newFileToInstall $newFileFinalLocation echo " done." $SUDO sed -i "s/@INT@/$piholeInterface/" $newFileFinalLocation From 8a90a47fc286ce036b2fbbff17081ea080dea8ea Mon Sep 17 00:00:00 2001 From: CDeeRON Date: Tue, 2 Feb 2016 12:20:30 -0500 Subject: [PATCH 076/100] ATV Hulu domain add added ads-e-darwin.hulu.com which I found to be used when serving ADs on ATV. --- block hulu ads/lighttpd.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/block hulu ads/lighttpd.conf b/block hulu ads/lighttpd.conf index 9e8d1f80..636fd07d 100644 --- a/block hulu ads/lighttpd.conf +++ b/block hulu ads/lighttpd.conf @@ -38,6 +38,6 @@ include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port include_shell "/usr/share/lighttpd/create-mime.assign.pl" include_shell "/usr/share/lighttpd/include-conf-enabled.pl" -$HTTP["host"] =~ "ads.hulu.com|ads-v-darwin.hulu.com" { +$HTTP["host"] =~ "ads.hulu.com|ads-v-darwin.hulu.com|ads-e-darwin.hulu.com" { url.redirect = ( ".*" => "http://192.168.1.101:8200/MediaItems/19.mov") } From 3bf61cce95447a17f103a2dc06d2761d554c03cc Mon Sep 17 00:00:00 2001 From: Dan Schaper Date: Wed, 3 Feb 2016 10:53:23 -0800 Subject: [PATCH 077/100] Add alternative installation method Add installation method for non-pipe installs --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index a0bf4cc3..b51b2201 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,13 @@ ### ```curl -L install.pi-hole.net | bash``` +#### Alternative Semi-Automated install #### +``` +wget -O basic-install.sh install.pi-hole.net +chmod +x basic-install.sh +./basic-install.sh +``` + Once installed, [configure your router to have **DHCP clients use the Pi as their DNS server**](http://pi-hole.net/faq/can-i-set-the-pi-hole-to-be-the-dns-server-at-my-router-so-i-dont-have-to-change-settings-for-my-devices/) and then any device that connects to your network will have ads blocked without any further configuration. Alternatively, you can manually set each device to [use the Raspberry Pi as its DNS server](http://pi-hole.net/faq/how-do-i-use-the-pi-hole-as-my-dns-server/). ## Pi-hole Is Free, But Powered By Your Donations From c18a1c3ecabdfbaa7aaf67091fb05d426c602002 Mon Sep 17 00:00:00 2001 From: Dan Schaper Date: Thu, 4 Feb 2016 01:17:00 -0800 Subject: [PATCH 078/100] Add A+ to Raspberry Pi Platforms A+ Supported --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b51b2201..7e938834 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Automated Install -##### Designed For Raspberry Pi B, B+, 2, and Zero (with an Ethernet adapter) +##### Designed For Raspberry Pi A+, B, B+, 2, and Zero (with an Ethernet adapter) 1. Install Raspbian 2. Run the command below From 8e6ec6ef0ca323964d9cb89f0069c2d18dc00cd5 Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Fri, 5 Feb 2016 15:50:15 +0000 Subject: [PATCH 079/100] Create CONTRIBUTING.md Initial commit. Basic list, could probably do with some work.... --- CONTRIBUTING.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..8fac7c45 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,6 @@ +This is a basic checklist for now, We will update it in future. + +* Fork the repo and create your new branch based on the `development` branch. +* Submit Pull Requests to the development branch only. +* Before Submitting your Pull Request, merge `development` with your new branch and fix any conflicts. (Make sure you don't break anything in development!) +* Be patient. We will review all submitted pull requests, but our focus is on stability.. please don't be offended if we reject your PR, or it appears we're doing nothing with it! We'll get around to it.. From 282da1c2b642472d280f3e7f0599fc2549e9beeb Mon Sep 17 00:00:00 2001 From: Mcat12 Date: Fri, 5 Feb 2016 12:22:23 -0500 Subject: [PATCH 080/100] Add to contributor info --- CONTRIBUTING.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8fac7c45..1313f599 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,8 @@ -This is a basic checklist for now, We will update it in future. +This is a basic checklist for now, We will update it in the future. * Fork the repo and create your new branch based on the `development` branch. +* Commit Unix line endings +* If you want, try to keep to the theme of black holes/gravity. This can add some fun to your submission. * Submit Pull Requests to the development branch only. * Before Submitting your Pull Request, merge `development` with your new branch and fix any conflicts. (Make sure you don't break anything in development!) * Be patient. We will review all submitted pull requests, but our focus is on stability.. please don't be offended if we reject your PR, or it appears we're doing nothing with it! We'll get around to it.. From b7f6498a5c0d0464fe27b3b70758394201dc3f0b Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Fri, 5 Feb 2016 15:50:15 +0000 Subject: [PATCH 081/100] Create CONTRIBUTING.md Initial commit. Basic list, could probably do with some work.... --- CONTRIBUTING.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..8fac7c45 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,6 @@ +This is a basic checklist for now, We will update it in future. + +* Fork the repo and create your new branch based on the `development` branch. +* Submit Pull Requests to the development branch only. +* Before Submitting your Pull Request, merge `development` with your new branch and fix any conflicts. (Make sure you don't break anything in development!) +* Be patient. We will review all submitted pull requests, but our focus is on stability.. please don't be offended if we reject your PR, or it appears we're doing nothing with it! We'll get around to it.. From 31fda124f306d3f9aa8679a98347357de68d25e6 Mon Sep 17 00:00:00 2001 From: Mcat12 Date: Fri, 5 Feb 2016 12:22:23 -0500 Subject: [PATCH 082/100] Add to contributor info --- CONTRIBUTING.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8fac7c45..1313f599 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,8 @@ -This is a basic checklist for now, We will update it in future. +This is a basic checklist for now, We will update it in the future. * Fork the repo and create your new branch based on the `development` branch. +* Commit Unix line endings +* If you want, try to keep to the theme of black holes/gravity. This can add some fun to your submission. * Submit Pull Requests to the development branch only. * Before Submitting your Pull Request, merge `development` with your new branch and fix any conflicts. (Make sure you don't break anything in development!) * Be patient. We will review all submitted pull requests, but our focus is on stability.. please don't be offended if we reject your PR, or it appears we're doing nothing with it! We'll get around to it.. From 9941651b3c51e61d5b758d12fc9c9ad10b5450a6 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sat, 6 Feb 2016 13:02:21 +0000 Subject: [PATCH 083/100] Addresses changes as requested by @jacobsalmela in #282 --- automated install/basic-install.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 5400e683..90fe3221 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -571,6 +571,18 @@ $SUDO mv $tmpLog $instalLogLoc displayFinalMessage +echo -n "::: Restarting services..." # Start services $SUDO service dnsmasq start $SUDO service lighttpd start +echo " done." + +echo ":::" +echo "::: Installation Complete! Configure your devices to use the Pi-hole as their DNS server using:" +echo "::: $IPv4addr" +echo "::: $piholeIPv6" +echo ":::" +echo "::: If you set a new IP address, you should restart the Pi." +echo "::: " +echo "::: The install log is in /etc/pihole.log" + From 2d1c0be24ece43900944e6a86935b9bb0295eef4 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sat, 6 Feb 2016 13:04:54 +0000 Subject: [PATCH 084/100] fix reference to install log location. #282 --- automated install/basic-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 90fe3221..1cffab76 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -584,5 +584,5 @@ echo "::: $piholeIPv6" echo ":::" echo "::: If you set a new IP address, you should restart the Pi." echo "::: " -echo "::: The install log is in /etc/pihole.log" +echo "::: The install log is located at: /etc/pihole/install.log" From beb6b950f7580a7ca7a1c3ba2354968b26f8bbf0 Mon Sep 17 00:00:00 2001 From: Sergio G Date: Mon, 8 Feb 2016 22:26:41 +0100 Subject: [PATCH 085/100] Replaced 'sudo' with --- automated install/basic-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 11bdf0c5..abb47886 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -393,7 +393,7 @@ checkForDependencies() { fi echo ":::" echo -n "::: Checking apt-get for upgraded packages...." - updatesToInstall=$(sudo apt-get -s -o Debug::NoLocking=true upgrade | grep -c ^Inst) + updatesToInstall=$($SUDO apt-get -s -o Debug::NoLocking=true upgrade | grep -c ^Inst) echo " done!" echo ":::" if [[ $updatesToInstall -eq "0" ]]; then From b2fbf46e605c6f316a9e759a6694f23a8332393e Mon Sep 17 00:00:00 2001 From: Promofaux Date: Tue, 9 Feb 2016 20:43:45 +0000 Subject: [PATCH 086/100] Added more adlists to the defaults. By default we now block ~ 155,600 ad and tracker domains. Includes NoTrack's tracker list. --- adlists.default | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/adlists.default b/adlists.default index dd391357..c2385f7e 100644 --- a/adlists.default +++ b/adlists.default @@ -6,3 +6,12 @@ http://pgl.yoyo.org/adservers/serverlist.php? http://someonewhocares.org/hosts/hosts http://winhelp2002.mvps.org/hosts.txt http://mirror1.malwaredomains.com/files/justdomains +http://securemecca.com/Downloads/hosts.txt +https://hosts.neocities.org/ +http://sysctl.org/cameleon/hosts +https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist +https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt +https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt +http://optimate.dl.sourceforge.net/project/adzhosts/HOSTS.txt +https://raw.githubusercontent.com/quidsup/notrack/master/trackers.txt + From a734927591336cc0ce686fcbcbe19b4cef435a81 Mon Sep 17 00:00:00 2001 From: Daniel Fayette Date: Tue, 9 Feb 2016 19:51:03 -0600 Subject: [PATCH 087/100] Fixes gravity_transport variable interpretation. Adding (") around Variables passed to function ensures spaces are handled and that missing arguments are accounted for. --- gravity.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gravity.sh b/gravity.sh index 5097e050..c6fbca53 100755 --- a/gravity.sh +++ b/gravity.sh @@ -186,7 +186,7 @@ function gravity_spinup() { # Default is a simple request *) cmd_ext="" esac - gravity_transport $url $cmd_ext $agent + gravity_transport "$url" "$cmd_ext" "$agent" done } From 46d7bfecdb6e2c7c4ab5bf40d0236b768bf10771 Mon Sep 17 00:00:00 2001 From: Daniel Fayette Date: Wed, 10 Feb 2016 09:34:06 -0600 Subject: [PATCH 088/100] Check for 25mb of free disk space before install Function will check the free space of / (root) If the free space is less than 25MB it will give directions on how to expand the disk. Fixes #163 --- automated install/basic-install.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index bc027cbd..a0f0ebcb 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -115,6 +115,20 @@ welcomeDialogs() { In the next section, you can choose to use your current network settings (DHCP) or to manually edit them." $r $c } + +verifyFreeDiskSpace() { + # 25MB is the minimum space needed (20MB install + 5MB one day of logs.) + requiredFreeBytes=25600 + + existingFreeBytes=`df -lkP / | awk '{print $4}' | tail -1` + + if [[ $existingFreeBytes -lt $requiredFreeBytes ]]; then + whiptail --msgbox --backtitle "Insufficient Disk Space" --title "Insufficient Disk Space" "\nYour system appears to be low on disk space. pi-hole recomends a minimum of $requiredFreeBytes Bytes.\nYou only have $existingFreeBytes Free.\n\nIf this is a new install you may need to expand your disk.\n\nTry running:\n 'sudo raspi-config'\nChoose the 'expand file system option'\n\nAfter rebooting, run this installation again.\n\ncurl -L install.pi-hole.net | bash\n" $r $c + exit 1 + fi +} + + chooseInterface() { # Turn the available interfaces into an array so it can be used with a whiptail dialog interfacesArray=() @@ -557,6 +571,9 @@ The install log is in /etc/pihole." $r $c $SUDO mkdir -p /etc/pihole/ welcomeDialogs +# Verify there is enough disk space for the install +verifyFreeDiskSpace + # Just back up the original Pi-hole right away since it won't take long and it gets it out of the way backupLegacyPihole # Find interfaces and let the user choose one From b5406240c68252c6a6cd8afc2428780b0efe8fb5 Mon Sep 17 00:00:00 2001 From: Mcat12 Date: Wed, 10 Feb 2016 19:07:48 -0500 Subject: [PATCH 089/100] Fixes IPv6 surviving a reinstall --- automated install/basic-install.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index bc027cbd..00431c69 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -148,6 +148,12 @@ chooseInterface() { } +cleanupIPv6() { + # Removes IPv6 indicator file if we are not using IPv6 + if [ -f "/etc/pihole/.useIPv6" ] && [ ! $useIPv6 ]; then + rm /etc/pihole/.useIPv6 + fi +} use4andor6() { # Let use select IPv4 and/or IPv6 @@ -187,6 +193,7 @@ use4andor6() { echo "::: Exiting" exit 1 fi + cleanupIPv6 else echo "::: Cancel selected. Exiting..." exit 1 From 4c24186911f01292932228c00b4f73bad4a94c0a Mon Sep 17 00:00:00 2001 From: Promofaux Date: Sun, 14 Feb 2016 02:58:09 +0000 Subject: [PATCH 090/100] Fixes divide by zero error. --- advanced/Scripts/chronometer.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/advanced/Scripts/chronometer.sh b/advanced/Scripts/chronometer.sh index 2fe00498..9153d9ba 100755 --- a/advanced/Scripts/chronometer.sh +++ b/advanced/Scripts/chronometer.sh @@ -51,9 +51,13 @@ function CalcblockedToday(){ function CalcPercentBlockedToday(){ if [ "$queriesToday" != "Err." ] && [ "$blockedToday" != "Err." ]; then - #scale 2 rounds the number down, so we'll do scale 4 and then trim the last 2 zeros - percentBlockedToday=$(echo "scale=4; $blockedToday/$queriesToday*100" | bc) - percentBlockedToday=$(sed 's/.\{2\}$//' <<< "$percentBlockedToday") + if [ "$queriesToday" != 0 ]; then #Fixes divide by zero error :) + #scale 2 rounds the number down, so we'll do scale 4 and then trim the last 2 zeros + percentBlockedToday=$(echo "scale=4; $blockedToday/$queriesToday*100" | bc) + percentBlockedToday=$(sed 's/.\{2\}$//' <<< "$percentBlockedToday") + else + percentBlockedToday=0 + fi fi } From 68a9b88b58ebbe59870f7316f64d386d94529ccd Mon Sep 17 00:00:00 2001 From: Jacob Salmela Date: Sun, 14 Feb 2016 10:20:02 -0600 Subject: [PATCH 091/100] docker container for Pi-hole --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7e938834..207375f2 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ Once installed, [configure your router to have **DHCP clients use the Pi as thei [![Pi-hole exlplained](http://i.imgur.com/qNybJDX.png)](https://vimeo.com/135965232) ## Pi-hole Projects +- [x86 Docker container that runs Pi-hole](https://hub.docker.com/r/diginc/pi-hole/) - [Pi-hole Chrome extension](https://chrome.google.com/webstore/detail/pi-hole-list-editor/hlnoeoejkllgkjbnnnhfolapllcnaglh) ([open source](https://github.com/packtloss/pihole-extension)) - [Go Bananas for CHiP-hole ad blocking](https://www.hackster.io/jacobsalmela/chip-hole-network-wide-ad-blocker-98e037) - [Sky-Hole](http://dlaa.me/blog/post/skyhole) From 3a887af513295a03d754edfe13e5070c400e01e1 Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Sun, 14 Feb 2016 22:24:21 +0000 Subject: [PATCH 092/100] Addresses #313 path to white and blacklist scripts moved to variables and updated to include full path --- gravity.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gravity.sh b/gravity.sh index 948c06f3..6e620d4d 100755 --- a/gravity.sh +++ b/gravity.sh @@ -31,6 +31,8 @@ piholeIPv6file=/etc/pihole/.useIPv6 adListFile=/etc/pihole/adlists.list adListDefault=/etc/pihole/adlists.default +whitelistScript=/usr/local/bin/whitelist.sh +blacklistScript=/usr/local/bin/blacklist.sh if [[ -f $piholeIPfile ]];then # If the file exists, it means it was exported from the installation script and we should use that value instead of detecting it in this script @@ -220,7 +222,7 @@ function gravity_Schwarzchild() { function gravity_Blacklist(){ # Append blacklist entries if they exist echo -n "::: Running blacklist script to update HOSTS file...." - blacklist.sh -f -nr -q > /dev/null & spinner $! + $blacklistScript -f -nr -q > /dev/null & spinner $! numBlacklisted=$(wc -l < "/etc/pihole/blacklist.txt") plural=; [[ "$numBlacklisted" != "1" ]] && plural=s @@ -245,7 +247,7 @@ function gravity_Whitelist() { echo " done!" echo -n "::: Running whitelist script to update HOSTS file...." - whitelist.sh -f -nr -q ${urls[@]} > /dev/null & spinner $! + $whitelistScript -f -nr -q ${urls[@]} > /dev/null & spinner $! numWhitelisted=$(wc -l < "/etc/pihole/whitelist.txt") plural=; [[ "$numWhitelisted" != "1" ]] && plural=s From f8897942f3e7e13335247af7a7ada666349a000f Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Mon, 15 Feb 2016 19:26:39 +0000 Subject: [PATCH 093/100] Update adlists.default Remove 'securemecca.com` list, as they block other content, not just ads and malware. Pi-hole is about ad-blocking and privacy, not about censoring content. See :https://www.reddit.com/r/pihole/comments/45xuh8/slug/d00xg02 --- adlists.default | 2 -- 1 file changed, 2 deletions(-) diff --git a/adlists.default b/adlists.default index c2385f7e..b8932eb2 100644 --- a/adlists.default +++ b/adlists.default @@ -6,7 +6,6 @@ http://pgl.yoyo.org/adservers/serverlist.php? http://someonewhocares.org/hosts/hosts http://winhelp2002.mvps.org/hosts.txt http://mirror1.malwaredomains.com/files/justdomains -http://securemecca.com/Downloads/hosts.txt https://hosts.neocities.org/ http://sysctl.org/cameleon/hosts https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist @@ -14,4 +13,3 @@ https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt http://optimate.dl.sourceforge.net/project/adzhosts/HOSTS.txt https://raw.githubusercontent.com/quidsup/notrack/master/trackers.txt - From c4fc2e089d78daef76a10fb60eb10f568013b956 Mon Sep 17 00:00:00 2001 From: Mcat12 Date: Mon, 15 Feb 2016 17:36:59 -0500 Subject: [PATCH 094/100] Removed dead list Fixes #316 --- adlists.default | 1 - 1 file changed, 1 deletion(-) diff --git a/adlists.default b/adlists.default index b8932eb2..cf5ca45b 100644 --- a/adlists.default +++ b/adlists.default @@ -6,7 +6,6 @@ http://pgl.yoyo.org/adservers/serverlist.php? http://someonewhocares.org/hosts/hosts http://winhelp2002.mvps.org/hosts.txt http://mirror1.malwaredomains.com/files/justdomains -https://hosts.neocities.org/ http://sysctl.org/cameleon/hosts https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt From 9ad7c12710c75ca50b243585e8a2af5582e97edd Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Wed, 17 Feb 2016 22:15:33 +0000 Subject: [PATCH 095/100] Create PULL_REQUEST_TEMPLATE --- .github/PULL_REQUEST_TEMPLATE | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE diff --git a/.github/PULL_REQUEST_TEMPLATE b/.github/PULL_REQUEST_TEMPLATE new file mode 100644 index 00000000..1a2aa1ab --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE @@ -0,0 +1,6 @@ +Fixes #[issue number] . + +Changes proposed in this pull request: +- +- +- From 6581f119fd1fdf5328ab1f0e20d33fdd21803fed Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Wed, 17 Feb 2016 22:16:04 +0000 Subject: [PATCH 096/100] Update PULL_REQUEST_TEMPLATE --- .github/PULL_REQUEST_TEMPLATE | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/PULL_REQUEST_TEMPLATE b/.github/PULL_REQUEST_TEMPLATE index 1a2aa1ab..c9ec842a 100644 --- a/.github/PULL_REQUEST_TEMPLATE +++ b/.github/PULL_REQUEST_TEMPLATE @@ -4,3 +4,5 @@ Changes proposed in this pull request: - - - + +@pihole/gravity From b1515c5e3fa679edbe4fe77b410baafde073757c Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Wed, 17 Feb 2016 22:17:20 +0000 Subject: [PATCH 097/100] Rename PULL_REQUEST_TEMPLATE to PULL_REQUEST_TEMPLATE.md --- .github/{PULL_REQUEST_TEMPLATE => PULL_REQUEST_TEMPLATE.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/{PULL_REQUEST_TEMPLATE => PULL_REQUEST_TEMPLATE.md} (100%) diff --git a/.github/PULL_REQUEST_TEMPLATE b/.github/PULL_REQUEST_TEMPLATE.md similarity index 100% rename from .github/PULL_REQUEST_TEMPLATE rename to .github/PULL_REQUEST_TEMPLATE.md From 6530ec58c7ae117e722ea9c03efcd1c27ba7863e Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Wed, 17 Feb 2016 22:18:43 +0000 Subject: [PATCH 098/100] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index c9ec842a..8b924ac2 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,8 +1,12 @@ Fixes #[issue number] . -Changes proposed in this pull request: -- -- + +#####Changes proposed in this pull request: + - +- + +- + @pihole/gravity From 950480bb776f73fd731ece61dd12c02d40e3d166 Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Wed, 17 Feb 2016 22:20:01 +0000 Subject: [PATCH 099/100] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 8b924ac2..071fdf89 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,9 +1,8 @@ Fixes #[issue number] . +Changes proposed in this pull request: -#####Changes proposed in this pull request: - -- +- - From 5f9e5869e94048488118aaae89c3a37b8a09306b Mon Sep 17 00:00:00 2001 From: Adam Warner Date: Wed, 17 Feb 2016 22:23:01 +0000 Subject: [PATCH 100/100] Create ISSUE_TEMPLATE.md --- .github/ISSUE_TEMPLATE.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 00000000..04303614 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,7 @@ +##### Expected Behaviour: + + +##### Actual Behaviour: + + +##### Steps to reproduce this issue: