diff options
Diffstat (limited to 'debian/samba-common.dhcp')
-rw-r--r-- | debian/samba-common.dhcp | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/debian/samba-common.dhcp b/debian/samba-common.dhcp new file mode 100644 index 0000000..81ab791 --- /dev/null +++ b/debian/samba-common.dhcp @@ -0,0 +1,85 @@ +#!/bin/sh + +SAMBA_DHCP_CONF=/var/lib/samba/dhcp.conf + +netbios_setup() { + # No need to continue if we're called with an unsupported option + + case $reason in + BOUND|RENEW|REBIND|REBOOT|EXPIRE|FAIL|RELEASE|STOP) + ;; + *) + return + ;; + esac + + umask 022 + + local other_servers="" + local serverlist="" + + # the destination file won't exist yet on the first run after + # installing samba + if [ -e $SAMBA_DHCP_CONF ] && [ -s $SAMBA_DHCP_CONF ] + then + # don't continue if no settings have changed + if [ "$new_netbios_name_servers" = "$old_netbios_name_servers" ] \ + && [ "$new_netbios_scope" = "$old_netbios_scope" ] \ + && [ -n "$new_netbios_name_servers" ] + then + return + fi + + # reparse our own file + other_servers=`sed -n -e"s/[[:space:]]$interface:[^[:space:]]*//g; \ + s/^[[:space:]]*wins server[[:space:]]*=[[:space:]]*//pi" \ + $SAMBA_DHCP_CONF` + + serverlist="$other_servers" + fi + + for server in $new_netbios_name_servers + do + serverlist="$serverlist $interface:$server" + done + + echo -n > ${SAMBA_DHCP_CONF}.new + + # If we're updating on failure/expire, AND there are no WINS + # servers for other interfaces, leave the file empty. + if [ -z "$other_servers" ] + then + if [ "$reason" = FAIL ] || [ "$reason" = EXPIRE ] + then + mv ${SAMBA_DHCP_CONF}.new $SAMBA_DHCP_CONF + return + fi + fi + + if [ -n "$serverlist" ] + then + echo " wins server =$serverlist" >> ${SAMBA_DHCP_CONF}.new + fi + if [ -n "$new_netbios_scope" ] + then + echo " netbios scope = $new_netbios_scope" >> ${SAMBA_DHCP_CONF}.new + fi + mv ${SAMBA_DHCP_CONF}.new $SAMBA_DHCP_CONF + + # reload the samba server + # We don't necessarily have the samba package installed. #414841 + if [ -x /etc/init.d/smbd ] + then + if [ -d /run/systemd/system ] + then + if systemctl is-enabled smbd.service --quiet + then + systemctl try-reload-or-restart smbd.service + fi + else + /usr/sbin/invoke-rc.d smbd reload + fi + fi +} + +netbios_setup |