1
0
Fork 0

partial rewrite of script and new update location

This commit is contained in:
Asif Bacchus 2020-09-14 23:18:28 -06:00
parent edf6a13e38
commit 3bc3683b11
1 changed files with 39 additions and 45 deletions

View File

@ -1,11 +1,12 @@
#!/bin/sh #!/bin/sh
### update script for ab-openldap container and utility scripts #
# update script for ab-openldap container and utility scripts
# version 1.0.0 # version 1.0.0
# script by Asif Bacchus # script by Asif Bacchus
# usage of this script is subject to the license terms found at: # usage of this script is subject to the license terms found at:
# https://git.asifbacchus.app/ab-docker/scripts/LICENSE # https://git.asifbacchus.app/ab-docker/scripts/LICENSE
#
### pre-requisites ### pre-requisites
@ -32,55 +33,53 @@ updateSuccess=0
# reference constants # reference constants
containerName='ab-openldap' containerName='ab-openldap'
containerUpdatePath='docker.asifbacchus.app/ldap/ab-openldap:latest' containerUpdatePath='docker.asifbacchus.app/ldap/ab-openldap:latest'
server="https://git.asifbacchus.app/ab-docker/scripts/raw/branch/master/$containerName/" serverPath="https://asifbacchus.app/public/$containerName/"
checksumFilename='checksums.sha256' checksumFilename='checksums.sha256'
# files to update # files to update
localScriptName='update.sh' scriptName='ab-openldap-update.sh'
repoScriptName='update.sh' updateFiles="ab-openldap-backup.params.template ab-openldap-backup.sh ab-openldap.params.template ab-openldap.sh"
updateFiles="ab-openldap.sh ab-openldap.params.template backup.sh backup.params.template"
printf "\nUpdating %s:\n" "$containerName"
### update container ### update container
printf "\n*** Updating %s container and service scripts ***\n\n" "$containerName"
printf "Updating container:\n" printf "updating container... "
if ! docker pull "$containerUpdatePath"; then if ! docker pull "$containerUpdatePath"; then
printf "[ERROR]\n\n"
printf "There was an error updating the container. Try again later.\n\n" printf "There was an error updating the container. Try again later.\n\n"
exit 1 exit 1
else
printf "Container updated!\n\n"
fi
### update scripts
printf "Updating %s service scripts\n" "$containerName"
## download latest checksums
printf "Getting latest checksums from ab-git server... "
if ! wget --quiet --tries=3 --timeout=10 -N "${server}${checksumFilename}"; then
printf "[ERROR]\n"
printf "Unable to download checksums from ab-git server. Try again later.\n\n"
exit 1
else else
printf "[OK]\n" printf "[OK]\n"
fi fi
## check for updates to this script ### checksums
printf "Checking for updates to this script... " printf "downloading latest checksums... "
repoScriptChecksum=$( grep "$repoScriptName" "$checksumFilename" | grep -o '^\S*' ) if ! wget --quiet --tries=3 --timeout=10 -O "$checksumFilename" "$serverPath$checksumFilename"; then
localScriptChecksum=$( sha256sum "$localScriptName" | grep -o '^\S*' ) printf "[ERROR]\n\n"
printf "Unable to download updated checksums. Try again later.\n\n"
exit 1
else
printf "[OK]\n"
fi
### script self-update
printf "checking for updates to this script... "
localScriptChecksum=$( sha256 "./$scriptName" | grep -o '^\S*' )
repoScriptChecksum=$( grep "$scriptName" "$checksumFilename" | grep -o '^\S*' )
if [ "$localScriptChecksum" = "$repoScriptChecksum" ]; then if [ "$localScriptChecksum" = "$repoScriptChecksum" ]; then
printf "[NONE]\n" printf "[NONE]\n"
else else
# download updated script # download updated script
if ! wget --quiet --tries=3 --timeout=10 -O $localScriptName "${server}${repoScriptName}"; then if ! wget --quiet --tries=3 --timeout=10 -O "$scriptName" "$serverPath$scriptName"; then
printf "[ERROR]\n" printf "[ERROR]\n\n"
printf "Unable to download script update. Try again later.\n\n" printf "Unable to download script update. Try again later.\n\n"
exit 1 exit 1
else else
# verify download # verify download
localScriptChecksum=$( sha256sum "$localScriptName" | grep -o '^\S*' ) localScriptChecksum=$( sha256sum "$scriptName" | grep -o '^\S*' )
if ! [ "$localScriptChecksum" = "$repoScriptChecksum" ]; then if ! [ "$localScriptChecksum" = "$repoScriptChecksum" ]; then
printf "[ERROR]\n" printf "[ERROR]\n"
printf "Unable to verify checksum of updated script. Try again later.\n\n" printf "Unable to verify checksum of updated script. Try again later.\n\n"
@ -96,36 +95,31 @@ fi
set -- dummy $updateFiles set -- dummy $updateFiles
shift shift
for file; do for file; do
updateTarget="$file" printf "\nchecking '%s' for updates... " "$file"
printf "\nChecking '%s' for updates... " "$updateTarget" repoFileChecksum=$( grep "$file" "$checksumFilename" | grep -o '^\S*' )
repoFile=$( grep "$updateTarget" "$checksumFilename" | grep -o '^\S*' )
if [ -f "$file" ]; then if [ -f "$file" ]; then
localFile=$( sha256sum "$updateTarget" | grep -o '^\S*' ) localFileChecksum=$( sha256sum "$file" | grep -o '^\S*' )
else else
localFile=0 localFileChecksum=0
fi fi
if ! [ "$localFileChecksum" = "$repoFileChecksum" ]; then
if ! [ "$localFile" = "$repoFile" ]; then
printf "[AVAILABLE]\n" printf "[AVAILABLE]\n"
updatesAvailable=$((updatesAvailable+1)) updatesAvailable=$((updatesAvailable+1))
# download update # download update
printf "Downloading updated '%s'... " "$updateTarget" printf "Downloading updated '%s'... " "$file"
# specify a name here instead of using the server name so that wget if ! wget --quiet --tries=3 --timeout=10 -O "$file" "$serverPath$file"; then
# overwrites the file
if ! wget --quiet --tries=3 --timeout=10 -O "$updateTarget" "${server}${updateTarget}"; then
printf "[ERROR]\n" printf "[ERROR]\n"
downloadFailed=$((downloadFailed+1)) downloadFailed=$((downloadFailed+1))
else else
printf "[OK]\n" printf "[OK] "
downloadSuccess=$((downloadSuccess+1)) downloadSuccess=$((downloadSuccess+1))
# verify download # verify download
printf "Verifying '%s'... " "$updateTarget" localFileChecksum=$( sha256sum "$file" | grep -o '^\S*' )
localFile=$( sha256sum "$updateTarget" | grep -o '^\S*' ) if ! [ "$localFileChecksum" = "$repoFileChecksum" ]; then
if ! [ "$localFile" = "$repoFile" ]; then
printf "[INVALID]\n" printf "[INVALID]\n"
updateFailed=$((updateFailed+1)) updateFailed=$((updateFailed+1))
else else
printf "[OK]\n" printf "[VERIFIED]\n"
updateSuccess=$((updateSuccess+1)) updateSuccess=$((updateSuccess+1))
fi fi
fi fi