From 75edecee3c24a67918bdf8156402645f0be98ab2 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 13 Feb 2019 13:19:00 +0100 Subject: [SSUS] Update for new ipxe-aware slx-admin/taskmanager --- satellit_upgrader/pack-update.sh | 75 +++++++++++++++++++++++++++++++--------- 1 file changed, 58 insertions(+), 17 deletions(-) (limited to 'satellit_upgrader/pack-update.sh') diff --git a/satellit_upgrader/pack-update.sh b/satellit_upgrader/pack-update.sh index 37b96c1..3997b98 100755 --- a/satellit_upgrader/pack-update.sh +++ b/satellit_upgrader/pack-update.sh @@ -3,10 +3,10 @@ declare -rg SELFPID=$$ perror () { if [ -n "$IGNORE_ERRORS" ]; then - echo "[ERROR] $@" + echo "${RED}[ERROR]${RESET} $@" return 0 fi - echo "[FATAL] $@" + echo "${RED}[FATAL]${RESET} $@" [ "$$" != "$SELFPID" ] && kill "$SELFPID" exit 1 } @@ -24,9 +24,43 @@ declare -rg TGZ_DOZMOD="files/dozmod.tar.gz" declare -rg TGZ_TASKMANAGER="files/taskmanager.tar.gz" declare -rg TGZ_TFTP="files/tftpdir.tar.gz" declare -rg TGZ_IPXE="files/ipxe.tar.gz" +declare -rg FILES_IPXE=" + pxelinux.0 + src/ + .git/ +" declare -rg TGZ_LDADP="files/ldadp.tar.gz" declare -rg TGZ_DNBD3="files/dnbd3-server.tar.gz" +checkfiles () { +tar tf "$1" | awk -v strings="$2" ' +BEGIN { + numStrings = split(strings,tmp) + for (i in tmp) strs[tmp[i]] +} +numStrings == 0 { exit 0 } +{ + for (str in strs) { + if ( $0 == str ) { + delete strs[str] + numStrings-- + } + } +} +END { exit (numStrings ? 1 : 0) } +' +} + +RED= +GREEN= +RESET= +if [ -t 1 ]; then + RED=$( echo -en '\033[1;31m' ) + GREEN=$( echo -en '\033[1;32m' ) + RESET=$( echo -en '\033[0m' ) +fi +readonly RED GREEN RESET + # Prepare installer cp "updater.template.sh" "$UPDATER" || perror "could not copy template" chmod +x "$UPDATER" @@ -67,13 +101,20 @@ fi addpayload () { echo -n "Includes $2: " - local FILEVAR=$1 + local FILEVAR="TGZ_$1" + local LISTVAR="FILES_$1" local FILENAME=${!FILEVAR} + local LISTFILES=${!LISTVAR} if [ -e "${FILENAME}" ]; then - echo "yes" + if [ -n "$LISTFILES" ] && ! checkfiles "$FILENAME" "$LISTFILES"; then + echo "${RED}no !!! BAD FORMAT !!!${RESET}" + patchtgz "$FILEVAR" + return + fi + echo "${GREEN}yes${RESET}" patchtgz "$FILEVAR" "$FILENAME" else - echo "no" + echo "${RED}no${RESET}" patchtgz "$FILEVAR" fi } @@ -83,15 +124,15 @@ addinstallfile () { local file=$1 local path=$(dirname "$file") if [ ! -d "../satellit_installer" ]; then - echo "NO! (satellit_installer not found)" + echo "${RED}NO!${RESET} (satellit_installer not found)" elif [ ! -e "../satellit_installer/static_files/$file" ]; then - echo "NO! (file not found in satellit_installer/static_files)" + echo "${RED}NO!${RESET} (file not found in satellit_installer/static_files)" else mkdir -p "files/$path" || echo -n "(mkdir failed) " if cp "../satellit_installer/static_files/$file" "files/$file"; then - echo "yes" + echo "${GREEN}yes${RESET}" else - echo "...no! (copy failed)" + echo "...${RED}no!${RESET} (copy failed)" fi fi } @@ -100,7 +141,7 @@ addinstallfile () { # slxadmin version echo -n "Includes SLX-Admin: " if [ -e "$TGZ_SLXADMIN" ]; then - echo "yes" + echo "${GREEN}yes${RESET}" VERS=$(date +%Y%j%H) [ -n "$VERS" ] || perror "Could not extract slx-admin version!" echo "Version: $VERS" @@ -108,16 +149,16 @@ if [ -e "$TGZ_SLXADMIN" ]; then sed -i "s/%SLXADMIN_FOOTER%/$(date '+%y-%m-%d %H:%M')/" "$UPDATER" || perror "could not patch slxadmin footer in updater" patchtgz "TGZ_SLXADMIN" "$TGZ_SLXADMIN" else - echo "no" + echo "${RED}no${RESET}" patchtgz "TGZ_SLXADMIN" fi -addpayload "TGZ_DOZMOD" "Dozmod server" -addpayload "TGZ_TASKMANAGER" "Taskmanager" -addpayload "TGZ_TFTP" "TFTP/PxeLinux data" -addpayload "TGZ_IPXE" "iPXE source code" -addpayload "TGZ_LDADP" "ldap/ad proxy" -addpayload "TGZ_DNBD3" "dnbd3-server" +addpayload "DOZMOD" "Dozmod server" +addpayload "TASKMANAGER" "Taskmanager" +addpayload "TFTP" "TFTP/PxeLinux data" +addpayload "IPXE" "iPXE source code" +addpayload "LDADP" "ldap/ad proxy" +addpayload "DNBD3" "dnbd3-server" if [ -z "$LEAN" ]; then addinstallfile "lighttpd.conf" -- cgit v1.2.3-55-g7522