76 lines
1.7 KiB
Bash
Executable File
76 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
SAMBA_DHCP_CONF=/etc/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
|
|
[ -x /etc/init.d/smbd ] && /usr/sbin/invoke-rc.d smbd reload
|
|
|
|
}
|
|
|
|
netbios_setup
|