summaryrefslogtreecommitdiff
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