Release new version 2.13.0
[grml-scripts.git] / usr_sbin / grml-setservices
index be21363..0ef7af4 100755 (executable)
@@ -1,19 +1,21 @@
-#!/bin/sh
+#!/bin/bash
 # Filename:      grml-setservices
 # Purpose:       interface for basic configuration of system startup
 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
 # Bug-Reports:   see http://grml.org/bugs/
 # License:       This file is licensed under the GPL v2.
-# Latest change: Fre Mär 16 21:54:10 CET 2007 [mika]
 ################################################################################
 
-PN="$(basename $0)"
+PN="$(basename "$0")"
 TMP=$(mktemp)
 DIALOG=dialog
 CONFFILE='/etc/runlevel.conf'
 
+# shellcheck disable=SC1091
+{
 . /etc/grml/script-functions
 . /etc/grml/lsb-functions
+}
 
 check4root || exit 100
 
@@ -22,12 +24,12 @@ bailout(){
   exit 0
 }
 
-trap bailout 1 2 3 15
+trap bailout HUP INT QUIT TERM
 
 is_value_set(){
  [ -n "$1" ] || return 2
  [ -r "$TMP" ] || return 3
- grep -q "$1" $TMP && return 0 || return 1
+ grep -q "$1" "$TMP" && return 0 || return 1
 }
 
 INFO="Which services would you like to have enabled on your system?
@@ -41,42 +43,90 @@ or choose cancel.
 "
 
 # enable checks only if the according init script is present
+[ -r /etc/init.d/lvm2 ]   && LVM='lvm!logical volume management!on'
 [ -r /etc/init.d/mdadm ]  && SRAID='mdadm!software-raid via mdadm!on'
 [ -r /etc/init.d/dmraid ] && MRAID='dmraid!software-raid via dmraid!off'
-[ -r /etc/init.d/dbus -o -r /etc/init.d/dbus-1 ] && DBUS='dbus!hal/dbus (important for KDE e.g.)!off'
-
-# adjust setup
+[ -r /etc/init.d/dbus ] || [ -r /etc/init.d/dbus-1 ] && DBUS='dbus!hal/dbus (important for KDE e.g.)!off'
+[ -r /etc/init.d/hal ]    && HAL='hal!Hardware Abstraction Layer daemon (important for KDE e.g.)!off'
+[ -r /etc/init.d/nfs-common ] && NFS='nfs!Network File System (client setup)!off'
+
+## adjust setup
+# logic:
+# if is_value_set
+#    remove_from_runlevel.conf
+#    set_up_defaults_as_intented_in_/var/lib/dpkg/info/$PACKAGE.postinst
+# else
+#    remove_from_runlevel.conf
+#    set_up_only_for_stop_to_prevent_reactivation_via_maintainer_scripts_on_upgrade
 set_values(){
-  if is_value_set "mdadm"  ; then
-     update-rc.d -f mdadm remove >/dev/null 2>&1
-     update-rc.d mdadm-raid start 25 S . start 50 0 6 . >/dev/null 2>&1
-     update-rc.d mdadm defaults 25 >/dev/null 2>&1
-  else
-     update-rc.d -f mdadm remove >/dev/null 2>&1
-     update-rc.d mdadm stop 20 0 1 6 . >/dev/null 2>&1
+  if [ -n "$LVM" ] ; then
+     if is_value_set "lvm" ; then
+        update-rc.d -f lvm2 remove >/dev/null 2>&1
+        update-rc.d lvm2 start 26 S . start 50 0 6 .
+     else
+        update-rc.d -f lvm2 remove >/dev/null 2>&1
+        update-rc.d lvm2 stop 20 0 1 6 . >/dev/null 2>&1
+     fi
+  fi
+
+  if [ -n "$SRAID" ] ; then
+     if is_value_set "mdadm"  ; then
+        update-rc.d -f mdadm remove >/dev/null 2>&1
+        update-rc.d mdadm-raid start 25 S . start 50 0 6 . >/dev/null 2>&1
+        update-rc.d mdadm defaults 25 >/dev/null 2>&1
+     else
+        update-rc.d -f mdadm remove >/dev/null 2>&1
+        update-rc.d mdadm stop 20 0 1 6 . >/dev/null 2>&1
+        update-rc.d -f mdadm-raid remove >/dev/null 2>&1
+        update-rc.d mdadm-raid stop 20 0 1 6 . >/dev/null 2>&1
+     fi
+  fi
+
+  if [ -n "$MRAID" ] ; then
+     if is_value_set "dmraid" ; then
+        update-rc.d -f dmraid remove >/dev/null 2>&1
+        update-rc.d dmraid start 04 S . start 51 0 6 . >/dev/null
+     else
+        update-rc.d -f dmraid remove >/dev/null 2>&1
+        update-rc.d dmraid stop 20 0 1 6 . >/dev/null 2>&1
+     fi
+  fi
+
+  if [ -n "$DBUS" ] ; then
+     if is_value_set "dbus" ; then
+        update-rc.d -f dbus remove >/dev/null 2>&1
+        update-rc.d dbus defaults >/dev/null 2>&1
+     else
+        update-rc.d -f dbus remove >/dev/null 2>&1
+        update-rc.d dbus stop 20 0 1 6 . >/dev/null 2>&1
+     fi
   fi
 
-  if is_value_set "dmraid" ; then
-     update-rc.d -f dmraid remove >/dev/null 2>&1
-     update-rc.d dmraid start 04 S . start 51 0 6 . >/dev/null
-  else
-     update-rc.d -f dmraid remove >/dev/null 2>&1
-     update-rc.d dmraid stop 20 0 1 6 . >/dev/null 2>&1
+  if [ -n "$HAL" ] ; then
+     if is_value_set "hal" ; then
+        update-rc.d -f hal remove >/dev/null 2>&1
+        update-rc.d hal start 24 2 3 4 5. stop 16 0 1 6 . >/dev/null 2>&1
+     else
+        update-rc.d -f hal remove >/dev/null 2>&1
+        update-rc.d hal stop 20 0 1 6 . >/dev/null 2>&1
+     fi
   fi
 
-  if is_value_set "dbus" ; then
-     update-rc.d -f dbus remove >/dev/null 2>&1
-     update-rc.d dbus defaults >/dev/null 2>&1
-  else
-     update-rc.d -f dbus remove >/dev/null 2>&1
-     update-rc.d dbus stop 20 0 1 6 . >/dev/null 2>&1
+  if [ -n "$NFS" ] ; then
+     if is_value_set "nfs" ; then
+        update-rc.d -f nfs-common remove >/dev/null 2>&1
+        update-rc.d nfs-common start 20 2 3 4 5 . stop 20 0 1 6 . start 44 S . >/dev/null 2>&1
+     else
+        update-rc.d -f nfs-common remove >/dev/null 2>&1
+        update-rc.d nfs-common stop 20 0 1 6 . >/dev/null 2>&1
+     fi
   fi
 }
 
 # the interface itself
 oifs="$IFS"
 IFS='!'
-$DIALOG --title "$PN" --checklist "$INFO" 30 65 8 $SRAID $MRAID $DBUS 2>$TMP
+$DIALOG --title "$PN" --checklist "$INFO" 30 65 8 "$LVM" "$SRAID" "$MRAID" "$DBUS" "$HAL" "$NFS" 2>"$TMP"
 
 retval="$?"
 case $retval in
@@ -97,7 +147,7 @@ case $retval in
           ;;
 esac
 
-rm -f $TMP
+rm -f "$TMP"
 IFS="$oifs"
 
 ## END OF FILE #################################################################