summaryrefslogtreecommitdiffstats
path: root/debian/samba-common.postinst
diff options
context:
space:
mode:
Diffstat (limited to 'debian/samba-common.postinst')
-rw-r--r--debian/samba-common.postinst117
1 files changed, 117 insertions, 0 deletions
diff --git a/debian/samba-common.postinst b/debian/samba-common.postinst
new file mode 100644
index 0000000..26031e1
--- /dev/null
+++ b/debian/samba-common.postinst
@@ -0,0 +1,117 @@
+#!/bin/sh
+#
+#
+
+set -e
+
+# Do debconf stuff here
+. /usr/share/debconf/confmodule
+
+TEMPDIR=/run/samba/upgrades
+NEWFILE=$TEMPDIR/smb.conf
+CONFIG=/etc/samba/smb.conf
+
+# ------------------------- Debconf questions start ---------------------
+
+configure_smb_conf() {
+ local CONFIG
+ CONFIG="$1"
+
+ # Is the user configuring with debconf, or he/she prefers manual config?
+ db_get samba-common/do_debconf || true
+ if [ "${RET}" != "true" ]; then
+ return 0
+ fi
+
+ # 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 -i -e "s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
+ /^[[:space:]]*\[global\]/,/^[[:space:]]*\[/ \
+ s/^\([[:space:]]*\)workgroup[[:space:]]*=.*/\1workgroup = ${WORKGROUP}/i" \
+ "$CONFIG"
+
+ # Install DHCP support
+ db_get samba-common/dhcp
+ if [ "$RET" = true ] && \
+ ! grep -q dhcp.conf "$CONFIG"
+ then
+ sed -i -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 = /var/lib/samba/dhcp.conf
+}" "$CONFIG"
+ # Ensure the file exists
+ touch /var/lib/samba/dhcp.conf
+ elif [ "$RET" != true ]; then
+ sed -i -e '
+ /^#[[:space:]]*If we receive WINS server info from DHCP, override the options above/d
+ /^#*[[:space:]]*include[[:space:]]*=[[:space:]]*\/var\/lib\/samba\/dhcp.conf/,/[^[:space:]]/ {
+ /^#*[[:space:]]*include[[:space:]]*=[[:space:]]*\/var\/lib\/samba\/dhcp.conf/d
+ /^[[:space:]]*$/d
+ }' "$CONFIG"
+ fi
+
+}
+
+if [ "$1" = configure ]; then
+ if dpkg --compare-versions "$2" lt-nl 2:4.8.0+dfsg-3~; then
+ # Move dhcp.conf out of /etc (https://bugs.debian.org/695362)
+ if [ -f /etc/samba/dhcp.conf ]; then
+ mv /etc/samba/dhcp.conf /var/lib/samba/dhcp.conf
+ fi
+ sed -i -e 's/^\([#[:space:]]*include[[:space:]]*=[[:space:]]*\)\/etc\/samba\/dhcp.conf\([[:space:]]*\)$/\1\/var\/lib\/samba\/dhcp.conf\2/
+ ' "$CONFIG"
+ fi
+
+ if ! dpkg-statoverride --list /var/log/samba >/dev/null; then
+ # Set some reasonable default perms for the samba logdir
+ # to hide sensitive information
+ chmod 0750 /var/log/samba
+ chown root:adm /var/log/samba
+ fi
+fi
+
+
+if [ -e "$CONFIG" ]; then
+ configure_smb_conf "$CONFIG"
+fi
+
+mkdir -p "$TEMPDIR"
+
+cp /usr/share/samba/smb.conf "$NEWFILE"
+configure_smb_conf "$NEWFILE"
+
+if [ -e "$CONFIG" ]; then
+ sed -e '1,/^[;#[:space:]]*\[print\$\]/ { d }
+ 1,/^[[:space:]]*\[/ { /^[^[]/d; /^$/d }
+ ' "$CONFIG" >> "$NEWFILE"
+fi
+
+ucf --three-way --debconf-ok "$NEWFILE" "$CONFIG"
+
+if [ ! -e "$CONFIG" ]; then
+ echo "Install/upgrade will fail. To recover, please try:"
+ echo " sudo cp /usr/share/samba/smb.conf $CONFIG"
+ echo " sudo dpkg --configure -a"
+else
+ ucfr samba-common "$CONFIG"
+ chmod a+r "$CONFIG"
+fi
+
+# ------------------------- Debconf questions end ---------------------
+
+db_stop
+
+#DEBHELPER#