Add support for vnc_connect feature (#877)
[grml-autoconfig.git] / autoconfig.functions
index b75f648..07e0980 100755 (executable)
@@ -356,6 +356,11 @@ config_language(){
 config_hostname(){
  if checkbootparam 'hostname' ; then
   HOSTNAME="$(getbootparam 'hostname' 2>>$DEBUG)"
+  if [ -z "$HOSTNAME" ] && [ -x /usr/bin/random-hostname ] ; then
+     einfo "Generating random hostname as no hostname was specified."
+     HOSTNAME="$(/usr/bin/random-hostname)"
+     eend $?
+  fi
   einfo "Setting hostname to $HOSTNAME as requested."
   grml-hostname $HOSTNAME >>$DEBUG ; RC=$?
   [ "$RC" = "0" ] && hostname $HOSTNAME
@@ -574,11 +579,11 @@ fi
 
 # activate serial console {{{
 config_console(){
-local line
-local ws
-ws='    '
-
 if checkbootparam 'console'; then
+  local line
+  local ws
+  ws='  '
+
   einfo "Bootoption for serial console detected:"
 
   line="$CMDLINE x "
@@ -589,13 +594,9 @@ if checkbootparam 'console'; then
     case "$this" in
       console=*)
         local serial="$this"
-       local device="${this%%,*}"
-       local device="${device##*=}"
-        if ! echo $serial | grep -q ttyS ; then
-          ewarn "Warning: console=ttyS... not specified as last console= option. Falling back to defaults."
-          eend 0
-          local speed="9600"
-        else
+        local device="${this%%,*}"
+        local device="${device##*=}"
+        if echo $serial | grep -q ttyS ; then
           local option="${serial##*,}"
           # default (works for kvm & CO):
           local speed="115200,57600,38400,19200,9600,4800,2400,1200";
@@ -610,20 +611,20 @@ if checkbootparam 'console'; then
               2400*) speed=2400 ;;
               1200*) speed=1200 ;;
           esac
+          eindent
+            einfo "Activating console login on device ${device} with speed ${speed}."
+            local number="${device#ttyS}"
+            sed -i "/^T$number:/d;/^#grmlserial#/iT$number:23:respawn:/bin/bash -c \"/sbin/getty -L $device -l /usr/bin/zsh-login $speed vt100 || sleep 30\"" /etc/inittab
+            eend $?
+            telinitq="1"
+          eoutdent
         fi
-        eindent
-          einfo "Activting console login on device ${device} with speed ${speed}."
-         local number="${device#ttyS}"
-         local inittab=../inittab
-          sed -i "/#grmlserial#/iT$number:23:respawn:/bin/bash -c \"/sbin/getty -L $device -l /usr/bin/zsh-login $speed vt100 || sleep 30\"" $inittab ;  eend $?
-         telinitq="1"
-        eoutdent
         ;;
     esac
     this="${line%%[$ws]*}"
     line="${line#*[$ws]}"
-  done 
-  
+  done
+
   if [ -n "$telinitq" ]; then
     /sbin/telinit q
   fi
@@ -1539,6 +1540,15 @@ if checkbootparam 'vnc' ; then
          /bin/chown -R "$USER": "$VNCDIR"
       fi
    fi
+   if checkbootparam 'vnc_connect' ; then
+      VNC_CONNECT=''
+      VNC_CONNECT="$(getbootparam 'vnc_connect' 2>>$DEBUG)"
+      einfo "Bootoption vnc_connect found, will start vnc with connect to $VNC_CONNECT."
+      #store the options in a file
+      VNCDIR="/home/${USER}/.vnc"
+      [ -d "$VNCDIR" ] || mkdir "$VNCDIR"
+      echo " --connect $VNC_CONNECT " >> $VNCDIR/options 
+   fi
 fi
 }
 # }}}
@@ -1832,7 +1842,7 @@ config_netscript() {
 
   if get_remote_file ${CONFIG} ${SCRIPTFILE} ; then
     chmod +x ${SCRIPTFILE}
-    einfo "Running ${WHITE}${SCRIPTFILE}${NORMAL}:" && ${SCRIPTFILE} ; eend $?
+    einfo "Running ${WHITE}${SCRIPTFILE}${NORMAL}:" && NETSCRIPT=${CONFIG} ${SCRIPTFILE} ; eend $?
   fi
 
  fi
@@ -2026,6 +2036,7 @@ fi
 # {{{ /cdrom/.*-options
 config_debs(){
 if checkbootparam 'debs' ; then
+   iszsh && setopt localoptions shwordsplit
    DEBS="$(getbootparam 'debs' 2>>$DEBUG)"
    if ! echo $DEBS | grep -q '/'; then
      # backwards compatibility: if no path is given get debs from debs/
@@ -2423,7 +2434,7 @@ config_lvm(){
 # {{{ debnet: setup network based on an existing one found on a partition
 config_debnet(){
 if checkbootparam 'debnet' ; then
- iszsh && setopt shwordsplit
+ iszsh && setopt localoptions shwordsplit
  DEVICES="$(< /proc/partitions tail -n +3 | awk '{print "/dev/"$4}' | tr "\n" " ")"
  DEVICES="$DEVICES $(ls /dev/mapper/*)"
  FOUND_DEBNET=""