From bc51f88805a12c85e1b3e27ea42d3016ae16f4bc Mon Sep 17 00:00:00 2001 From: Promofaux Date: Tue, 19 Jan 2016 22:52:29 +0000 Subject: [PATCH 1/7] Check if any list.* files exist from previous installation, if they do delete them. --- automated install/basic-install.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 82cfbf96..aa56b45d 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -271,6 +271,15 @@ installCron(){ $SUDO curl -o /etc/cron.d/pihole https://raw.githubusercontent.com/jacobsalmela/pi-hole/master/advanced/pihole.cron } +tidyEtcPihole() +{ +if ls /etc/pihole/list* 1> /dev/null 2>&1; then + echo "Cleaning up previous install" + $SUDO rm /etc/pihole/list.* +fi + +} + installPihole() { installDependencies @@ -284,6 +293,7 @@ installConfigs installWebAdmin installPiholeWeb installCron +tidyEtcPihole $SUDO /usr/local/bin/gravity.sh } From ede8f4714f07d77e2a44038bf16bdd6dd1d19414 Mon Sep 17 00:00:00 2001 From: Mcat12 Date: Sun, 17 Jan 2016 19:52:59 -0500 Subject: [PATCH 2/7] Removed extra http redirect --- advanced/lighttpd.conf | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/advanced/lighttpd.conf b/advanced/lighttpd.conf index 3998269a..933983b6 100644 --- a/advanced/lighttpd.conf +++ b/advanced/lighttpd.conf @@ -37,15 +37,3 @@ $HTTP["url"] =~ "^/admin/" { # Create a response header for debugging using curl -I setenv.add-response-header = ( "X-Pi-hole" => "The Pi-hole Web interface is working!" ) } - -# If the URL does not start with /admin, then it is a query for an ad domain -$HTTP["url"] =~ "^(?!/admin)/.*" { - # Create a response header for debugging using curl -I - setenv.add-response-header = ( "X-Pi-hole" => "A black hole for Internet advertisements." ) - - # Set the cache to 1 day for better performance - expire.url = ("" => "access plus 1 days") - - # Send the query into the black hole - url.rewrite = (".*" => "pihole/index.html" ) -} From 544919175ca3e2de31234ebe957d7a57f205e57e Mon Sep 17 00:00:00 2001 From: Mcat12 Date: Sun, 17 Jan 2016 20:36:59 -0500 Subject: [PATCH 3/7] Added back in debugging response header --- advanced/lighttpd.conf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/advanced/lighttpd.conf b/advanced/lighttpd.conf index 933983b6..6b33fa50 100644 --- a/advanced/lighttpd.conf +++ b/advanced/lighttpd.conf @@ -37,3 +37,9 @@ $HTTP["url"] =~ "^/admin/" { # Create a response header for debugging using curl -I setenv.add-response-header = ( "X-Pi-hole" => "The Pi-hole Web interface is working!" ) } + +# If the URL does not start with /admin, then it is a query for an ad domain +$HTTP["url"] =~ "^(?!/admin)/.*" { + # Create a response header for debugging using curl -I + setenv.add-response-header = ( "X-Pi-hole" => "A black hole for Internet advertisements." ) +} From 4f59577fd177333e86a9e30815556910a7e8f48f Mon Sep 17 00:00:00 2001 From: Promofaux Date: Wed, 20 Jan 2016 21:20:52 +0000 Subject: [PATCH 4/7] Remove SUDO from line that runs gravity.sh to stop files in /etc/pihole being owned by root --- 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 aa56b45d..fb47bd10 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -294,7 +294,7 @@ installWebAdmin installPiholeWeb installCron tidyEtcPihole -$SUDO /usr/local/bin/gravity.sh +/usr/local/bin/gravity.sh } displayFinalMessage(){ From 96011bc2ae615a6c8b947e9c6111443e110ebafc Mon Sep 17 00:00:00 2001 From: Promofaux Date: Wed, 20 Jan 2016 22:02:54 +0000 Subject: [PATCH 5/7] make InstallWebAdmin() a bit more intelligent, and less verbose. Checks if installing over an existing installation, and if so, will remove existing webadmin folder. --- automated install/basic-install.sh | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index fb47bd10..e2a7fdd4 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -252,13 +252,29 @@ $SUDO apt-get -y install git } installWebAdmin(){ -$SUDO wget https://github.com/jacobsalmela/AdminLTE/archive/master.zip -O /var/www/master.zip +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 echo ":::Downloading and installing latest WebAdmin files..." +$SUDO wget -nv https://github.com/jacobsalmela/AdminLTE/archive/master.zip -O /var/www/master.zip $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 touch /var/log/pihole.log -$SUDO chmod 644 /var/log/pihole.log -$SUDO chown dnsmasq:root /var/log/pihole.log +$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 + $SUDO echo ":::...Done." +else + $SUDO echo ":::No need to create, already exists!" +fi + } installPiholeWeb(){ From 5c25c42da8cba64c666bfe83e06da1ee46db1ab4 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Wed, 20 Jan 2016 22:14:17 +0000 Subject: [PATCH 6/7] Make installPiholeWeb() more inteliigent. Checks for existence of /var/www/html/pihole, and only downloads from repo if it does not exist. Will stop install script from overwriting any tweaks users have made to index.html --- automated install/basic-install.sh | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index e2a7fdd4..1448afda 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -252,35 +252,41 @@ $SUDO apt-get -y install git } installWebAdmin(){ +$SUDO echo " " 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 echo ":::Downloading and installing latest WebAdmin files..." +$SUDO echo "::: Downloading and installing latest WebAdmin files..." $SUDO wget -nv https://github.com/jacobsalmela/AdminLTE/archive/master.zip -O /var/www/master.zip $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 "::: ...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 - $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 + $SUDO echo "::: ...Done." else - $SUDO echo ":::No need to create, already exists!" + $SUDO echo "::: No need to create, already exists!" fi } installPiholeWeb(){ -$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 echo " " +if [ -d "/var/www/html/pihole" ]; then + $SUDO echo "::: Existing pihole custom 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 } installCron(){ From 3f40a95929a14389efcaf7ba3f1c8d293e0200f2 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Wed, 20 Jan 2016 23:34:18 +0000 Subject: [PATCH 7/7] Whoops, should probably commit more often. Massive overhaul. Cleaned up output, less verbose (will still output errors, but gets rid of anything not needed) Added a spinner so users don't think it has stalled --- automated install/basic-install.sh | 148 +++++++++++++++++++---------- 1 file changed, 98 insertions(+), 50 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 1448afda..25fe1a99 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -21,13 +21,13 @@ if [[ $EUID -eq 0 ]];then echo "You are root." else - echo "sudo will be used for the install." + 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." + echo "::: Please install sudo or run this as root." exit 1 fi fi @@ -53,6 +53,23 @@ availableInterfaces=$(ip -o link | awk '{print $2}' | grep -v "lo" | cut -d':' - dhcpcdFile=/etc/dhcpcd.conf ####### FUCNTIONS ########## +###All creddit 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" +} + + backupLegacyPihole() { if [[ -f /etc/dnsmasq.d/adList.conf ]];then @@ -106,7 +123,7 @@ chooseInterfaceOptions=$("${chooseInterfaceCmd[@]}" "${interfacesArray[@]}" 2>&1 for desiredInterface in $chooseInterfaceOptions do piholeInterface=$desiredInterface - echo "Using interface: $piholeInterface" + echo "::: Using interface: $piholeInterface" echo ${piholeInterface} > /tmp/piholeINT done } @@ -121,16 +138,34 @@ choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty) for choice in $choices do case $choice in - IPv4) - echo "IPv4 selected." - useIPv4=true - ;; - IPv6) - echo "IPv6 selected." - useIPv6=true - ;; + IPv4)useIPv4=true;; + IPv6)useIPv6=true;; esac -done +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() @@ -220,6 +255,9 @@ 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 @@ -227,40 +265,59 @@ $SUDO curl -o /usr/local/bin/blacklist.sh https://raw.githubusercontent.com/jaco $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." } stopServices(){ +$SUDO echo " " +$SUDO echo "::: Stopping services..." $SUDO service dnsmasq stop || true $SUDO service lighttpd stop || true +$SUDO echo "::: ...done." } installDependencies(){ -$SUDO apt-get update -$SUDO apt-get -y upgrade -$SUDO apt-get -y install dnsutils bc toilet figlet -$SUDO apt-get -y install dnsmasq -$SUDO apt-get -y install lighttpd php5-common php5-cgi php5 -$SUDO apt-get -y install git +$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 echo "::: Downloading and installing latest WebAdmin files..." -$SUDO wget -nv https://github.com/jacobsalmela/AdminLTE/archive/master.zip -O /var/www/master.zip +$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 @@ -270,38 +327,48 @@ $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 - $SUDO echo "::: ...Done." + $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 pihole custom page detected, not overwriting" -else + $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 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." } -tidyEtcPihole() +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" + 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." } + installPihole() { installDependencies @@ -315,8 +382,8 @@ installConfigs installWebAdmin installPiholeWeb installCron -tidyEtcPihole -/usr/local/bin/gravity.sh +runGravity + } displayFinalMessage(){ @@ -343,25 +410,6 @@ chooseInterface # Let the user decide if they want to block ads over IPv4 and/or IPv6 use4andor6 -# Decide is IPv4 will be used -if [[ "$useIPv4" = true ]];then - echo "Using IPv4" - getStaticIPv4Settings - setStaticIPv4 -else - useIPv4=false - echo "IPv4 will NOT be used." -fi - -# Decide is IPv6 will be used -if [[ "$useIPv6" = true ]];then - useIPv6dialog - echo "Using IPv6." - echo "Your IPv6 address is: $piholeIPv6" -else - useIPv6=false - echo "IPv6 will NOT be used." -fi # Install and log everything to a file installPihole | tee $tmpLog @@ -372,4 +420,4 @@ $SUDO mv $tmpLog $instalLogLoc displayFinalMessage $SUDO service dnsmasq start -$SUDO service lighttpd start +$SUDO service lighttpd start \ No newline at end of file