#!/bin/sh CONFIGFILE=/etc/tangorc set -e . /usr/share/debconf/confmodule # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in configure) # If the package has default file it could be sourced, so that # the local admin can overwrite the defaults [ -f "/etc/default/tango" ] && . /etc/default/tango # Sane defaults: [ -z "$SERVER_HOME" ] && SERVER_HOME=/var/lib/tango [ -z "$SERVER_USER" ] && SERVER_USER=tango [ -z "$SERVER_NAME" ] && SERVER_NAME="Tango Control System Server" [ -z "$SERVER_GROUP" ] && SERVER_GROUP=tango # Groups that the user will be added to, if undefined, then none. ADDGROUP="video" # create user to avoid running server as root # 1. create group if not existing if ! getent group | grep -q "^$SERVER_GROUP:" ; then echo -n "Adding group $SERVER_GROUP.." addgroup --quiet --system $SERVER_GROUP 2>/dev/null || true echo "..done" fi # 2. create homedir if not existing test -d $SERVER_HOME || mkdir $SERVER_HOME # 3. create user if not existing if ! getent passwd | grep -q "^$SERVER_USER:"; then echo -n "Adding system user $SERVER_USER.." adduser --quiet \ --system \ --ingroup $SERVER_GROUP \ --no-create-home \ --home /nonexistent \ --disabled-password \ $SERVER_USER 2>/dev/null || true echo "..done" fi # 4. adjust passwd entry usermod -c "$SERVER_NAME" \ -d $SERVER_HOME \ -g $SERVER_GROUP \ $SERVER_USER # 5. adjust file and directory permissions if ! dpkg-statoverride --list $SERVER_HOME >/dev/null then chown -R $SERVER_USER:$SERVER_GROUP $SERVER_HOME chmod u=rwx,g=rxs,o= $SERVER_HOME fi # 6. Add the user to the ADDGROUP group if test $ADDGROUP then if ! groups $SERVER_USER | cut -d: -f2 | \ grep -qw $ADDGROUP; then adduser $SERVER_USER $ADDGROUP fi fi ;; abort-upgrade|abort-remove|abort-deconfigure) ;; esac # Generate config file, if it doesn't exist. # An alternative is to copy in a template # file from elsewhere. if [ ! -e $CONFIGFILE ]; then echo "# Config file for my package" > $CONFIGFILE echo "TANGO_HOST=" >> $CONFIGFILE fi # Substitute in the values from the debconf db. # There are obvious optimizations possible here. # The cp before the sed ensures we do not mess up # the config file's ownership and permissions. db_get tango-common/tango-host TANGO_HOST=$RET cp -a -f $CONFIGFILE $CONFIGFILE.tmp # If the admin deleted or commented some variables but then set # them via debconf, (re-)add them to the conffile. test -z "$TANGO_HOST" || grep -Eq '^ *TANGO_HOST=' $CONFIGFILE || \ echo "TANGO_HOST=" >> $CONFIGFILE sed -e "s/^ *TANGO_HOST=.*/TANGO_HOST=$TANGO_HOST/" \ < $CONFIGFILE > $CONFIGFILE.tmp mv -f $CONFIGFILE.tmp $CONFIGFILE