added new bootparameter netscript
[grml-autoconfig.git] / autoconfig.functions
index b0a6d9b..b1f8933 100755 (executable)
@@ -65,13 +65,16 @@ getbootparam(){
 # Check boot commandline for specified option
 checkbootparam(){
   [ -n "$1" ] || ( echo "Error: missing argument to checkbootparam()" ; return 1 )
-  # make sure we match beginning and end of line as well
-  # but don't match 'vg' if we want to check for 'vga'
-  if echo "$CMDLINE" | grep -qw "$1" ; then
-     return 0
-  else
-     return 1
-  fi
+  local line
+  local ws
+  ws='  '
+  line=" $CMDLINE "
+  case "$line" in
+    *[${ws}]"$1"=*|*[${ws}]"$1"[${ws}]*)
+      return 0 ;;
+    *)
+      return 1 ;;
+  esac
 }
 
 # Check wheter a configuration variable (like $CONFIG_TOHD) is
@@ -1789,31 +1792,59 @@ config_services(){
 }
 # }}}
 
-# {{{ config files
-config_netconfig(){
- if checkbootparam 'netconfig' ; then
-  CONFIG="$(getbootparam 'netconfig' 2>>$DEBUG)"
-  CONFIGFILE='/tmp/netconfig.grml'
-
+# {{{ remote files
+get_remote_file() {
+  [ "$#" -eq 2 ] || ( echo "Error: wrong parameter for get_remote_file()" ; return 1 )
+  SOURCE="$1"
+  TARGET="$2"
   getconfig() {
-  wget --timeout=10 --dns-timeout=10  --connect-timeout=10 \
-       --read-timeout=10 $CONFIG -O $CONFIGFILE && return 0 || return 1
+  wget --timeout=10 --dns-timeout=10  --connect-timeout=10 --tries=1 \
+       --read-timeout=10 ${SOURCE} -O ${TARGET} && return 0 || return 1
   }
-  einfo "Trying to get ${WHITE}${CONFIG}${NORMAL}"
+  einfo "Trying to get ${WHITE}${TARGET}${NORMAL}"
   counter=10
   while ! getconfig && [[ "$counter" != 0 ]] ; do
-    echo -n "Sleeping for 5 seconds and trying to get config again... "
+    echo -n "Sleeping for 1 second and trying to get config again... "
     counter=$(( counter-1 ))
     echo "$counter tries left" ; sleep 1
   done
-  if [ -r "$CONFIGFILE" ] ; then
+  if [ -s "$TARGET" ] ; then
     einfo "Downloading was successfull." ; eend 0
-    einfo "md5sum of ${WHITE}${CONFIG}${NORMAL}: "
-    md5sum $CONFIGFILE ; eend 0
-    cd / && einfo "Unpacking ${WHITE}${CONFIGFILE}${NORMAL}:" && /usr/bin/unp $CONFIGFILE $EXTRACTOPTIONS ; eend $?
+    einfo "md5sum of ${WHITE}${TARGET}${NORMAL}: "
+    md5sum ${TARGET} ; eend 0
+    return 0;
   else
-    einfo "Sorry, could not fetch $CONFIG" ; eend 1
+    einfo "Sorry, could not fetch ${SOURCE}" ; eend 1
+    return 1;
+ fi
+}
+# }}}
+
+# {{{ config files
+config_netconfig(){
+ if checkbootparam 'netconfig' ; then
+  CONFIG="$(getbootparam 'netconfig' 2>>$DEBUG)"
+  CONFIGFILE='/tmp/netconfig.grml'
+
+  if get_remote_file ${CONFIG} ${CONFIGFILE} ; then
+    cd / && einfo "Unpacking ${WHITE}${CONFIGFILE}${NORMAL}:" && /usr/bin/unp $CONFIGFILE $EXTRACTOPTIONS ; eend $?
   fi
+
+ fi
+}
+# }}}
+
+# {{{ remote scripts
+config_netscript() {
+ if checkbootparam 'netscript' ; then
+  CONFIG="$(getbootparam 'netscript' 2>>$DEBUG)"
+  SCRIPTFILE='/tmp/netscript.grml'
+
+  if get_remote_file ${CONFIG} ${SCRIPTFILE} ; then
+    chmod +x ${SCRIPTFILE}
+    einfo "Running ${WHITE}${SCRIPTFILE}${NORMAL}:" && ${SCRIPTFILE} ; eend $?
+  fi
+
  fi
 }
 # }}}
@@ -1955,6 +1986,8 @@ else
         fi
         DCSDIR="/mnt/grml"
       fi
+    else
+      DCSDIR="/live/image"
     fi
   fi
 fi