blob: 766f0ddb7efe00cefcd9de57b7f08bd4b02dbe07 (
plain)
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
147
148
149
150
151
152
153
154
|
#/bin/sh -e
# Source debconf library.
. /usr/share/debconf/confmodule
# Function for grabbing a parameter from an smb.conf file
smbconf_retr() {
if [ -z "$1" ]; then
return
fi
if [ -n "$2" ]; then
local FILE="$2"
fi
if [ -z "$FILE" ]; then
return
fi
sed -n -e"
s/^[[:space:]]*\[global\]/\[global\]/i
/^\[global\]/,/^[[:space:]]*\[/ {
s/^[[:space:]]*$1[[:space:]]*=[[:space:]]*//pi
}" $FILE \
| tail -n 1
}
FILE=/etc/samba/smb.conf
db_title "Samba Server"
# We ask the question IFF the config contains complex options that could
# cause us to break the config.
if [ -f "$FILE" ] && grep -v dhcp.conf $FILE \
| grep -qEi '\\$|^[[:space:]]*include[[:space:]]*='
then
db_input high samba-common/do_debconf || true
db_go
else
db_set samba-common/do_debconf true
fi
# If user doesn't want to use debconf to configure Samba the leave...
db_get samba-common/do_debconf || true
if [ "${RET}" = "false" ]; then
exit 0
fi
# User wants to use debconf, let's continue...
# Adjust priority of the question about the workgroup name depending
# on whether a workgroup name has already being specified.
db_get samba-common/workgroup || true
if [ "${RET}" ]; then
WGPRIORITY=medium
else
WGPRIORITY=high
fi
# Preload any values from the existing smb.conf file
if [ -f $FILE ]; then
WORKGROUP=`smbconf_retr workgroup`
if [ "$WORKGROUP" ]; then
db_set samba-common/workgroup "$WORKGROUP"
fi
ENCRYPT=`smbconf_retr "encrypt passwords"`
if [ "$ENCRYPT" ]; then
ENCRYPT=`echo $ENCRYPT | tr '[A-Z]' '[a-z]'`
if [ "$ENCRYPT" = "yes" ]; then
ENCRYPT=true
elif [ "$ENCRYPT" = "no" ]; then
ENCRYPT=false
fi
db_set samba-common/encrypt_passwords "$ENCRYPT"
fi
CHARSET=`smbconf_retr "character set"`
CODEPAGE=`smbconf_retr "client code page"`
UNIXCHARSET=`smbconf_retr "unix charset"`
DOSCHARSET=`smbconf_retr "dos charset"`
# If we're upgrading from an old version and there's no
# 'passdb backend' setting, add one.
if [ "$1" = "configure" -a -n "$2" ] \
&& dpkg --compare-versions "$2" lt 2.99.cvs.20020713-2 \
&& ! grep -q -i '^[[:space:]]*passdb backend[[:space:]]*=' $FILE
then
TMPFILE=/etc/samba/smb.conf.dpkg-tmp
sed -e'
s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
s/^\([[:space:]]*\)encrypt passwords/\1encrypt passwords/i
/^[[:space:]]*\[global\]/,/^[[:space:]]*\[/ {
/^[[:space:]]*encrypt passwords[[:space:]]*=/a \
passdb backend = smbpasswd guest
}' < $FILE > ${TMPFILE}
chmod a+r ${TMPFILE}
mv -f ${TMPFILE} /etc/samba/smb.conf
fi
fi
# Get workgroup name
db_input $WGPRIORITY samba-common/workgroup || true
db_go
# Use encrypted passwords?
db_input medium samba-common/encrypt_passwords || true
db_go
# Handle migrating character sets
if [ -n "$CHARSET" -a -z "$UNIXCHARSET" ]
then
UNIXCHARSET=`echo $CHARSET | sed -e's/iso-/ISO/i'`
db_set samba-common/character_set "$UNIXCHARSET"
# FIXME: should eventually be low.
db_input medium samba-common/character_set || true
db_go
fi
if [ -n "$CODEPAGE" -a -z "$DOSCHARSET" ]
then
DOSCHARSET=CP`echo $CODEPAGE | sed -e's/[[:alpha:]]*//g'`
db_set samba-common/codepage "$DOSCHARSET"
# FIXME: should eventually be low.
db_input medium samba-common/codepage || true
db_go
fi
DHCPPRIORITY=medium
#if [ "$DEBCONF_RECONFIGURE" = 1 ] && [ -f /sbin/dhclient3 ]
if [ -f /sbin/dhclient3 ]
then
DHCPPRIORITY=high
# TODO: see if we can detect that dhcp3-client is *going* to be installed,
# even if it isn't yet.
#elif dpkg-query -W --showformat='${Status}\n' dhcp3-client | grep ???
# unknown ok not-installed ?
# DHCPPRIORITY=high
fi
if [ ! -f $FILE ] || grep -q -i 'wins server' $FILE
then
# check the values before and after; unset the 'applied' flag
# if they don't match.
db_get samba-common/dhcp || true
OLDDHCP="$RET"
db_input $DHCPPRIORITY samba-common/dhcp || true
db_go
db_get samba-common/dhcp || true
if [ "$OLDDHCP" != "$RET" ]; then
db_fset samba-common/dhcp applied false
fi
fi
|