From b005da395f21ffdabd3459867b28621a0d778039 Mon Sep 17 00:00:00 2001 From: Jacob Salmela Date: Sun, 15 Nov 2015 20:54:15 -0600 Subject: [PATCH 1/5] Updated install instructions Also a screenshot of the dialog-based installer --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 09b8852..3e02f0d 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,11 @@ # Automated Install 1. Install Raspbian -2. Set a **static** IP address -3. Run the command below +2. Run the command below -```curl -L install.pi-hole.net | bash``` +### ```curl -L install.pi-hole.net | bash``` + +![Pi-hole automated installation](http://i.imgur.com/Un7lBlj.png) Once installed, **configure any device to use the Raspberry Pi as its DNS server and the ads will be blocked**. You can also configure your router's DHCP options to assign the Pi as clients DNS server so they do not need to do it manually. From 1578a28363ec2bef64556b46427e04ea21b6f7bf Mon Sep 17 00:00:00 2001 From: Jacob Salmela Date: Thu, 19 Nov 2015 19:36:34 -0600 Subject: [PATCH 2/5] pihole in the cloud link --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3e02f0d..258168c 100644 --- a/README.md +++ b/README.md @@ -63,5 +63,6 @@ This script will work for other UNIX-like systems with some slight **modificatio ### Examples Of The Pi-hole On Other Operating Systems - [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/) [![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif "AdminLTE Presentation")](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3J2L3Z4DHW9UY "Donate") From d0e9e90ebeaf4638231d78470dd638d38542a0ac Mon Sep 17 00:00:00 2001 From: Cole Turner Date: Fri, 20 Nov 2015 22:53:43 -0500 Subject: [PATCH 3/5] pinholeIP should only use one IP Updated piholeIP because if there are multiple network adapters, the gravity list will populate incorrectly with both IP addresses. Only one address should be used. --- gravity.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gravity.sh b/gravity.sh index c6405c7..c2d1ff9 100755 --- a/gravity.sh +++ b/gravity.sh @@ -8,7 +8,7 @@ if [[ -f $piholeIPfile ]];then rm $piholeIPfile else # Otherwise, the IP address can be taken directly from the machine, which will happen when the script is run by the user and not the installation script - piholeIP=$(ip -4 addr show | awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); ip = substr($0,RSTART,RLENGTH); print ip}' | sed '/^\s*$/d' | grep -v "127.0.0.1") + piholeIP=$(ip -4 addr show | awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); ip = substr($0,RSTART,RLENGTH); print ip}' | sed '/^\s*$/d' | grep -v "127.0.0.1" | (head -n1)) fi # Ad-list sources--one per line in single quotes From 4e50a03dfc6169bf691fae25f61e9fc3365272b3 Mon Sep 17 00:00:00 2001 From: Jacob Salmela Date: Sat, 21 Nov 2015 13:29:03 -0600 Subject: [PATCH 4/5] uninstall script This should remove the Pi-hole. --- automated install/uninstall.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 automated install/uninstall.sh diff --git a/automated install/uninstall.sh b/automated install/uninstall.sh new file mode 100644 index 0000000..b0dd336 --- /dev/null +++ b/automated install/uninstall.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# Completely uninstalls the Pi-hole + +######### SCRIPT ########### +sudo apt-get -y remove --purge dnsutils bc toilet +sudo apt-get -y remove --purge dnsmasq +sudo apt-get -y remove --purge lighttpd php5-common php5-cgi php5 +sudo rm -rf /var/www/html +sudo rm /etc/dnsmasq.conf /etc/dnsmasq.conf.orig +sudo rm /etc/crontab +sudo mv /etc/crontab.orig /etc/crontab +sudo rm /etc/dnsmasq.conf +sudo rm -rf /etc/lighttpd/ +sudo rm /var/log/pihole.log +sudo rm /usr/local/bin/gravity.sh +sudo rm /usr/local/bin/chronometer.sh +sudo rm /usr/local/bin/whitelist.sh +sudo rm /usr/local/bin/piholeLogFlush.sh +sudo rm -rf /etc/pihole/ From 21ee63b7fb77da949eca5aca710afade971a0236 Mon Sep 17 00:00:00 2001 From: Dan Schaper Date: Wed, 25 Nov 2015 14:08:13 -0800 Subject: [PATCH 5/5] Get IP info from outgoing interface Use IP to get interface information from outgoing interface. Use CIDR notation to make things easier. --- automated install/basic-install.sh | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index f0a7d13..f2a98fb 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Pi-hole: A black hole for Internet advertisements # by Jacob Salmela # Network-wide ad blocking via your Raspberry Pi @@ -24,9 +24,11 @@ columns=$(stty -a | tr \; \\012 | egrep 'columns' | cut -d' ' -f3) r=$(( rows / 2 )) c=$(( columns / 2 )) -IPv4addr=$(ip -4 addr show | awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); ip = substr($0,RSTART,RLENGTH); print ip}' | sed '/^\s*$/d' | grep -v "127.0.0.1") -IPv4mask=$(ifconfig | awk -F':' '/inet addr/ && !/127.0.0.1/ {print $4}') -IPv4gw=$(ip route show | awk '/default\ via/ {print $3}') +# Find IP used to route to outside world +IPv4info=$(ip route get 8.8.8.8) +IPv4dev=$(echo $IPv4info| awk '{print $5}') +IPv4addr=$(ip -o -f inet addr show dev $IPv4dev | awk '{print $4}') +IPv4gw=$(echo $IPv4info | awk '{print $3}') # IPv6 support to be added later #IPv6eui64=$(ip addr show | awk '/scope\ global/ && /ff:fe/ {print $2}' | cut -d'/' -f1) @@ -117,7 +119,6 @@ getStaticIPv4Settings() 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 - Subnet mask: $IPv4mask 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. @@ -138,22 +139,17 @@ else 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 subnet mask - IPv4mask=$(whiptail --backtitle "Calibrating network interface" --title "IPv4 netmask" --inputbox "Enter your desired IPv4 subnet mask" $r $c $IPv4mask 3>&1 1>&2 2>&3) - if [[ $? = 0 ]];then - echo "Your static IPv4 netmask: $IPv4mask" - # Ask for the gateway + # 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 - Subnet mask: $IPv4mask 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 ${IPv4addr%/*} > /tmp/piholeIP # After that's done, the loop ends and we move on ipSettingsCorrect=True else @@ -167,12 +163,6 @@ else exit fi else - # Cancelling subnet mask settings window - ipSettingsCorrect=False - echo "User canceled." - exit - fi - else # Cancelling IPv4 settings window ipSettingsCorrect=False echo "User canceled." @@ -188,7 +178,7 @@ setStaticIPv4() { # Append these lines to /etc/dhcpcd.conf to enable a static IP echo "interface $piholeInterface -static ip_address=$IPv4addr/24 +static ip_address=$IPv4addr static routers=$IPv4gw static domain_name_servers=$IPv4gw" | sudo tee -a $dhcpcdFile >/dev/null }