diff options
author | Garming Sam <garming@catalyst.net.nz> | 2018-03-12 14:45:48 +1300 |
---|---|---|
committer | Douglas Bagnall <dbagnall@samba.org> | 2018-03-21 04:36:22 +0100 |
commit | 2b87bf8c0984df65f7d0396f40442432c8b57c4b (patch) | |
tree | a08a96a0162dacdcbb773e2a00bc60c64206c9df /source4 | |
parent | 79b640f84e32ccd548d78e427b1cbdad1df21669 (diff) | |
download | samba-2b87bf8c0984df65f7d0396f40442432c8b57c4b.tar.gz |
samba_dnsupdate: Introduce automatic site coverage
This uses the underlying function in kcc_utils.py which already has
tests.
Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Diffstat (limited to 'source4')
-rwxr-xr-x | source4/scripting/bin/samba_dnsupdate | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/source4/scripting/bin/samba_dnsupdate b/source4/scripting/bin/samba_dnsupdate index ac6cf616b8f..d6f77d4cabb 100755 --- a/source4/scripting/bin/samba_dnsupdate +++ b/source4/scripting/bin/samba_dnsupdate @@ -24,6 +24,7 @@ import fcntl import sys import tempfile import subprocess +from samba.kcc import kcc_utils # ensure we get messages out immediately, so they get in the samba logs, # and don't get swallowed by a timeout @@ -48,6 +49,7 @@ from samba.samdb import SamDB from samba.dcerpc import netlogon, winbind from samba.netcmd.dns import cmd_dns from samba import gensec +import ldb samba.ensure_third_party_module("dns", "dnspython") import dns.resolver @@ -775,9 +777,15 @@ for line in cfile: cache_list.append(c) cache_set.add(str(c)) +site_specific_rec = [] + # read each line, and check that the DNS name exists for line in file: line = line.strip() + + if '${SITE}' in line: + site_specific_rec.append(line) + if line == '' or line[0] == "#": continue d = parse_dns_line(line, sub_vars) @@ -791,6 +799,25 @@ for line in file: dns_list.append(d) dup_set.add(str(d)) +# Perform automatic site coverage by default +auto_coverage = True + +if not am_rodc and auto_coverage: + site_names = kcc_utils.uncovered_sites_to_cover(samdb, + samdb.server_site_name()) + + # Duplicate all site specific records for the uncovered site + for site in site_names: + to_add = [samba.substitute_var(line, {'SITE': site}) + for line in site_specific_rec] + + for site_line in to_add: + d = parse_dns_line(site_line, + sub_vars=sub_vars) + if d is not None and str(d) not in dup_set: + dns_list.append(d) + dup_set.add(str(d)) + # now expand the entries, if any are A record with ip set to $IP # then replace with multiple entries, one for each interface IP for d in dns_list: |