add Map::Splat to deps, #37802
[freeside.git] / debian / preinst
1 #!/bin/sh
2 # preinst script for freeside
3 #
4 # see: dh_installdeb(1)
5
6 set -e
7
8 # summary of how this script can be called:
9 #        * <new-preinst> `install'
10 #        * <new-preinst> `install' <old-version>
11 #        * <new-preinst> `upgrade' <old-version>
12 #        * <old-preinst> `abort-upgrade' <new-version>
13 # for details, see http://www.debian.org/doc/debian-policy/ or
14 # the debian-policy package
15
16
17 case "$1" in
18     install|upgrade)
19
20        # If the package has default file it could be sourced, so that
21        # the local admin can overwrite the defaults
22      
23        [ -f "/etc/default/freeside" ] && . /etc/default/freeside
24      
25        # Sane defaults:
26      
27        [ -z "$FREESIDE_HOME" ] && FREESIDE_HOME=/home/freeside
28        [ -z "$FREESIDE_USER" ] && FREESIDE_USER=freeside
29        [ -z "$FREESIDE_NAME"   ] && FREESIDE_NAME="Freeside"
30        [ -z "$FREESIDE_GROUP"  ] && FREESIDE_GROUP=freeside
31
32        [ -z "$RT_GROUP"  ] && RT_GROUP=rt
33      
34        # Groups that the user will be added to, if undefined, then none.
35        ADDGROUP="rt"
36      
37        # create user to avoid running server as root
38        # 1. create group if not existing
39        if ! getent group | grep -q "^$FREESIDE_GROUP:" -; then
40           echo -n "Adding group $FREESIDE_GROUP.."
41           addgroup --quiet --system $FREESIDE_GROUP 2>/dev/null ||true
42           echo "..done"
43        fi
44        if ! getent group | grep -q "^$RT_GROUP:" -; then
45           echo -n "Adding group $RT_GROUP.."
46           addgroup --quiet --system $RT_GROUP 2>/dev/null ||true
47           echo "..done"
48        fi
49        # 2. create homedir if not existing
50        test -d $FREESIDE_HOME || mkdir $FREESIDE_HOME
51        # 3. create user if not existing
52        if ! getent passwd | grep -q "^$FREESIDE_USER:" -; then
53          echo -n "Adding system user $FREESIDE_USER.."
54          adduser --quiet \
55                  --system \
56                  --ingroup $FREESIDE_GROUP \
57                  --shell /bin/sh \
58                  --no-create-home \
59                  --disabled-password \
60                  $FREESIDE_USER 2>/dev/null || true
61          echo "..done"
62        fi
63        # 4. adjust passwd entry
64        usermod -c "$FREESIDE_NAME" \
65                -d $FREESIDE_HOME   \
66                -g $FREESIDE_GROUP  \
67                   $FREESIDE_USER
68        # 5. adjust file and directory permissions
69        if ! dpkg-statoverride --list $FREESIDE_HOME >/dev/null
70        then
71            chown -R $FREESIDE_USER:adm $FREESIDE_HOME
72            chmod u=rwx,g=rxs,o= $FREESIDE_HOME
73        fi
74        # 6. Add the user to the ADDGROUP group
75        if test -n $ADDGROUP
76        then
77            if ! groups $FREESIDE_USER | cut -d: -f2 | \
78               grep -qw $ADDGROUP -; then
79                 adduser $FREESIDE_USER $ADDGROUP
80            fi
81        fi
82     ;;
83
84     abort-upgrade)
85     ;;
86
87     *)
88         echo "preinst called with unknown argument \`$1'" >&2
89         exit 1
90     ;;
91 esac
92
93 # dh_installdeb will replace this with shell code automatically
94 # generated by other debhelper scripts.
95
96 #DEBHELPER#
97
98 exit 0
99
100