blob: e4d271f51083f0c7ab2770c121597b37bf42ca2b (
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
98
99
100
101
102
103
104
105
106
107
108
109
110
|
#!/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"
CRCCOMMAND=md5sum
CRCEXTENSION=md5
. "/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"; continue; }
# Download md5 value
wget -O "/srv/openslx/www/openslx-$FILE.$CRCEXTENSION" "$MIRROR/files/$FILE.$CRCEXTENSION" \
|| { warning "Could not download $FILE.$CRCEXTENSION!"; continue; }
# check file checksums
if [ $($CRCCOMMAND "/srv/openslx/www/openslx-$FILE"|cut -f 1 -d " ") != "$(cat /srv/openslx/www/openslx-$FILE.$CRCEXTENSION)" ]; then
warning "$CRCCOMMAND: $FILE: checksum mismatch! Transmission error or disk full."
warning "$CRCCOMMAND: $FILE: Prüfsummendiskrepanz! Übertragungsfehler oder Laufwerk voll."
error "Beende Skript aufgrund Prüfsummendiskrepanz!"
else
print "Prüsummencheck Datei $FILE ok."
fi
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"
|