diff options
Diffstat (limited to 'debian/samba-common.config')
-rw-r--r-- | debian/samba-common.config | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/debian/samba-common.config b/debian/samba-common.config new file mode 100644 index 0000000..53d9caf --- /dev/null +++ b/debian/samba-common.config @@ -0,0 +1,85 @@ +#!/bin/sh + +set -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_settitle samba-common/title + +# 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... + +# 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 + +fi + +# Get workgroup name +db_input medium samba-common/workgroup || true +db_go + +FOUND=false +if [ -f $FILE ]; then + if grep -q 'include[[:space:]]*=[[:space:]]*/etc/samba/dhcp.conf' $FILE + then + FOUND=true + fi + if grep -q 'include[[:space:]]*=[[:space:]]*/var/lib/samba/dhcp.conf' $FILE + then + FOUND=true + fi + db_set samba-common/dhcp $FOUND +fi + +# we only prompt in one of three cases: the file doesn't exist yet, it +# has the context we need to add our include line, or the include line +# is already present. +if [ ! -f $FILE ] || grep -q -i 'wins server' $FILE || [ "$FOUND" = "true" ]; +then + db_input medium samba-common/dhcp || true + db_go +fi |