Release new version 2.13.0
[grml-scripts.git] / usr_sbin / grml-setservices
1 #!/bin/bash
2 # Filename:      grml-setservices
3 # Purpose:       interface for basic configuration of system startup
4 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
5 # Bug-Reports:   see http://grml.org/bugs/
6 # License:       This file is licensed under the GPL v2.
7 ################################################################################
8
9 PN="$(basename $0)"
10 TMP=$(mktemp)
11 DIALOG=dialog
12 CONFFILE='/etc/runlevel.conf'
13
14 . /etc/grml/script-functions
15 . /etc/grml/lsb-functions
16
17 check4root || exit 100
18
19 bailout(){
20   rm -f "$TMP"
21   exit 0
22 }
23
24 trap bailout HUP INT QUIT TERM
25
26 is_value_set(){
27  [ -n "$1" ] || return 2
28  [ -r "$TMP" ] || return 3
29  grep -q "$1" $TMP && return 0 || return 1
30 }
31
32 INFO="Which services would you like to have enabled on your system?
33
34 Notice: this script will adjust your ${CONFFILE}, the
35 file which provides the startup configuration for your
36 system. You can edit the file manually as well.
37
38 If you do not know what to choose just take the defaults
39 or choose cancel.
40 "
41
42 # enable checks only if the according init script is present
43 [ -r /etc/init.d/lvm2 ]   && LVM='lvm!logical volume management!on'
44 [ -r /etc/init.d/mdadm ]  && SRAID='mdadm!software-raid via mdadm!on'
45 [ -r /etc/init.d/dmraid ] && MRAID='dmraid!software-raid via dmraid!off'
46 [ -r /etc/init.d/dbus -o -r /etc/init.d/dbus-1 ] && DBUS='dbus!hal/dbus (important for KDE e.g.)!off'
47 [ -r /etc/init.d/hal ]    && HAL='hal!Hardware Abstraction Layer daemon (important for KDE e.g.)!off'
48 [ -r /etc/init.d/nfs-common ] && NFS='nfs!Network File System (client setup)!off'
49
50 ## adjust setup
51 # logic:
52 # if is_value_set
53 #    remove_from_runlevel.conf
54 #    set_up_defaults_as_intented_in_/var/lib/dpkg/info/$PACKAGE.postinst
55 # else
56 #    remove_from_runlevel.conf
57 #    set_up_only_for_stop_to_prevent_reactivation_via_maintainer_scripts_on_upgrade
58 set_values(){
59   if [ -n "$LVM" ] ; then
60      if is_value_set "lvm" ; then
61         update-rc.d -f lvm2 remove >/dev/null 2>&1
62         update-rc.d lvm2 start 26 S . start 50 0 6 .
63      else
64         update-rc.d -f lvm2 remove >/dev/null 2>&1
65         update-rc.d lvm2 stop 20 0 1 6 . >/dev/null 2>&1
66      fi
67   fi
68
69   if [ -n "$SRAID" ] ; then
70      if is_value_set "mdadm"  ; then
71         update-rc.d -f mdadm remove >/dev/null 2>&1
72         update-rc.d mdadm-raid start 25 S . start 50 0 6 . >/dev/null 2>&1
73         update-rc.d mdadm defaults 25 >/dev/null 2>&1
74      else
75         update-rc.d -f mdadm remove >/dev/null 2>&1
76         update-rc.d mdadm stop 20 0 1 6 . >/dev/null 2>&1
77         update-rc.d -f mdadm-raid remove >/dev/null 2>&1
78         update-rc.d mdadm-raid stop 20 0 1 6 . >/dev/null 2>&1
79      fi
80   fi
81
82   if [ -n "$MRAID" ] ; then
83      if is_value_set "dmraid" ; then
84         update-rc.d -f dmraid remove >/dev/null 2>&1
85         update-rc.d dmraid start 04 S . start 51 0 6 . >/dev/null
86      else
87         update-rc.d -f dmraid remove >/dev/null 2>&1
88         update-rc.d dmraid stop 20 0 1 6 . >/dev/null 2>&1
89      fi
90   fi
91
92   if [ -n "$DBUS" ] ; then
93      if is_value_set "dbus" ; then
94         update-rc.d -f dbus remove >/dev/null 2>&1
95         update-rc.d dbus defaults >/dev/null 2>&1
96      else
97         update-rc.d -f dbus remove >/dev/null 2>&1
98         update-rc.d dbus stop 20 0 1 6 . >/dev/null 2>&1
99      fi
100   fi
101
102   if [ -n "$HAL" ] ; then
103      if is_value_set "hal" ; then
104         update-rc.d -f hal remove >/dev/null 2>&1
105         update-rc.d hal start 24 2 3 4 5. stop 16 0 1 6 . >/dev/null 2>&1
106      else
107         update-rc.d -f hal remove >/dev/null 2>&1
108         update-rc.d hal stop 20 0 1 6 . >/dev/null 2>&1
109      fi
110   fi
111
112   if [ -n "$NFS" ] ; then
113      if is_value_set "nfs" ; then
114         update-rc.d -f nfs-common remove >/dev/null 2>&1
115         update-rc.d nfs-common start 20 2 3 4 5 . stop 20 0 1 6 . start 44 S . >/dev/null 2>&1
116      else
117         update-rc.d -f nfs-common remove >/dev/null 2>&1
118         update-rc.d nfs-common stop 20 0 1 6 . >/dev/null 2>&1
119      fi
120   fi
121 }
122
123 # the interface itself
124 oifs="$IFS"
125 IFS='!'
126 $DIALOG --title "$PN" --checklist "$INFO" 30 65 8 $LVM $SRAID $MRAID $DBUS $HAL $NFS 2>$TMP
127
128 retval="$?"
129 case $retval in
130     (0)   set_values ;;
131     (1)   echo "Cancel pressed." ; exit 1 ;;
132     (255) echo "ESC pressed."    ; exit 1 ;;
133 esac
134
135 retval=$?
136 case $retval in
137     (0)
138           $DIALOG --title "$PN" --stdout --msgbox "Adjusting system runlevel configuration via $CONFFILE was successful." 0 0
139           esyslog user.notice "$PN" "Writing language settings ($LANGUAGE) to $CONFFILE was successful."
140           ;;
141     *)
142           $DIALOG --title "$PN" --stdout --msgbox "Error writing settings to ${CONFFILE}." 0 0
143           esyslog user.notice "$PN" "Error writing settings to ${CONFFILE}."
144           ;;
145 esac
146
147 rm -f $TMP
148 IFS="$oifs"
149
150 ## END OF FILE #################################################################
151 # vim: ai tw=80 expandtab