summaryrefslogtreecommitdiffstats
path: root/debian/samba-common.config
diff options
context:
space:
mode:
Diffstat (limited to 'debian/samba-common.config')
-rw-r--r--debian/samba-common.config85
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