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
|
#!/bin/sh
#
#
set -e
# Do debconf stuff here
. /usr/share/debconf/confmodule
# We need a default smb.conf file. If one doesn't exist we put in place
# one that has some basic defaults.
if [ ! -e /etc/samba/smb.conf ]; then
cp -a /usr/share/samba/smb.conf /etc/samba/
fi
# Static tempfile location, dpkg-style
TMPFILE=/etc/samba/smb.conf.dpkg-tmp
# ------------------------- Debconf questions start ---------------------
# Is the user configuring with debconf, or he/she prefers swat/manual
# config?
db_get samba-common/do_debconf || true
if [ "${RET}" = "true" ]; then
# Get workgroup name
db_get samba-common/workgroup || true
WORKGROUP="${RET}"
# Oh my GOD, this is ugly. Why would anyone put these
# characters in a workgroup name? Why, Lord, why???
WORKGROUP=`echo $WORKGROUP | \
sed -e's/\\\\/\\\\\\\\/g
s#/#\\\\/#g
s/&/\\\&/g
s/\\\$/\\\\\\\$/g'`
sed -e "s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
/^[[:space:]]*\[global\]/,/^[[:space:]]*\[/ \
s/^\([[:space:]]*\)workgroup[[:space:]]*=.*/\1workgroup = ${WORKGROUP}/i" \
< /etc/samba/smb.conf >${TMPFILE}
mv -f ${TMPFILE} /etc/samba/smb.conf
# Encrypt passwords?
db_get samba-common/encrypt_passwords || true
ENCRYPT_PASSWORDS="${RET}"
sed -e "s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
/^[[:space:]]*\[global\]/,/^[[:space:]]*\[/ \
s/^\([[:space:]]*\)encrypt passwords[[:space:]]*=.*/\1encrypt passwords = ${ENCRYPT_PASSWORDS}/i" \
< /etc/samba/smb.conf >${TMPFILE}
mv -f ${TMPFILE} /etc/samba/smb.conf
# Install DHCP support
db_get samba-common/dhcp && DHCPVAL="$RET"
db_fget samba-common/dhcp applied || true
if [ "$DHCPVAL" = true ] && [ "$RET" != true ] && \
! grep -q dhcp.conf /etc/samba/smb.conf
then
sed -e "s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
/^[[:space:]]*\[global\]/,/^[[:space:]]*\[/ {
/wins server[[:space:]]*=/a \\
\\
# If we receive WINS server info from DHCP, override the options above. \\
include = /etc/samba/dhcp.conf
}" < /etc/samba/smb.conf > ${TMPFILE}
mv -f ${TMPFILE} /etc/samba/smb.conf
elif [ "$RET" != true ] && grep -q dhcp.conf /etc/samba/smb.conf
then
:
# FIXME: here we /delete/ the lines?
fi
# Once we get here, the config has been applied, whatever
# it is.
if [ "$RET" != true ]; then
db_fset samba-common/dhcp applied true
fi
# Update charset settings?
if ! grep -q "^[[:space:]]*unix charset[[:space:]]*=" /etc/samba/smb.conf
then
db_get samba-common/character_set || true
UNIXCHARSET="${RET}"
if [ -n "$UNIXCHARSET" ]
then
sed -e "s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
s/^\([[:space:]]*\)character set/\1character set/i
/^[[:space:]]*\[global\]/,/^[[:space:]]*\[/ {
/^[[:space:]]*character set[[:space:]]*=/c \\
unix charset = $UNIXCHARSET
}" < /etc/samba/smb.conf > ${TMPFILE}
mv -f ${TMPFILE} /etc/samba/smb.conf
fi
fi
if grep -qi "^[[:space:]]*passdb backend[[:space:]]*=.*unixsam" /etc/samba/smb.conf
then
sed -e 's/^\([[:space:]]*\)passdb backend/\1passdb backend/i
/^[[:space:]]*passdb backend/ {
s/unixsam/guest/i
}' < /etc/samba/smb.conf > ${TMPFILE}
mv -f ${TMPFILE} /etc/samba/smb.conf
fi
if ! grep -q "^[[:space:]]*dos charset[[:space:]]*=" /etc/samba/smb.conf
then
db_get samba-common/codepage || true
DOSCHARSET="${RET}"
if [ -n "$DOSCHARSET" ]
then
sed -e "s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
s/^\([[:space:]]*\)client code page/\1client code page/i
/^[[:space:]]*\[global\]/,/^[[:space:]]*\[/ {
/^[[:space:]]*client code page[[:space:]]*=/c \\
dos charset = $DOSCHARSET
}" < /etc/samba/smb.conf > ${TMPFILE}
mv -f ${TMPFILE} /etc/samba/smb.conf
fi
fi
if dpkg --compare-versions "$2" lt 2.999+3.0.alpha20-4 \
&& ! grep -q "^[[:space:]]*panic action[[:space:]]*=" /etc/samba/smb.conf
then
sed -e "s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
/^[[:space:]]*\[global\]/a \\
\\
# Do something sensible when Samba crashes: mail the admin a backtrace\\
panic action = /usr/share/samba/panic-action %d" < /etc/samba/smb.conf > ${TMPFILE}
mv -f ${TMPFILE} /etc/samba/smb.conf
fi
fi
chmod a+r /etc/samba/smb.conf
# ------------------------- Debconf questions end ---------------------
db_stop
#DEBHELPER#
|