summaryrefslogtreecommitdiff
path: root/packaging/Debian/debian/samba-common.config
blob: ed76b95cb84c732834de28c37242cdffec0582c4 (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 -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