mirror of
https://github.com/samba-team/samba.git
synced 2025-01-12 09:18:10 +03:00
Put 'wins hook' example back in. Fixes bug #268)
(This used to be commit a1e1421d1e
)
This commit is contained in:
parent
3b9f84290a
commit
134e7f948d
8
examples/wins_hook/README
Normal file
8
examples/wins_hook/README
Normal file
@ -0,0 +1,8 @@
|
||||
This is an example script for doing dynamic DNS updates from the WINS
|
||||
database. You use this by putting the full path to the script in the
|
||||
"wins hook" option in smb.conf. Remember to mark the script executable
|
||||
and to set the right domain at the top of the script.
|
||||
|
||||
See the BIND documentation for how to enable dynamic DNS
|
||||
updates. Remember to restrict the updates as far as you can to reduce
|
||||
the security risks inherent in dynamic DNS.
|
94
examples/wins_hook/dns_update
Normal file
94
examples/wins_hook/dns_update
Normal file
@ -0,0 +1,94 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Example script for "wins hook". This attempts to update the DNS with
|
||||
# new A records for the NETBIOS name that Samba passes us. We do this
|
||||
# the simple way, by deleting all DNS records for the name and then
|
||||
# readding all the expected 'A' records.
|
||||
#
|
||||
# Written by Stephen Rothwell <sfr@linuxcare.com>
|
||||
#
|
||||
|
||||
#
|
||||
# Configurable things
|
||||
#
|
||||
# The domain in which to create names
|
||||
# YOU MUST CHANGE THIS
|
||||
# N.B. include the trailing dot
|
||||
#
|
||||
# It is a good idea to use a subdomain of your primary domain to ensure
|
||||
# that rogue machines can't take over (or delete) important names on
|
||||
# your network.
|
||||
DOMAIN=wins.example.com.
|
||||
|
||||
#
|
||||
# The DNS TTL to give the records (in seconds)
|
||||
#
|
||||
TTL=3600
|
||||
#
|
||||
# NETBIOS name types that we want to create DNS records for:
|
||||
# 20 is server
|
||||
# 00 is workstation
|
||||
# 03 is user
|
||||
#
|
||||
USEFUL_TYPES="20 00 03"
|
||||
#
|
||||
# The name of a cache file to use to avoid continual updates
|
||||
# of the same name and IP addresses. If you comment this out
|
||||
# then the cache is not kept at all.
|
||||
#
|
||||
#CACHE_FILE=/usr/local/samba/var/wins_update.cache
|
||||
|
||||
if [ $# -lt 4 ]; then
|
||||
echo "Usage: $0 op name type ttl [ip_addr ...]" 1>&2
|
||||
echo " op is one of add, refresh, delete" 1>&2
|
||||
echo " name is the NETBIOS name" 1>&2
|
||||
echo " type is the NETBIOS name type" 1>&2
|
||||
echo " ttl is the NETBIOS time to live" 1>&2
|
||||
echo " ip_addr's are the remaining IP addresses for this name" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
NSUPDATE=`which nsupdate`
|
||||
[ -x "$NSUPDATE" ] || NSUPDATE=/usr/bin/nsupdate
|
||||
[ -x "$NSUPDATE" ] || NSUPDATE=/sbin/nsupdate
|
||||
[ -x "$NSUPDATE" ] || NSUPDATE=/usr/sbin/nsupdate
|
||||
[ -x "$NSUPDATE" ] || {
|
||||
echo "Cannot find nsupdate." 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
OP=$1
|
||||
NAME=$2
|
||||
TYPE=$3
|
||||
WINS_TTL=$4
|
||||
shift 4
|
||||
IP_ADDRS="$@"
|
||||
|
||||
do_update=0
|
||||
for i in $USEFUL_TYPES
|
||||
do
|
||||
[ "$TYPE" = "$i" ] && do_update=1
|
||||
done
|
||||
[ $do_update = 1 ] || exit 0
|
||||
|
||||
if [ -n "$CACHE_FILE" ]; then
|
||||
if [ -r "$CACHE_FILE" ]; then
|
||||
fgrep -q -x -i "$NAME $IP_ADDRS" "$CACHE_FILE" &&
|
||||
exit 0
|
||||
grep -v -i "^$NAME " "$CACHE_FILE" >"$CACHE_FILE".$$
|
||||
fi
|
||||
echo "$NAME $IP_ADDRS" >>"$CACHE_FILE".$$
|
||||
mv "$CACHE_FILE" "$CACHE_FILE".old 2>/dev/null
|
||||
mv "$CACHE_FILE".$$ "$CACHE_FILE"
|
||||
fi
|
||||
|
||||
{
|
||||
echo update delete $NAME.$DOMAIN
|
||||
for i in $IP_ADDRS
|
||||
do
|
||||
echo update add $NAME.$DOMAIN $TTL A $i
|
||||
done
|
||||
echo
|
||||
} 2>/dev/null | $NSUPDATE >/dev/null 2>&1 &
|
||||
|
||||
exit 0
|
Loading…
Reference in New Issue
Block a user