aboutsummaryrefslogtreecommitdiffstats
path: root/misc/afbackup/pkg-install
blob: 6433712452ec9817589d554938ff215c5affa449 (plain) (blame)
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
#!/bin/sh

#set -vx

PKG_BATCH=${BATCH:=NO}
PKG_PREFIX=${PKG_PREFIX:=/usr/local}

SERVERVARDIR=/var/spool/afbackup

#
# create 'afbackup' user before installing
#

dlg() {
    if [ X"${NONINTERACTIVE}" != "XYES" ]; then
        dialog "$@"
        return $?
    else
        i=1
        while [ $i -lt $# ]; do
            eval 'arg="$'$i'"'
            if [ $arg = '--msgbox' ]; then
                eval 'echo "$'$(($i+1))'"'
                return 0
            fi
            i=$(($i+1))
        done
    fi
    return 0;
}

create() {
    if [ ! -x /usr/sbin/pw ]; then
        dlg --msgbox "Please add a user named \`afbackup' before installing this package." 6 60
        exit 69
    fi

    if [ -x /sbin/nologin ]; then
        shell=/sbin/nologin
    else
        shell=/nonexistent
    fi
    if ! pw show user afbackup -q >/dev/null; then
        if ! dlg --clear --yesno "There is no user afbackup on your system.\n\nDo you want it to be created?" 7 60; then
            dlg --msgbox "Please add a user named \`afbackup' before installing this package." 6 60
            exit 69
        fi
        uid=100
        while pw show user -u ${uid} -q >/dev/null; do
            uid=`expr ${uid} + 1`
        done
        if ! pw add user afbackup -u ${uid} -g operator -d "/nonexistent" \
                -c "AFBackup System Owner" -s "${shell}" \
                ; then
            e=$?
            dlg --msgbox "Failed to add an account for \`afbackup' user. Please add it manually." 6 60
            exit ${e}
        fi
        echo "==>  Added user \`afbackup' (id ${uid})"
    else
        if ! pw mod user afbackup -g operator -d "/nonexistent" \
                -c "AFBackup System Owner" -s "${shell}" \
                ; then
            e=$?
            dlg --msgbox "Failed to update user \`afbackup'." 6 60
            exit ${e}
        fi
        echo "==>  Updated user \`afbackup'."
    fi
}

case $2 in
    PRE-INSTALL)
        create
        ;;
    POST-INSTALL)
                case $1 in
                        *-client*)
                        ;;
                        *)
                        if [ ! -d ${SERVERVARDIR} ]; then
                install -d -o afbackup -g operator ${SERVERVARDIR}
                touch ${SERVERVARDIR}/readonly_tapes
            fi
                        ;;
                esac

        ;;
esac