blob: 7943155492879ddcc9b1199d510cfd8579e6f40a (
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
#! /bin/sh
chmods_done=" "
ask() {
local question default answer
question=$1
default=$2
if [ -z "${PACKAGE_BUILDING}" ]; then
read -p "${question} [${default}]? " answer
fi
if [ x${answer} = x ]; then
answer=${default}
fi
echo ${answer}
}
yesno() {
local dflt question answer
question=$1
dflt=$2
while :; do
answer=$(ask "${question}" "${dflt}")
case "${answer}" in
[Yy]*) return 0;;
[Nn]*) return 1;;
esac
echo "Please answer yes or no."
done
}
make_account() {
local u g gcos homeopt home
u=$1
g=$2
gcos=$3
homeopt=${4:+"-d $4"}
if pw group show "${g}" >/dev/null 2>&1; then
echo "You already have a group \"${g}\", so I will use it."
else
echo "You need a group \"${g}\"."
if which -s pw && yesno "Would you like me to create it" y; then
pw groupadd ${g} || exit
echo "Done."
else
echo "Please create it, and try again."
if ! grep -q "^${u}:" /etc/passwd; then
echo "While you're at it, please create a user \"${u}\" too,"
echo "with a default group of \"${g}\"."
fi
exit 1
fi
fi
if pw user show "${u}" >/dev/null 2>&1; then
echo "You already have a user \"${u}\", so I will use it."
else
echo "You need a user \"${u}\"."
if which -s pw && yesno "Would you like me to create it" y; then
pw useradd ${u} -g ${g} -h - ${homeopt} \
-s /nonexistent -c "${gcos}" || exit
echo "Done."
else
echo "Please create it, and try again."
exit 1
fi
fi
if [ x"$homeopt" = x ]; then
eval home=~${u}
if [ ! -d "${home}" ]; then
if yesno \
"Would you like me to create ${u}'s home directory (${home})" y
then
(umask 77 && \
mkdir -p ${home}) || exit
chown -R ${u}:${g} ${home} || exit
else
echo "Please create it, and try again."
exit 1
fi
fi
fi
}
case $2 in
POST-INSTALL)
if which -s pw && which -s lockf; then
:
else
cat <<EOF
This system looks like a pre-2.2 version of FreeBSD. I see that it
is missing the "lockf" and/or "pw" utilities. I need these utilities.
Please get them and install them, and try again. You can get the
sources from:
ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/usr.bin/lockf.tar.gz
ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/usr.sbin/pw.tar.gz
EOF
exit 1
fi
user=jserver
group=jserver
spooldir="/var/jspool"
etcdir=${PREFIX}/etc
echo ""
make_account ${user} ${group} "Jabber Daemon" "/nonexistent"
echo "Fixing ownerships and modes in \"${spooldir}\"."
chown -R ${user}:${group} ${spooldir}
chmod -R go= ${spooldir}
echo "Fixing config files ownerships and modes."
chown root:${group} ${etcdir}/jserver.xml ${etcdir}/jserver.xml.default
chmod 640 ${etcdir}/jserver.xml ${etcdir}/jserver.xml.default
if [ ! -f /var/log/jserver.log ]; then
echo "Creating \"/var/log/jserver.log\"."
cp /dev/null /var/log/jserver.log
fi
if [ ! -f /var/log/jserver.error ]; then
echo "Creating \"/var/log/jserver.error\"."
cp /dev/null /var/log/jserver.error
fi
if [ ! -f /var/log/jserver_packet.log ]; then
echo "Creating \"/var/log/jserver_packet.log\"."
cp /dev/null /var/log/jserver_packet.log
fi
echo "Fixing log files ownerships and modes."
chown ${user}:${group} /var/log/jserver.log /var/log/jserver.error /var/log/jserver_packet.log
chmod 600 /var/log/jserver.log /var/log/jserver.error /var/log/jserver_packet.log
;;
esac
|