From dde92811399d6e6a0a5f8180461aaca5632917c9 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Mon, 12 Sep 2016 18:12:31 +0100 Subject: [PATCH 1/8] Only pull master branch, the rest aren't needed! --- pihole | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pihole b/pihole index bd948b55..d6da8366 100755 --- a/pihole +++ b/pihole @@ -55,7 +55,7 @@ function updateDashboardFunc { function updatePiholeFunc { echo "::: Fetching latest changes from Github..." cd /etc/.pihole - ${SUDO} git pull + ${SUDO} git pull origin master ${SUDO} /etc/.pihole/automated\ install/basic-install.sh pihole exit 1 } From 0229f7076176e777dbba05681fbcd2200280697c Mon Sep 17 00:00:00 2001 From: Promofaux Date: Mon, 12 Sep 2016 18:29:04 +0100 Subject: [PATCH 2/8] Make updatePiholeFunc a bit smarter. Only run update if version is not the latest. --- pihole | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/pihole b/pihole index d6da8366..f23db60e 100755 --- a/pihole +++ b/pihole @@ -53,10 +53,26 @@ function updateDashboardFunc { } function updatePiholeFunc { - echo "::: Fetching latest changes from Github..." - cd /etc/.pihole - ${SUDO} git pull origin master - ${SUDO} /etc/.pihole/automated\ install/basic-install.sh pihole + echo "::: Checking for updates..." + piholeVersion=$(cd /etc/.pihole/ && git describe --tags --abbrev=0) + piholeVersionLatest=$(curl -s https://api.github.com/repos/pi-hole/pi-hole/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | perl -pe 's/"tag_name": "//; s/^"//; s/",$//') + + if [[ ${piholeVersion} == ${piholeVersionLatest} ]] ; then + echo "::: Pi-hole is already up to date! Version: ${piholeVersion}" + echo ":::" + echo "::: No need to update!" + else + echo "::: An update is available! Current Version: ${piholeVersion}" + echo "::: Latest Version: ${piholeVersionLatest}" + echo ":::" + echo "::: Fetching latest changes from Github..." + cd /etc/.pihole + ${SUDO} git pull origin master + ${SUDO} /etc/.pihole/automated\ install/basic-install.sh pihole + echo ":::" + echo "::: Pi-hole has been updated, see https://changes.pi-hole.net for details" + fi + exit 1 } From d124c2c12e78426a823a430eaff4fdcd641ac8a7 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Mon, 12 Sep 2016 18:57:19 +0100 Subject: [PATCH 3/8] Expand to check web admin versions --- pihole | 45 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/pihole b/pihole index f23db60e..e6f6e292 100755 --- a/pihole +++ b/pihole @@ -57,20 +57,51 @@ function updatePiholeFunc { piholeVersion=$(cd /etc/.pihole/ && git describe --tags --abbrev=0) piholeVersionLatest=$(curl -s https://api.github.com/repos/pi-hole/pi-hole/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | perl -pe 's/"tag_name": "//; s/^"//; s/",$//') + webVersion=$(cd /var/www/html/admin/ && git describe --tags --abbrev=0) + webVersionLatest=$(curl -s https://api.github.com/repos/pi-hole/AdminLTE/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | perl -pe 's/"tag_name": "//; s/^"//; s/",$//') + + echo "::: Pi-hole version is $piholeVersion (Latest version is $piholeVersionLatest)" + echo "::: Web Admin version is $webVersion (Latest version is $webVersionLatest)" + if [[ ${piholeVersion} == ${piholeVersionLatest} ]] ; then - echo "::: Pi-hole is already up to date! Version: ${piholeVersion}" - echo ":::" + echo "::: Pi-hole Base files are already up to date! Version: ${piholeVersionLatest}" echo "::: No need to update!" - else - echo "::: An update is available! Current Version: ${piholeVersion}" - echo "::: Latest Version: ${piholeVersionLatest}" echo ":::" - echo "::: Fetching latest changes from Github..." + + if [[ ${webVersion} == ${webVersionLatest} ]] ; then + echo "::: Web Admin files are already up to date!" + echo "::: No need to update!" + echo ":::" + else + echo "::: An Update is available for the Web Admin!" + echo ":::" + echo "::: Fetching latest changes from GitHub..." + cd /var/www/html/admin + ${SUDO} git pull origin master + echo ":::" + echo "::: Pi-hole Web Admin has been updated to ${webVersion}" + echo "::: See https://changes.pi-hole.net for details" + fi + else + echo -n "::: An update is available for " + if [[ ${webVersion} == ${webVersionLatest} ]] ; then + echo " Pi-Hole!" + else + echo " Pi-Hole base files and the Web Admin. Both will be updated!" + fi + + echo "::: Fetching latest changes from GitHub..." cd /etc/.pihole ${SUDO} git pull origin master ${SUDO} /etc/.pihole/automated\ install/basic-install.sh pihole + echo ":::" - echo "::: Pi-hole has been updated, see https://changes.pi-hole.net for details" + echo "::: Pi-hole has been updated to version ${piholeVersionLatest}" + if [[ ${webVersion} != ${webVersionLatest} ]] ; then + echo "::: Web Admin has been updated to version ${webVersionLatest}" + fi + echo ":::" + echo "::: See https://changes.pi-hole.net for details" fi exit 1 From d58f7c6ec92a95903e5464420df30b9100633602 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Mon, 12 Sep 2016 19:08:33 +0100 Subject: [PATCH 4/8] Remove references to dashboard update Script --- pihole | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/pihole b/pihole index e6f6e292..8fc98f51 100755 --- a/pihole +++ b/pihole @@ -47,10 +47,6 @@ function flushFunc { exit 1 } -function updateDashboardFunc { - ${SUDO} /opt/pihole/updateDashboard.sh - exit 1 -} function updatePiholeFunc { echo "::: Checking for updates..." @@ -159,8 +155,7 @@ function helpFunc { echo "::: -b, blacklist Blacklist domains" echo "::: -d, debug Start a debugging session if having trouble" echo "::: -f, flush Flush the pihole.log file" - echo "::: -ud, updateDashboard Update the web dashboard manually" - echo "::: -up, updatePihole Update Pi-hole" + echo "::: -up, updatePihole Update Pi-hole" echo "::: -g, updateGravity Update the list of ad-serving domains" echo "::: -s, setupLCD Automatically configures the Pi to use the 2.8 LCD screen to display stats on it" echo "::: -c, chronometer Calculates stats and displays to an LCD" @@ -181,7 +176,6 @@ case "$1" in "-b" | "blacklist" ) blacklistFunc "$@";; "-d" | "debug" ) debugFunc;; "-f" | "flush" ) flushFunc;; -"-ud" | "updateDashboard" ) updateDashboardFunc;; "-up" | "updatePihole" ) updatePiholeFunc;; "-g" | "updateGravity" ) updateGravityFunc "$@";; "-s" | "setupLCD" ) setupLCDFunction;; From a3ef9efd2f6ecc65d41aed11d81b88c86a8d6c52 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Mon, 12 Sep 2016 19:09:19 +0100 Subject: [PATCH 5/8] remove updateDashboard script --- advanced/Scripts/updateDashboard.sh | 69 ----------------------------- 1 file changed, 69 deletions(-) delete mode 100755 advanced/Scripts/updateDashboard.sh diff --git a/advanced/Scripts/updateDashboard.sh b/advanced/Scripts/updateDashboard.sh deleted file mode 100755 index 991089c2..00000000 --- a/advanced/Scripts/updateDashboard.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/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 -# -# 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" - -main() { - prerequisites - if ! is_repo; then - make_repo - fi - update_repo -} - -prerequisites() { - - # must be root to update - if [[ $EUID -ne 0 ]]; then - sudo bash "$0" "$@" - exit $? - fi - - # web interface must already exist. this is a (lazy) - # check to make sure pihole is actually installed. - if [ ! -d "$WEB_INTERFACE_DIR" ]; then - echo "$WEB_INTERFACE_DIR not found. Exiting." - exit 1 - fi - - if ! type "git" > /dev/null; then - apt-get -y install git - fi -} - -is_repo() { - # if the web interface directory does not have a .git folder - # it means its using the master.zip archive from the install - # script. - if [ ! -d "$WEB_INTERFACE_DIR/.git" ]; then - return 1 - fi - return 0 -} - -# removes the web interface installed from the master.zip archive and -# replaces it with the current master branch from github -make_repo() { - # remove the non-repod interface and clone the interface - rm -rf ${WEB_INTERFACE_DIR} - git clone "$WEB_INTERFACE_GIT_URL" "$WEB_INTERFACE_DIR" -} - -# pulls the latest master branch from github -update_repo() { - # pull the latest commits - cd "$WEB_INTERFACE_DIR" - git pull -} - -main From a0977af0818d9e27f49a4a38abfcb01de6d4e7a2 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Mon, 12 Sep 2016 19:10:12 +0100 Subject: [PATCH 6/8] remove references to UpdateDashboard.sh --- 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 97171c31..0df28498 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -543,11 +543,10 @@ installScripts() { ${SUDO} cp /etc/.pihole/advanced/Scripts/blacklist.sh /opt/pihole/blacklist.sh ${SUDO} cp /etc/.pihole/advanced/Scripts/piholeDebug.sh /opt/pihole/piholeDebug.sh ${SUDO} cp /etc/.pihole/advanced/Scripts/piholeLogFlush.sh /opt/pihole/piholeLogFlush.sh - ${SUDO} cp /etc/.pihole/advanced/Scripts/updateDashboard.sh /opt/pihole/updateDashboard.sh ${SUDO} cp /etc/.pihole/automated\ install/uninstall.sh /opt/pihole/uninstall.sh ${SUDO} cp /etc/.pihole/advanced/Scripts/setupLCD.sh /opt/pihole/setupLCD.sh ${SUDO} cp /etc/.pihole/advanced/Scripts/version.sh /opt/pihole/version.sh - ${SUDO} chmod 755 /opt/pihole/gravity.sh /opt/pihole/chronometer.sh /opt/pihole/whitelist.sh /opt/pihole/blacklist.sh /opt/pihole/piholeLogFlush.sh /opt/pihole/updateDashboard.sh /opt/pihole/uninstall.sh /opt/pihole/setupLCD.sh /opt/pihole/version.sh + ${SUDO} chmod 755 /opt/pihole/gravity.sh /opt/pihole/chronometer.sh /opt/pihole/whitelist.sh /opt/pihole/blacklist.sh /opt/pihole/piholeLogFlush.sh /opt/pihole/uninstall.sh /opt/pihole/setupLCD.sh /opt/pihole/version.sh ${SUDO} cp /etc/.pihole/pihole /usr/local/bin/pihole ${SUDO} chmod 755 /usr/local/bin/pihole ${SUDO} cp /etc/.pihole/advanced/bash-completion/pihole /etc/bash_completion.d/pihole From ec0c68621c1d0f991c9176a967c9bfa8b86d2665 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Mon, 12 Sep 2016 19:40:34 +0100 Subject: [PATCH 7/8] add blank line after Current version display --- pihole | 1 + 1 file changed, 1 insertion(+) diff --git a/pihole b/pihole index 8fc98f51..00e4a7bf 100755 --- a/pihole +++ b/pihole @@ -58,6 +58,7 @@ function updatePiholeFunc { echo "::: Pi-hole version is $piholeVersion (Latest version is $piholeVersionLatest)" echo "::: Web Admin version is $webVersion (Latest version is $webVersionLatest)" + echo ":::" if [[ ${piholeVersion} == ${piholeVersionLatest} ]] ; then echo "::: Pi-hole Base files are already up to date! Version: ${piholeVersionLatest}" From 3d5140458bde33fff9d9b89ffd94ccedf2cb51b1 Mon Sep 17 00:00:00 2001 From: Promofaux Date: Mon, 19 Sep 2016 20:43:04 +0100 Subject: [PATCH 8/8] Change cron job --- advanced/pihole.cron | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/advanced/pihole.cron b/advanced/pihole.cron index d4ec56a7..2d06fbbc 100644 --- a/advanced/pihole.cron +++ b/advanced/pihole.cron @@ -13,9 +13,8 @@ # Download any updates from the adlists 59 1 * * 7 root /usr/local/bin/pihole updateGravity -# Pi-hole: Update the Web interface shortly after gravity runs -# This should also update the version number if it is changed in the dashboard repo -30 2 * * 7 root /usr/local/bin/pihole updateDashboard +# Pi-hole: Update Pi-hole! Uncomment to enable auto update +#30 2 * * 7 root /usr/local/bin/pihole updatePihole # Pi-hole: Parse the log file before it is flushed and save the stats to a database # This will be used for a historical view of your Pi-hole's performance