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 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 diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh index 3c86dd5a..a19b465a 100755 --- a/automated install/basic-install.sh +++ b/automated install/basic-install.sh @@ -527,11 +527,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 diff --git a/pihole b/pihole index bd948b55..00e4a7bf 100755 --- a/pihole +++ b/pihole @@ -47,16 +47,60 @@ function flushFunc { exit 1 } -function updateDashboardFunc { - ${SUDO} /opt/pihole/updateDashboard.sh - exit 1 -} function updatePiholeFunc { - echo "::: Fetching latest changes from Github..." - cd /etc/.pihole - ${SUDO} git pull - ${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/",$//') + + 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)" + echo ":::" + + if [[ ${piholeVersion} == ${piholeVersionLatest} ]] ; then + echo "::: Pi-hole Base files are already up to date! Version: ${piholeVersionLatest}" + echo "::: No need to update!" + echo ":::" + + 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 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 } @@ -112,8 +156,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" @@ -134,7 +177,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;;