import HEAD into svn+ssh://svn.samba.org/home/svn/samba/trunk
[metze/old/v3-2-winbind-ndr.git] / packaging / Debian / debian / samba-common.config
1 #/bin/sh -e
2
3 # Source debconf library.
4 . /usr/share/debconf/confmodule
5
6 # Function for grabbing a parameter from an smb.conf file
7 smbconf_retr() {
8         if [ -z "$1" ]; then
9                 return
10         fi
11
12         if [ -n "$2" ]; then
13                 local FILE="$2"
14         fi
15
16         if [ -z "$FILE" ]; then
17                 return
18         fi
19
20         sed -n -e"
21                 s/^[[:space:]]*\[global\]/\[global\]/i
22                 /^\[global\]/,/^[[:space:]]*\[/ {
23                         s/^[[:space:]]*$1[[:space:]]*=[[:space:]]*//pi
24                 }" $FILE \
25         | tail -1
26 }
27
28 FILE=/etc/samba/smb.conf
29
30 db_title "Samba Server"
31
32 # We ask the question IFF the config contains complex options that could
33 # cause us to break the config.
34 if [ -f "$FILE" ] && grep -v dhcp.conf $FILE \
35                      | grep -qEi '\\$|^[[:space:]]*include[[:space:]]*='
36 then
37         db_input high samba-common/do_debconf || true
38         db_go
39 else
40         db_set samba-common/do_debconf true
41 fi
42
43 # If user doesn't want to use debconf to configure Samba the leave...
44 db_get samba-common/do_debconf || true
45 if [ "${RET}" = "false" ]; then
46         exit 0
47 fi
48
49 # User wants to use debconf, let's continue...
50
51 # Adjust priority of the question about the workgroup name depending
52 # on whether a workgroup name has already being specified.
53 db_get samba-common/workgroup || true
54 if [ "${RET}" ]; then
55         WGPRIORITY=medium
56 else
57         WGPRIORITY=high
58 fi
59
60 # Preload any values from the existing smb.conf file
61 if [ -f $FILE ]; then
62         WORKGROUP=`smbconf_retr workgroup`
63         if [ "$WORKGROUP" ]; then
64                 db_set samba-common/workgroup "$WORKGROUP"
65         fi
66
67         ENCRYPT=`smbconf_retr "encrypt passwords"`
68         if [ "$ENCRYPT" ]; then
69                 ENCRYPT=`echo $ENCRYPT | tr '[A-Z]' '[a-z]'`
70                 if [ "$ENCRYPT" = "yes" ]; then
71                         ENCRYPT=true
72                 elif [ "$ENCRYPT" = "no" ]; then
73                         ENCRYPT=false
74                 fi
75
76                 db_set samba-common/encrypt_passwords "$ENCRYPT"
77         fi
78
79         CHARSET=`smbconf_retr "character set"`
80         CODEPAGE=`smbconf_retr "client code page"`
81         UNIXCHARSET=`smbconf_retr "unix charset"`
82         DOSCHARSET=`smbconf_retr "dos charset"`
83
84         # If we're upgrading from an old version and there's no
85         # 'passdb backend' setting, add one.
86         if [ "$1" = "configure" -a -n "$2" ] \
87            && dpkg --compare-versions "$2" lt 2.99.cvs.20020713-2 \
88            && ! grep -q -i '^[[:space:]]*passdb backend[[:space:]]*=' $FILE
89         then
90                 TMPFILE=/etc/samba/smb.conf.dpkg-tmp
91                 sed -e'
92                         s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
93                         s/^\([[:space:]]*\)encrypt passwords/\1encrypt passwords/i
94                         /^[[:space:]]*\[global\]/,/^[[:space:]]*\[/ {
95                                 /^[[:space:]]*encrypt passwords[[:space:]]*=/a \
96    passdb backend = smbpasswd guest
97                         }' < $FILE > ${TMPFILE}
98                 chmod a+r ${TMPFILE}
99                 mv -f ${TMPFILE} /etc/samba/smb.conf
100         fi
101 fi
102
103 # Get workgroup name
104 db_input $WGPRIORITY samba-common/workgroup || true
105 db_go
106
107 # Use encrypted passwords?
108 db_input medium samba-common/encrypt_passwords || true
109 db_go
110
111 # Handle migrating character sets
112 if [ -n "$CHARSET" -a -z "$UNIXCHARSET" ]
113 then
114         UNIXCHARSET=`echo $CHARSET | sed -e's/iso-/ISO/i'`
115         db_set samba-common/character_set "$UNIXCHARSET"
116         # FIXME: should eventually be low.
117         db_input medium samba-common/character_set || true
118         db_go
119 fi
120
121 if [ -n "$CODEPAGE" -a -z "$DOSCHARSET" ]
122 then
123         DOSCHARSET=CP`echo $CODEPAGE | sed -e's/[[:alpha:]]*//g'`
124         db_set samba-common/codepage "$DOSCHARSET"
125         # FIXME: should eventually be low.
126         db_input medium samba-common/codepage || true
127         db_go
128 fi
129
130 DHCPPRIORITY=medium
131 #if [ "$DEBCONF_RECONFIGURE" = 1 ] && [ -f /sbin/dhclient3 ]
132 if [ -f /sbin/dhclient3 ]
133 then
134         DHCPPRIORITY=high
135 # TODO: see if we can detect that dhcp3-client is *going* to be installed,
136 # even if it isn't yet.
137 #elif dpkg-query -W --showformat='${Status}\n' dhcp3-client | grep ???
138 # unknown ok not-installed ? 
139 #       DHCPPRIORITY=high
140 fi
141
142 if [ ! -f $FILE ] || grep -q -i 'wins server' $FILE
143 then
144         # check the values before and after; unset the 'applied' flag
145         # if they don't match.
146         db_get samba-common/dhcp || true
147         OLDDHCP="$RET"
148         db_input $DHCPPRIORITY samba-common/dhcp || true
149         db_go
150         db_get samba-common/dhcp || true
151         if [ "$OLDDHCP" != "$RET" ]; then
152                 db_fset samba-common/dhcp applied false
153         fi
154 fi