Merge pull request #1600 from pi-hole/tweak/OnlyDownloadFTLNew

Only download FTL if a newer version than currently installed is detected (or if no version is detected)
This commit is contained in:
Mcat12 2017-07-25 22:11:31 -04:00 committed by GitHub
commit a77136bd1d
2 changed files with 44 additions and 14 deletions

View file

@ -1758,7 +1758,7 @@ FTLinstall() {
local binary="${1}"
local latesttag
local orig_dir
local str="Installing FTL"
local str="Downloading and Installing FTL"
echo -ne " ${INFO} ${str}..."
# Get the current working directory
@ -1771,6 +1771,7 @@ FTLinstall() {
echo -e " ${COL_LIGHT_RED}Error: Unable to get latest release location from GitHub${COL_NC}"
return 1
fi
# If the download worked,
if curl -sSL --fail "https://github.com/pi-hole/FTL/releases/download/${latesttag%$'\r'}/${binary}" -o "/tmp/${binary}"; then
# get sha1 of the binary we just downloaded for verification.
@ -1813,7 +1814,7 @@ FTLinstall() {
# Detect suitable FTL binary platform
FTLdetect() {
echo ""
echo -e " ${INFO} Downloading latest version of FTL..."
echo -e " ${INFO} FTL Checks..."
# Local, named variables
local machine
@ -1876,8 +1877,37 @@ FTLdetect() {
binary="pihole-FTL-linux-x86_32"
fi
# Install FTL
FTLinstall "${binary}" || return 1
#In the next section we check to see if FTL is already installed (in case of pihole -r).
#If the installed version matches the latest version, then check the installed sha1sum of the binary vs the remote sha1sum. If they do not match, then download
echo -e " ${INFO} Checking for existing FTL binary..."
local ftlLoc=$(which pihole-FTL)
if [[ ${ftlLoc} ]]; then
local FTLversion=$(/usr/bin/pihole-FTL tag)
local FTLlatesttag=$(curl -sI https://github.com/pi-hole/FTL/releases/latest | grep 'Location' | awk -F '/' '{print $NF}' | tr -d '\r\n')
if [[ "${FTLversion}" != "${FTLlatesttag}" ]]; then
# Install FTL
FTLinstall "${binary}" || return 1
else
echo -e " ${INFO} Latest FTL Binary already installed (${FTLlatesttag}). Confirming Checksum..."
local remoteSha1=$(curl -sSL --fail "https://github.com/pi-hole/FTL/releases/download/${FTLversion%$'\r'}/${binary}.sha1" | cut -d ' ' -f 1)
local localSha1=$(sha1sum "$(which pihole-FTL)" | cut -d ' ' -f 1)
if [[ "${remoteSha1}" != "${localSha1}" ]]; then
echo -e " ${INFO} Corruption detected..."
FTLinstall "${binary}" || return 1
else
echo -e " ${INFO} Checksum correct. No need to download!"
fi
fi
else
# Install FTL
FTLinstall "${binary}" || return 1
fi
}