mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
91100b67e6
(This used to be commit 1f7de8c42e
)
140 lines
4.2 KiB
Bash
140 lines
4.2 KiB
Bash
#!/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#
|