File: tryton-server.postinst

package info (click to toggle)
tryton-server 7.0.43-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 7,760 kB
  • sloc: python: 53,744; xml: 5,194; sh: 803; sql: 217; makefile: 28
file content (102 lines) | stat: -rw-r--r-- 3,326 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/bin/sh

set -e

TRYTON_USER="tryton"
TRYTON_CONFDIR="/etc/tryton"
TRYTON_SHAREDIR="/usr/share/tryton-server"
TRYTON_CONFFILE="${TRYTON_CONFDIR}/trytond.conf"
TRYTON_CONFTEMPLATE="${TRYTON_SHAREDIR}/default/trytond.conf"
TRYTON_LOGCONFFILE="${TRYTON_CONFDIR}/trytond_log.conf"
TRYTON_LOGCONFTEMPLATE="${TRYTON_SHAREDIR}/default/trytond_log.conf"
TRYTON_LOGDIR="/var/log/tryton"
TRYTON_HOMEDIR="/var/lib/tryton"

# POSIX-compliant shell function to check for the existence of a command
# s. developers-reference 6.4
pathfind() {
    OLDIFS="$IFS"
    IFS=:
    for p in $PATH; do
        if [ -x "$p/$*" ]; then
            IFS="$OLDIFS"
            return 0
        fi
    done
    IFS="$OLDIFS"
    return 1
}

case "${1}" in
    configure)
        # Creating system user
        adduser --home "${TRYTON_HOMEDIR}" --no-create-home --quiet --system --group "${TRYTON_USER}"

        # Creating home directory (also used for storage of attachments)
        mkdir -p "${TRYTON_HOMEDIR}"
        chown "${TRYTON_USER}":"${TRYTON_USER}" "${TRYTON_HOMEDIR}"

        # Creating log directory
        mkdir -p "${TRYTON_LOGDIR}"
        chown "${TRYTON_USER}":adm "${TRYTON_LOGDIR}"

        # Create the configuration directory, copy configuration defaults
        # if the target does not exist yet and register the configuration files
        mkdir -p "${TRYTON_CONFDIR}"
        if [ ! -e $TRYTON_CONFFILE ]; then
            cp "${TRYTON_CONFTEMPLATE}" "${TRYTON_CONFFILE}"
            if pathfind ucf; then
                ucf --debconf-ok --src-dir "$TRYTON_SHAREDIR/default/" "$TRYTON_CONFTEMPLATE" "$TRYTON_CONFFILE"
                ucfr --force tryton-server "${TRYTON_CONFFILE}"
            fi
        fi
        if [ ! -e $TRYTON_LOGCONFFILE ]; then
            cp "${TRYTON_LOGCONFTEMPLATE}" "${TRYTON_LOGCONFFILE}"
            if pathfind ucf; then
                ucf --debconf-ok --src-dir "$TRYTON_SHAREDIR/default/" "$TRYTON_LOGCONFTEMPLATE" "$TRYTON_LOGCONFFILE"
                ucfr --force tryton-server "${TRYTON_LOGCONFFILE}"
            fi
        fi

        # Set ownership and permissions on configuration files:
        # otherwise trytond uses internal defaults, if it cannot
        # read the configuration files.
        for _ITEM in "${TRYTON_CONFFILE}" "${TRYTON_LOGCONFFILE}"; do
            if ! dpkg-statoverride --list "${_ITEM}" > /dev/null 2>&1
            then
                chown "${TRYTON_USER}":"${TRYTON_USER}" "${_ITEM}"
                chmod 0440 "${_ITEM}"
            fi
        done

        # Restricting access to home and log directories for security reasons (private information)
        for _DIRECTORY in "${TRYTON_HOMEDIR}" "${TRYTON_LOGDIR}"
        do
            if ! dpkg-statoverride --list "${_DIRECTORY}" > /dev/null 2>&1
            then
                chmod 0750 "${_DIRECTORY}"
            fi
        done

        # Add the tryton user to the ssl-cert group on fresh installs
        if [ -z "$2" ]; then
            if getent group ssl-cert > /dev/null 2>&1
            then
                adduser --quiet "${TRYTON_USER}" ssl-cert
            fi
        fi
        ;;

    abort-upgrade|abort-remove|abort-deconfigure)

        ;;

    *)
        echo "postinst called with unknown argument \`{$1}'" >&2
        exit 1
        ;;
esac

#DEBHELPER#

exit 0