diff --git a/advanced/pihole.vars b/advanced/pihole.vars new file mode 100644 index 00000000..4b8f8726 --- /dev/null +++ b/advanced/pihole.vars @@ -0,0 +1,121 @@ +#!/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 +# Exports variables for use with 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. + +# First check if the user running the script is root. +# If they are, they have root access and the SUDO variable will be set to nothing +if [[ $EUID -eq 0 ]];then + echo "You are root." +else + # sudo will be used during install and to restart services in gravity.sh + export SUDO="sudo" +fi + +# Find the rows and columns +rows=$(tput lines) +columns=$(tput cols) + +# Divide by two so the dialogs take up half of the screen, which looks nice. +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}') + +# System files +export dnsmsqConfDir=/etc/dnsmasq.d +export lighttpConfDir=/etc/lighttpd +export cronFolder=/etc/cron.d +export dhcpcdFile=/etc/dhcpcd.conf +export dnsmasqConfigFile=$dnsmsqConfDir/01-pihole.conf +export lighttpdConfigFile=$lighttpConfDir/lighttpd.conf +export webRootDir=/var/www/html +export webRootPiholeDir=$webRootDir/pihole +export webRootAdminDir=$webRootDir/admin +export piholeIndexHtmlFile=$webRootPiholeDir/index.html +export adminIndexPhpFile=$webRootAdminDir/index.php +export logDir=/var/log +export webAccessLog=$logDir/lighttpd/access.log +export webErrorLog=$logDir/lighttpd/error.log +export piholeLog=$logDir/pihole.log + +# Local Pi-hole directory +export basename=pihole +export piholeDir=/usr/local/etc/$basename +export piholeGitDir=/usr/local/etc/.$basename + +# Scripts +export scriptDir=/usr/local/bin +export gravityScript=$scriptDir/gravity.sh +export chronometerScript=$scriptDir/chronometer.sh +export piholeLogFlushScript=$scriptDir/piholeLogFlush.sh +export blacklistScript=$scriptDir/blacklist.sh +export whitelistScript=$scriptDir/whitelist.sh +export piholeCron=$cronFolder/pihole + +# Variables for various stages of downloading and formatting the list +export tmpLocation=/tmp +export adListFile=$piholeDir/adlists.list +export adListDefault=$piholeDir/gravity.list +export blacklist=$piholeDir/blacklist.txt +export whitelist=$piholeDir/whitelist.txt +export latentWhitelist=$piholeDir/latentWhitelist.txt +export justDomainsExtension=domains +export matter=$basename.0.matterandlight.txt +export supernova=$basename.1.supernova.txt +export eventHorizon=$basename.2.eventHorizon.txt +export accretionDisc=$basename.3.accretionDisc.txt +export tmpInstallLog=$tmpLocation/pihole-install.log +export instalLogLoc=$piholeDir/install.log + +# These files are empty but checked for existence +export piholeInterfaceFile=$tmpLocation/.piholeInterface +export piholeIPv4static=$tmpLocation/.useIPv4 +export piholeIPv4file=$piholeDir/.useIPv4 +export piholeIPv6file=$piholeDir/.useIPv6 + +# This is checked during the initial install +if [[ -f $piholeIPv4static ]];then + # If the tmp file exists, it means it was created from the installation script and we should use that value instead of detecting it in this script + # This is because the installer asks to set a static IP address + # The file can be removed because once the address is set, it won't change + # But then make an invisible file to be contigious with IPv6 + export piholeIPv4=$(cat $piholeIPv4static) + rm -f $piholeIPv4static + $SUDO touch $piholeIPv4file +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 + export IPv4dev=$(ip route get 8.8.8.8 | awk '{for(i=1;i<=NF;i++)if($i~/dev/)print $(i+1)}') + export piholeIPv4CIDR=$(ip -o -f inet addr show dev $IPv4dev | awk '{print $4}' | awk 'END {print}') + export piholeIPv4=${piholeIPv4CIDR%/*} +fi + +if [[ -f $piholeIPv6file ]];then + # If the file exists, then the user previously chose to use IPv6 in the automated installer + export piholeIPv6=$(ip -6 route get 2001:4860:4860::8888 | awk -F " " '{ for(i=1;i<=NF;i++) if ($i == "src") print $(i+1) }') +fi + +# This is used in more than one script, so just make it a function so we don't repeat code +reloadHostsFile(){ +dnsmasqPid=$(pidof dnsmasq) + +if [[ $dnsmasqPid ]]; then + # The service already running - reload config + $SUDO kill -HUP $dnsmasqPid +else + # The service is not running so start it up + $SUDO service dnsmasq start +fi +} + +echo "Variables have been sourced."