Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/pi-hole/pi-hole.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xadvanced/Scripts/piholeCheckout.sh13
-rwxr-xr-xadvanced/Scripts/update.sh3
-rwxr-xr-xadvanced/Scripts/updatecheck.sh110
-rwxr-xr-xadvanced/Scripts/version.sh210
-rw-r--r--advanced/Templates/pihole.cron6
-rwxr-xr-xautomated install/basic-install.sh3
6 files changed, 144 insertions, 201 deletions
diff --git a/advanced/Scripts/piholeCheckout.sh b/advanced/Scripts/piholeCheckout.sh
index 8c4c6db3..cf57800c 100755
--- a/advanced/Scripts/piholeCheckout.sh
+++ b/advanced/Scripts/piholeCheckout.sh
@@ -42,11 +42,6 @@ warning1() {
esac
}
-updateCheckFunc() {
- /opt/pihole/updatecheck.sh
- /opt/pihole/updatecheck.sh x remote
-}
-
checkout() {
local corebranches
local webbranches
@@ -169,8 +164,8 @@ checkout() {
exit 1
fi
checkout_pull_branch "${webInterfaceDir}" "${2}"
- # Force an update of the updatechecker
- updateCheckFunc
+ # Update local and remote versions via updatechecker
+ /opt/pihole/updatecheck.sh
elif [[ "${1}" == "ftl" ]] ; then
local path
local oldbranch
@@ -185,8 +180,8 @@ checkout() {
FTLinstall "${binary}"
restart_service pihole-FTL
enable_service pihole-FTL
- # Force an update of the updatechecker
- updateCheckFunc
+ # Update local and remote versions via updatechecker
+ /opt/pihole/updatecheck.sh
else
echo " ${CROSS} Requested branch \"${2}\" is not available"
ftlbranches=( $(git ls-remote https://github.com/pi-hole/ftl | grep 'heads' | sed 's/refs\/heads\///;s/ //g' | awk '{print $2}') )
diff --git a/advanced/Scripts/update.sh b/advanced/Scripts/update.sh
index 609a054b..c41c9232 100755
--- a/advanced/Scripts/update.sh
+++ b/advanced/Scripts/update.sh
@@ -216,9 +216,8 @@ main() {
fi
if [[ "${FTL_update}" == true || "${core_update}" == true || "${web_update}" == true ]]; then
- # Force an update of the updatechecker
+ # Update local and remote versions via updatechecker
/opt/pihole/updatecheck.sh
- /opt/pihole/updatecheck.sh x remote
echo -e " ${INFO} Local version file information updated."
fi
diff --git a/advanced/Scripts/updatecheck.sh b/advanced/Scripts/updatecheck.sh
index a9d7523e..938be6cd 100755
--- a/advanced/Scripts/updatecheck.sh
+++ b/advanced/Scripts/updatecheck.sh
@@ -15,16 +15,30 @@ function get_local_branch() {
}
function get_local_version() {
- # Return active branch
+ # Return active version
cd "${1}" 2> /dev/null || return 1
git describe --long --dirty --tags 2> /dev/null || return 1
}
+function get_local_hash() {
+ cd "${1}" 2> /dev/null || return 1
+ git rev-parse --short HEAD || return 1
+}
+
+function get_remote_version() {
+ curl -s "https://api.github.com/repos/pi-hole/${1}/releases/latest" 2> /dev/null | jq --raw-output .tag_name || return 1
+}
+
+
+function get_remote_hash(){
+ git ls-remote "https://github.com/pi-hole/${1}" --tags "${2}" | awk '{print substr($0, 0,9);}' || return 1
+}
+
# Source the setupvars config file
# shellcheck disable=SC1091
. /etc/pihole/setupVars.conf
-# Source the utils file
+# Source the utils file for addOrEditKeyValPair()
# shellcheck disable=SC1091
. /opt/pihole/utils.sh
@@ -46,54 +60,74 @@ if [[ ! "${DOCKER_TAG}" =~ $regex ]]; then
unset DOCKER_TAG
fi
-if [[ "$2" == "remote" ]]; then
-
- if [[ "$3" == "reboot" ]]; then
+# used in cronjob
+if [[ "$1" == "reboot" ]]; then
sleep 30
- fi
+fi
+
+
+# get Core versions
- GITHUB_CORE_VERSION="$(curl -s 'https://api.github.com/repos/pi-hole/pi-hole/releases/latest' 2> /dev/null | jq --raw-output .tag_name)"
- addOrEditKeyValPair "${VERSION_FILE}" "GITHUB_CORE_VERSION" "${GITHUB_CORE_VERSION}"
+CORE_VERSION="$(get_local_version /etc/.pihole)"
+addOrEditKeyValPair "${VERSION_FILE}" "CORE_VERSION" "${CORE_VERSION}"
- if [[ "${INSTALL_WEB_INTERFACE}" == true ]]; then
- GITHUB_WEB_VERSION="$(curl -s 'https://api.github.com/repos/pi-hole/AdminLTE/releases/latest' 2> /dev/null | jq --raw-output .tag_name)"
- addOrEditKeyValPair "${VERSION_FILE}" "GITHUB_WEB_VERSION" "${GITHUB_WEB_VERSION}"
- fi
+CORE_BRANCH="$(get_local_branch /etc/.pihole)"
+addOrEditKeyValPair "${VERSION_FILE}" "CORE_BRANCH" "${CORE_BRANCH}"
- GITHUB_FTL_VERSION="$(curl -s 'https://api.github.com/repos/pi-hole/FTL/releases/latest' 2> /dev/null | jq --raw-output .tag_name)"
- addOrEditKeyValPair "${VERSION_FILE}" "GITHUB_FTL_VERSION" "${GITHUB_FTL_VERSION}"
+CORE_HASH="$(get_local_hash /etc/.pihole)"
+addOrEditKeyValPair "${VERSION_FILE}" "CORE_HASH" "${CORE_HASH}"
+
+GITHUB_CORE_VERSION="$(get_remote_version pi-hole)"
+addOrEditKeyValPair "${VERSION_FILE}" "GITHUB_CORE_VERSION" "${GITHUB_CORE_VERSION}"
+
+GITHUB_CORE_HASH="$(get_remote_hash pi-hole "${CORE_BRANCH}")"
+addOrEditKeyValPair "${VERSION_FILE}" "GITHUB_CORE_HASH" "${GITHUB_CORE_HASH}"
+
+
+# get Web versions
+
+if [[ "${INSTALL_WEB_INTERFACE}" == true ]]; then
+
+ WEB_VERSION="$(get_local_version /var/www/html/admin)"
+ addOrEditKeyValPair "${VERSION_FILE}" "WEB_VERSION" "${WEB_VERSION}"
+
+ WEB_BRANCH="$(get_local_branch /var/www/html/admin)"
+ addOrEditKeyValPair "${VERSION_FILE}" "WEB_BRANCH" "${WEB_BRANCH}"
+
+ WEB_HASH="$(get_local_hash /var/www/html/admin)"
+ addOrEditKeyValPair "${VERSION_FILE}" "WEB_HASH" "${WEB_HASH}"
+
+ GITHUB_WEB_VERSION="$(get_remote_version AdminLTE)"
+ addOrEditKeyValPair "${VERSION_FILE}" "GITHUB_WEB_VERSION" "${GITHUB_WEB_VERSION}"
+
+ GITHUB_WEB_HASH="$(get_remote_hash AdminLTE "${WEB_BRANCH}")"
+ addOrEditKeyValPair "${VERSION_FILE}" "GITHUB_WEB_HASH" "${GITHUB_WEB_HASH}"
+
+fi
- if [[ "${DOCKER_TAG}" ]]; then
- GITHUB_DOCKER_VERSION="$(curl -s 'https://api.github.com/repos/pi-hole/docker-pi-hole/releases/latest' 2> /dev/null | jq --raw-output .tag_name)"
- addOrEditKeyValPair "${VERSION_FILE}" "GITHUB_DOCKER_VERSION" "${GITHUB_DOCKER_VERSION}"
- fi
+# get FTL versions
-else
+FTL_VERSION="$(pihole-FTL version)"
+addOrEditKeyValPair "${VERSION_FILE}" "FTL_VERSION" "${FTL_VERSION}"
- CORE_BRANCH="$(get_local_branch /etc/.pihole)"
- addOrEditKeyValPair "${VERSION_FILE}" "CORE_BRANCH" "${CORE_BRANCH}"
+FTL_BRANCH="$(pihole-FTL branch)"
+addOrEditKeyValPair "${VERSION_FILE}" "FTL_BRANCH" "${FTL_BRANCH}"
- if [[ "${INSTALL_WEB_INTERFACE}" == true ]]; then
- WEB_BRANCH="$(get_local_branch /var/www/html/admin)"
- addOrEditKeyValPair "${VERSION_FILE}" "WEB_BRANCH" "${WEB_BRANCH}"
- fi
+FTL_HASH="$(pihole-FTL -v | cut -d "-" -f2)"
+addOrEditKeyValPair "${VERSION_FILE}" "FTL_HASH" "${FTL_HASH}"
- FTL_BRANCH="$(pihole-FTL branch)"
- addOrEditKeyValPair "${VERSION_FILE}" "FTL_BRANCH" "${FTL_BRANCH}"
+GITHUB_FTL_VERSION="$(get_remote_version FTL)"
+addOrEditKeyValPair "${VERSION_FILE}" "GITHUB_FTL_VERSION" "${GITHUB_FTL_VERSION}"
- CORE_VERSION="$(get_local_version /etc/.pihole)"
- addOrEditKeyValPair "${VERSION_FILE}" "CORE_VERSION" "${CORE_VERSION}"
+GITHUB_FTL_HASH="$(get_remote_hash FTL "${FTL_BRANCH}")"
+addOrEditKeyValPair "${VERSION_FILE}" "GITHUB_FTL_HASH" "${GITHUB_FTL_HASH}"
- if [[ "${INSTALL_WEB_INTERFACE}" == true ]]; then
- WEB_VERSION="$(get_local_version /var/www/html/admin)"
- addOrEditKeyValPair "${VERSION_FILE}" "WEB_VERSION" "${WEB_VERSION}"
- fi
- FTL_VERSION="$(pihole-FTL version)"
- addOrEditKeyValPair "${VERSION_FILE}" "FTL_VERSION" "${FTL_VERSION}"
+# get Docker versions
- if [[ "${DOCKER_TAG}" ]]; then
- addOrEditKeyValPair "${VERSION_FILE}" "DOCKER_VERSION" "${DOCKER_TAG}"
- fi
+if [[ "${DOCKER_TAG}" ]]; then
+ addOrEditKeyValPair "${VERSION_FILE}" "DOCKER_VERSION" "${DOCKER_TAG}"
+ GITHUB_DOCKER_VERSION="$(get_remote_version docker-pi-hole)"
+ addOrEditKeyValPair "${VERSION_FILE}" "GITHUB_DOCKER_VERSION" "${GITHUB_DOCKER_VERSION}"
fi
diff --git a/advanced/Scripts/version.sh b/advanced/Scripts/version.sh
index 7f44d35e..5c74fa05 100755
--- a/advanced/Scripts/version.sh
+++ b/advanced/Scripts/version.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/usr/bin/env sh
# Pi-hole: A black hole for Internet advertisements
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
@@ -8,179 +8,95 @@
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
-# Variables
-DEFAULT="-1"
-COREGITDIR="/etc/.pihole/"
-WEBGITDIR="/var/www/html/admin/"
-
# Source the setupvars config file
# shellcheck disable=SC1091
-source /etc/pihole/setupVars.conf
+. /etc/pihole/setupVars.conf
-getLocalVersion() {
- # FTL requires a different method
- if [[ "$1" == "FTL" ]]; then
- pihole-FTL version
- return 0
- fi
+# Source the versions file poupulated by updatechecker.sh
+cachedVersions="/etc/pihole/versions"
- # Get the tagged version of the local repository
- local directory="${1}"
- local version
+if [ -f ${cachedVersions} ]; then
+ # shellcheck disable=SC1090
+ . "$cachedVersions"
+else
+ echo "Could not find /etc/pihole/versions. Running update now."
+ pihole updatechecker
+ # shellcheck disable=SC1090
+ . "$cachedVersions"
+fi
- cd "${directory}" 2> /dev/null || { echo "${DEFAULT}"; return 1; }
- version=$(git describe --tags --always || echo "$DEFAULT")
- if [[ "${version}" =~ ^v ]]; then
- echo "${version}"
- elif [[ "${version}" == "${DEFAULT}" ]]; then
- echo "ERROR"
- return 1
- else
- echo "Untagged"
- fi
- return 0
+getLocalVersion() {
+ case ${1} in
+ "Pi-hole" ) echo "${CORE_VERSION:=N/A}";;
+ "AdminLTE" ) [ "${INSTALL_WEB_INTERFACE}" = true ] && echo "${WEB_VERSION:=N/A}";;
+ "FTL" ) echo "${FTL_VERSION:=N/A}";;
+ esac
}
getLocalHash() {
- # Local FTL hash does not exist on filesystem
- if [[ "$1" == "FTL" ]]; then
- echo "N/A"
- return 0
- fi
-
- # Get the short hash of the local repository
- local directory="${1}"
- local hash
-
- cd "${directory}" 2> /dev/null || { echo "${DEFAULT}"; return 1; }
- hash=$(git rev-parse --short HEAD || echo "$DEFAULT")
- if [[ "${hash}" == "${DEFAULT}" ]]; then
- echo "ERROR"
- return 1
- else
- echo "${hash}"
- fi
- return 0
+ case ${1} in
+ "Pi-hole" ) echo "${CORE_HASH:=N/A}";;
+ "AdminLTE" ) [ "${INSTALL_WEB_INTERFACE}" = true ] && echo "${WEB_HASH:=N/A}";;
+ "FTL" ) echo "${FTL_HASH:=N/A}";;
+ esac
}
getRemoteHash(){
- # Remote FTL hash is not applicable
- if [[ "$1" == "FTL" ]]; then
- echo "N/A"
- return 0
- fi
-
- local daemon="${1}"
- local branch="${2}"
-
- hash=$(git ls-remote --heads "https://github.com/pi-hole/${daemon}" | \
- awk -v bra="$branch" '$0~bra {print substr($0,0,8);exit}')
- if [[ -n "$hash" ]]; then
- echo "$hash"
- else
- echo "ERROR"
- return 1
- fi
- return 0
+ case ${1} in
+ "Pi-hole" ) echo "${GITHUB_CORE_HASH:=N/A}";;
+ "AdminLTE" ) [ "${INSTALL_WEB_INTERFACE}" = true ] && echo "${GITHUB_WEB_HASH:=N/A}";;
+ "FTL" ) echo "${GITHUB_FTL_HASH:=N/A}";;
+ esac
}
getRemoteVersion(){
- # Get the version from the remote origin
- local daemon="${1}"
- local version
- local cachedVersions
- cachedVersions="/etc/pihole/versions"
-
- #If the above file exists, then we can read from that. Prevents overuse of GitHub API
- if [[ -f "$cachedVersions" ]]; then
-
- # shellcheck disable=SC1090
- . "$cachedVersions"
-
- case $daemon in
- "pi-hole" ) echo "${GITHUB_CORE_VERSION}";;
- "AdminLTE" ) [[ "${INSTALL_WEB_INTERFACE}" == true ]] && echo "${GITHUB_WEB_VERSION}";;
- "FTL" ) echo "${GITHUB_FTL_VERSION}";;
- esac
-
- return 0
- fi
-
- version=$(curl --silent --fail "https://api.github.com/repos/pi-hole/${daemon}/releases/latest" | \
- awk -F: '$1 ~/tag_name/ { print $2 }' | \
- tr -cd '[[:alnum:]]._-')
- if [[ "${version}" =~ ^v ]]; then
- echo "${version}"
- else
- echo "ERROR"
- return 1
- fi
- return 0
+ case ${1} in
+ "Pi-hole" ) echo "${GITHUB_CORE_VERSION:=N/A}";;
+ "AdminLTE" ) [ "${INSTALL_WEB_INTERFACE}" = true ] && echo "${GITHUB_WEB_VERSION:=N/A}";;
+ "FTL" ) echo "${GITHUB_FTL_VERSION:=N/A}";;
+ esac
}
getLocalBranch(){
- # Get the checked out branch of the local directory
- local directory="${1}"
- local branch
-
- # Local FTL btranch is stored in /etc/pihole/ftlbranch
- if [[ "$1" == "FTL" ]]; then
- branch="$(pihole-FTL branch)"
- else
- cd "${directory}" 2> /dev/null || { echo "${DEFAULT}"; return 1; }
- branch=$(git rev-parse --abbrev-ref HEAD || echo "$DEFAULT")
- fi
- if [[ ! "${branch}" =~ ^v ]]; then
- if [[ "${branch}" == "master" ]]; then
- echo ""
- elif [[ "${branch}" == "HEAD" ]]; then
- echo "in detached HEAD state at "
- else
- echo "${branch} "
- fi
- else
- # Branch started in "v"
- echo "release "
- fi
- return 0
+ case ${1} in
+ "Pi-hole" ) echo "${CORE_BRANCH:=N/A}";;
+ "AdminLTE" ) [ "${INSTALL_WEB_INTERFACE}" = true ] && echo "${WEB_BRANCH:=N/A}";;
+ "FTL" ) echo "${FTL_BRANCH:=N/A}";;
+ esac
}
versionOutput() {
- if [[ "$1" == "AdminLTE" && "${INSTALL_WEB_INTERFACE}" != true ]]; then
+ if [ "$1" = "AdminLTE" ] && [ "${INSTALL_WEB_INTERFACE}" != true ]; then
echo " WebAdmin not installed"
return 1
fi
- [[ "$1" == "pi-hole" ]] && GITDIR=$COREGITDIR
- [[ "$1" == "AdminLTE" ]] && GITDIR=$WEBGITDIR
- [[ "$1" == "FTL" ]] && GITDIR="FTL"
-
- [[ "$2" == "-c" ]] || [[ "$2" == "--current" ]] || [[ -z "$2" ]] && current=$(getLocalVersion $GITDIR) && branch=$(getLocalBranch $GITDIR)
- [[ "$2" == "-l" ]] || [[ "$2" == "--latest" ]] || [[ -z "$2" ]] && latest=$(getRemoteVersion "$1")
- if [[ "$2" == "-h" ]] || [[ "$2" == "--hash" ]]; then
- [[ "$3" == "-c" ]] || [[ "$3" == "--current" ]] || [[ -z "$3" ]] && curHash=$(getLocalHash "$GITDIR") && branch=$(getLocalBranch $GITDIR)
- [[ "$3" == "-l" ]] || [[ "$3" == "--latest" ]] || [[ -z "$3" ]] && latHash=$(getRemoteHash "$1" "$(cd "$GITDIR" 2> /dev/null && git rev-parse --abbrev-ref HEAD)")
+ [ "$2" = "-c" ] || [ "$2" = "--current" ] || [ -z "$2" ] && current=$(getLocalVersion "${1}") && branch=$(getLocalBranch "${1}")
+ [ "$2" = "-l" ] || [ "$2" = "--latest" ] || [ -z "$2" ] && latest=$(getRemoteVersion "${1}")
+ if [ "$2" = "--hash" ]; then
+ [ "$3" = "-c" ] || [ "$3" = "--current" ] || [ -z "$3" ] && curHash=$(getLocalHash "${1}") && branch=$(getLocalBranch "${1}")
+ [ "$3" = "-l" ] || [ "$3" = "--latest" ] || [ -z "$3" ] && latHash=$(getRemoteHash "${1}") && branch=$(getLocalBranch "${1}")
fi
- if [[ -n "$current" ]] && [[ -n "$latest" ]]; then
- output="${1^} version is $branch$current (Latest: $latest)"
- elif [[ -n "$current" ]] && [[ -z "$latest" ]]; then
- output="Current ${1^} version is $branch$current"
- elif [[ -z "$current" ]] && [[ -n "$latest" ]]; then
- output="Latest ${1^} version is $latest"
- elif [[ "$curHash" == "N/A" ]] || [[ "$latHash" == "N/A" ]]; then
- output="${1^} hash is not applicable"
- elif [[ -n "$curHash" ]] && [[ -n "$latHash" ]]; then
- output="${1^} hash is $curHash (Latest: $latHash)"
- elif [[ -n "$curHash" ]] && [[ -z "$latHash" ]]; then
- output="Current ${1^} hash is $curHash"
- elif [[ -z "$curHash" ]] && [[ -n "$latHash" ]]; then
- output="Latest ${1^} hash is $latHash"
+ if [ -n "$current" ] && [ -n "$latest" ]; then
+ output="${1} version is $branch $current (Latest: $latest)"
+ elif [ -n "$current" ] && [ -z "$latest" ]; then
+ output="Current ${1} version is $branch $current"
+ elif [ -z "$current" ] && [ -n "$latest" ]; then
+ output="Latest ${1} version is $latest"
+ elif [ -n "$curHash" ] && [ -n "$latHash" ]; then
+ output="Local ${1} hash of branch $branch is $curHash (Remote: $latHash)"
+ elif [ -n "$curHash" ] && [ -z "$latHash" ]; then
+ output="Current local ${1} hash of branch $branch is $curHash"
+ elif [ -z "$curHash" ] && [ -n "$latHash" ]; then
+ output="Latest remote ${1} hash of branch $branch is $latHash"
+ elif [ -z "$curHash" ] && [ -z "$latHash" ]; then
+ output="Hashes for ${1} not available"
else
errorOutput
return 1
fi
- [[ -n "$output" ]] && echo " $output"
+ [ -n "$output" ] && echo " $output"
}
errorOutput() {
@@ -189,9 +105,9 @@ errorOutput() {
}
defaultOutput() {
- versionOutput "pi-hole" "$@"
+ versionOutput "Pi-hole" "$@"
- if [[ "${INSTALL_WEB_INTERFACE}" == true ]]; then
+ if [ "${INSTALL_WEB_INTERFACE}" = true ]; then
versionOutput "AdminLTE" "$@"
fi
@@ -217,7 +133,7 @@ Options:
}
case "${1}" in
- "-p" | "--pihole" ) shift; versionOutput "pi-hole" "$@";;
+ "-p" | "--pihole" ) shift; versionOutput "Pi-hole" "$@";;
"-a" | "--admin" ) shift; versionOutput "AdminLTE" "$@";;
"-f" | "--ftl" ) shift; versionOutput "FTL" "$@";;
"-h" | "--help" ) helpFunc;;
diff --git a/advanced/Templates/pihole.cron b/advanced/Templates/pihole.cron
index 336a66fe..c62d31ab 100644
--- a/advanced/Templates/pihole.cron
+++ b/advanced/Templates/pihole.cron
@@ -28,6 +28,6 @@
@reboot root /usr/sbin/logrotate --state /var/lib/logrotate/pihole /etc/pihole/logrotate
-# Pi-hole: Grab remote version every 24 hours
-59 17 * * * root PATH="$PATH:/usr/sbin:/usr/local/bin/" pihole updatechecker remote
-@reboot root PATH="$PATH:/usr/sbin:/usr/local/bin/" pihole updatechecker remote reboot
+# Pi-hole: Grab remote and local version every 24 hours
+59 17 * * * root PATH="$PATH:/usr/sbin:/usr/local/bin/" pihole updatechecker
+@reboot root PATH="$PATH:/usr/sbin:/usr/local/bin/" pihole updatechecker reboot
diff --git a/automated install/basic-install.sh b/automated install/basic-install.sh
index 8edd4936..aeeb4507 100755
--- a/automated install/basic-install.sh
+++ b/automated install/basic-install.sh
@@ -2696,9 +2696,8 @@ main() {
# Download and compile the aggregated block list
runGravity
- # Force an update of the updatechecker
+ # Update local and remote versions via updatechecker
/opt/pihole/updatecheck.sh
- /opt/pihole/updatecheck.sh x remote
if [[ "${useUpdateVars}" == false ]]; then
displayFinalMessage "${pw}"