summaryrefslogtreecommitdiffstats
path: root/satellit_upgrader/pack-update.sh
diff options
context:
space:
mode:
Diffstat (limited to 'satellit_upgrader/pack-update.sh')
-rwxr-xr-xsatellit_upgrader/pack-update.sh75
1 files changed, 58 insertions, 17 deletions
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"