summaryrefslogtreecommitdiffstats
path: root/data/openslx-update
blob: 06d055541de85e9355878c6985ef67c2ae8bdede (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/bin/bash

function print ()
{
	echo -e "\033[01;29m$@\033[00m"
}

function error ()
{
	echo -e "\033[01;31m$@\033[00m"
	exit 1
}

function warning ()
{
	echo -e "\033[01;33m$@\033[00m"
}

MIRROR="http://mltk.boot.openslx.org"
REMOTEINDEX="/tmp/mlversion"
LOCALINDEX="/opt/openslx/local_version"
WWWTEMP="/srv/openslx/www-temp"
PXECONFIG="/srv/openslx/tftp/pxelinux.cfg/default"

. "/opt/openslx/server-defaults" || error "Konnte Serverkonfiguration nicht laden. Wurde openslx-install ausgeführt?"

LOCAL_STABLE=0
LOCAL_TESTING=0
if [ -s "$LOCALINDEX" ]; then
	. "$LOCALINDEX" || error "Fehler beim laden der lokalen Versionsinfirmationen aus $LOCALINDEX"
fi

print ""
print "Lade Liste aktuell verfügbarer Versionen..."
rm -f "$REMOTEINDEX"
wget -O "$REMOTEINDEX" "$MIRROR/index" || error "Konnte Liste verfügbarer Releases nicht herunterladen."
. "$REMOTEINDEX" || error "Liste verfügbarer Releases Fehlerhaft (konnte $REMOTEINDEX nicht sourcen)"

# Regenerate pxemenu
mkdir -p "/srv/openslx/tftp/pxelinux.cfg"
cp "/opt/openslx/templates/pxemenu-header" "$PXECONFIG"

mkdir -p "$WWWTEMP"
mv /srv/openslx/www/openslx-* "$WWWTEMP/"
for REL in ${!AVAILABLE_*}; do
	BRANCH="${REL#AVAILABLE_}"
	print "Remote has branch $BRANCH"
	PXELINE=""
	KERNEL=""
	for FILE in ${!REL}; do
		# Handle pxelinux.cfg
		if [[ "$FILE" == kernel* ]]; then
			KERNEL="KERNEL http://$SLX_LOCAL_ADDR/openslx-$FILE"
		else
			if [ -z "$PXELINE" ]; then
				PXELINE="INITRD "
			else
				PXELINE+=","
			fi
			PXELINE+="http://$SLX_LOCAL_ADDR/openslx-$FILE"
		fi
		# If file is available locally, don't download again
		if [ -s "$WWWTEMP/openslx-$FILE" ]; then
			mv "$WWWTEMP/openslx-$FILE" "/srv/openslx/www/"
			continue
		fi
		# Download
		wget -O "/srv/openslx/www/openslx-$FILE" "$MIRROR/files/$FILE" || warning "Could not download $FILE"
	done
	if [ -z "$PXELINE" -o -z "$KERNEL" ]; then
		warning "Incomplete entry. KERNEL or INITRD missing."
		continue
	fi
	# Append to pxeconfig
	echo "# Branch $BRANCH" >> "$PXECONFIG"
	echo "LABEL $BRANCH" >> "$PXECONFIG"
	echo "    MENU LABEL OpenSLX-NG $BRANCH [${!REL}]" >> "$PXECONFIG"
	echo "    $KERNEL" >> "$PXECONFIG"
	echo "    $PXELINE" >> "$PXECONFIG"
	echo "    IPAPPEND 3" >> "$PXECONFIG"
	echo "    APPEND slxconfig=http://$SLX_LOCAL_ADDR/config" >> "$PXECONFIG"
	# Extra files (e.g. vmplayer in it's own sqfs that gets downloaded later)
	EXTRA="${BRANCH}_EXTRA"
	for FILE in ${!EXTRA}; do
		# If file is available locally, don't download again
		if [ -s "$WWWTEMP/openslx-$FILE" ]; then
			mv "$WWWTEMP/openslx-$FILE" "/srv/openslx/www/"
			continue
		fi
		# Download
		wget -O "/srv/openslx/www/openslx-$FILE" "$MIRROR/files/$FILE" || warning "Could not download $FILE"
	done
done
print "Done."
print "Old files left over:"
ls -alh "$WWWTEMP"