diff options
Diffstat (limited to 'data')
| -rwxr-xr-x | data/openslx-update | 74 |
1 files changed, 53 insertions, 21 deletions
diff --git a/data/openslx-update b/data/openslx-update index e4d271f5..c7e24d30 100755 --- a/data/openslx-update +++ b/data/openslx-update @@ -1,5 +1,7 @@ #!/bin/bash +### Funktionen ################################### + function print () { echo -e "\033[01;29m$@\033[00m" @@ -16,34 +18,58 @@ function warning () echo -e "\033[01;33m$@\033[00m" } +### Variablen ################################### +# Web MIRROR="http://mltk.boot.openslx.org" +MIRRORDIR="files" +# Dateien und Verzeichnisse +PXEDIR="/srv/openslx/tftp/pxelinux.cfg" +PXECONFIG="$PXEDIR/default" +PXETEMPLATE="/opt/openslx/templates/pxemenu-header" +FILEPRAEFIX="openslx-" +WWWDIR="/srv/openslx/www" +# Konfigurationsdateien +SERVERDEFAULTS="/opt/openslx/server-defaults" +# Temporäres REMOTEINDEX="/tmp/mlversion" LOCALINDEX="/opt/openslx/local_version" WWWTEMP="/srv/openslx/www-temp" -PXECONFIG="/srv/openslx/tftp/pxelinux.cfg/default" +# Vars zum Überladen +LOCAL_STABLE=0 +LOCAL_TESTING=0 +# Vars für Prüfsummen CRCCOMMAND=md5sum CRCEXTENSION=md5 +# Mindestens freier Plattenplatz in Kilobytes +MINSPACE=409600 # 400MB -. "/opt/openslx/server-defaults" || error "Konnte Serverkonfiguration nicht laden. Wurde openslx-install ausgeführt?" +trap "{ rm -f $REMOTEINDEX $WWWTEMP/* $WWWDIR/*.$CRCEXTENSION; }" SIGINT SIGTERM EXIT -LOCAL_STABLE=0 -LOCAL_TESTING=0 +# Warnung ausgeben, wenn Raum für $WWWTEMP eventuell zu klein +if [ $(df -Pk $WWWTEMP|tail -1| tr -s ' '|cut -d " " -f 4) -lt $MINSPACE ]; then + warning "Achtung: Eventuell zu wenig freier Speicherplatz verfügbar." +fi + + +. "$SERVERDEFAULTS" || error "Konnte Serverkonfiguration nicht laden. Wurde openslx-install ausgeführt?" 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" +[ -d "$PXEDIR" ] || mkdir -p "$PXEDIR" +cp "$PXETEMPLATE" "$PXECONFIG" +ERR=$?; [ $ERR -ne 0 ] && error "Kann PXE-Vorlage nicht umkopieren!" mkdir -p "$WWWTEMP" -mv /srv/openslx/www/openslx-* "$WWWTEMP/" +cp -p "$WWWDIR/$FILEPRAEFIX"* "$WWWTEMP/" +ERR=$?; [ $ERR -ne 0 ] && error "Kann bestehende Dateien nicht nach $WWWTEMP kopieren!" + for REL in ${!AVAILABLE_*}; do BRANCH="${REL#AVAILABLE_}" print "Remote has branch $BRANCH" @@ -52,32 +78,31 @@ for REL in ${!AVAILABLE_*}; do for FILE in ${!REL}; do # Handle pxelinux.cfg if [[ "$FILE" == kernel* ]]; then - KERNEL="KERNEL http://$SLX_LOCAL_ADDR/openslx-$FILE" + KERNEL="KERNEL http://$SLX_LOCAL_ADDR/$FILEPRAEFIX$FILE" else if [ -z "$PXELINE" ]; then PXELINE="INITRD " else PXELINE+="," fi - PXELINE+="http://$SLX_LOCAL_ADDR/openslx-$FILE" + PXELINE+="http://$SLX_LOCAL_ADDR/$FILEPRAEFIX$FILE" fi # If file is available locally, don't download again - if [ -s "$WWWTEMP/openslx-$FILE" ]; then - mv "$WWWTEMP/openslx-$FILE" "/srv/openslx/www/" + if [ -s "$WWWTEMP/$FILEPRAEFIX$FILE" ]; then continue fi # Download - wget -O "/srv/openslx/www/openslx-$FILE" "$MIRROR/files/$FILE" || { warning "Could not download $FILE"; continue; } + wget -O "$WWWTEMP/$FILEPRAEFIX$FILE" "$MIRROR/$MIRRORDIR/$FILE" || { warning "Could not download $FILE"; continue; } # Download md5 value - wget -O "/srv/openslx/www/openslx-$FILE.$CRCEXTENSION" "$MIRROR/files/$FILE.$CRCEXTENSION" \ + wget -O "$WWWTEMP/$FILEPRAEFIX$FILE.$CRCEXTENSION" "$MIRROR/$MIRRORDIR/$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 + if [ $($CRCCOMMAND "$WWWTEMP/$FILEPRAEFIX$FILE"|cut -f 1 -d " ") != "$(cat $WWWTEMP/$FILEPRAEFIX$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." + print "Prüfsummencheck Datei $FILE ok." fi done if [ -z "$PXELINE" -o -z "$KERNEL" ]; then @@ -96,15 +121,22 @@ for REL in ${!AVAILABLE_*}; do 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/" + if [ -s "$WWWTEMP/$FILEPRAEFIX$FILE" ]; then + # mv "$WWWTEMP/$FILEPRAEFIX$FILE" "$WWWDIR/" continue fi # Download - wget -O "/srv/openslx/www/openslx-$FILE" "$MIRROR/files/$FILE" || warning "Could not download $FILE" + wget -O "$WWWTEMP/$FILEPRAEFIX$FILE" "$MIRROR/$MIRRORDIR/$FILE" || warning "Could not download $FILE" done done + +# If we are here, then we can assume everything went either right, or at least no fatal error happened. +# So, we will move the stuff in $WWWTEMP to $WWWDIR. + +print "Alles scheint ok - Bewege neue Abbilder zum Webserver." +mv "$WWWTEMP/"* "$WWWDIR/" print "Done." -print "Old files left over:" -ls -alh "$WWWTEMP" +# print "Old files left over:" +# ls -alh "$WWWTEMP" +exit 0 |
