The branch, master has been updated via c033fdf5996 pytests/dns_forwarder: remove unused import via 99a88cf82eb samba-tool dns: use dnsserver.flag_from_string() via 87e71cd6116 samba-tool dns: use dnsserver.record_from_string via df60fe15b33 pytests/dns: use dnsserver.record_from_string via 55c4f75a282 pytests/dns: import dnsserver.TXTRecord directly via 579e56bc3da pytest/dcerpc/dnsserver.py: use dnsserver.flag_from_string via a59dcfcfd1f pytest/dcerpcdnsserver: use record_from_string helper via 4ce9a0d4879 py/dnsserver add flag from string function via a572a260535 py/dnsserver: add record_from_string helper function via d84d10bb0e7 py/dnsserver: add .from_string() methods via bddce1f7e69 py/dnsserver: remove workaround of fixed bug via 3bb4dbecc30 py/provision/sambadns: Add a comment about DNS types via dbffeeefd86 py/provision/sambadns: rename CNameRecord -> CNAMERecord via 16254139617 py/dnsserver: replace obsolete comments with useful ones via bdc2567324c pydns: rename s/CNameRecord/CNAMERecord/ for consistency from 0332ddde1a1 VFS: Remove SMB_VFS_SET_DOS_ATTRIBUTE, no longer used
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit c033fdf59962c345dc34f02ede4d6ffef4ac9c44 Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Wed Apr 7 15:34:52 2021 +1200 pytests/dns_forwarder: remove unused import Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Andreas Schneider <a...@samba.org> Autobuild-User(master): Douglas Bagnall <dbagn...@samba.org> Autobuild-Date(master): Thu Apr 8 23:03:52 UTC 2021 on sn-devel-184 commit 99a88cf82eb24ab5ca668b4bb7be346783fa81fe Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Fri Mar 26 20:52:20 2021 +1300 samba-tool dns: use dnsserver.flag_from_string() Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Andreas Schneider <a...@samba.org> commit 87e71cd61168bbd6ed61484c98b84a72fb93482d Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Fri Mar 26 20:41:29 2021 +1300 samba-tool dns: use dnsserver.record_from_string Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Andreas Schneider <a...@samba.org> commit df60fe15b33ba2ffa957758e30c5d219dee71555 Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Wed Apr 7 15:28:11 2021 +1200 pytests/dns: use dnsserver.record_from_string not netcmd.dns.data_to_dns_record, which is a UI function. The only practical difference is it will raise DNSParseError, not CommandError. Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Andreas Schneider <a...@samba.org> commit 55c4f75a282f2e56a8eb2ab473e4b9ba8d9c4daa Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Wed Apr 7 15:16:58 2021 +1200 pytests/dns: import dnsserver.TXTRecord directly Not through samba-tool, which should not be used as a library. Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Andreas Schneider <a...@samba.org> commit 579e56bc3dac70d0458137e3ddde06ad607777ff Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Fri Mar 26 21:04:20 2021 +1300 pytest/dcerpc/dnsserver.py: use dnsserver.flag_from_string Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Andreas Schneider <a...@samba.org> commit a59dcfcfd1fc7cd91ff3af9ed8ba404245f18263 Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Sat Mar 27 15:41:10 2021 +1300 pytest/dcerpcdnsserver: use record_from_string helper Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Andreas Schneider <a...@samba.org> commit 4ce9a0d4879a717fad7830dd70a1f2200d879db2 Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Thu Apr 1 15:29:32 2021 +1300 py/dnsserver add flag from string function Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Andreas Schneider <a...@samba.org> commit a572a260535da0956e324a092cfd459a1c5b4205 Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Thu Apr 1 15:28:49 2021 +1300 py/dnsserver: add record_from_string helper function Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Andreas Schneider <a...@samba.org> commit d84d10bb0e71a7c27c8a880c5eb2a98e23778fc9 Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Wed Apr 7 13:34:50 2021 +1200 py/dnsserver: add .from_string() methods The logic to parse DNS value strings (e.g. "example.com 10" for an MX, which needs to be split on the space) is repeated at least in samba-tool dns and tests/dcerpc/dnsserver.py. Here we bring it together so we can do it once. The sep= keyword allows callers to separate on all runs of whitespace (the default, as samba-tool dns does) or, using sep='', to separate on true spaces only. Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Andreas Schneider <a...@samba.org> commit bddce1f7e6989bcba704d8a1bdc7db9128340b75 Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Thu Apr 1 15:26:01 2021 +1300 py/dnsserver: remove workaround of fixed bug We used to do something wrong with the refcounts, but we don't anymore, so we don't need this confusing nonsense. Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Andreas Schneider <a...@samba.org> commit 3bb4dbecc3020a7eae58b06d5d312be6d4979dfb Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Thu Apr 1 15:23:48 2021 +1300 py/provision/sambadns: Add a comment about DNS types Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Andreas Schneider <a...@samba.org> commit dbffeeefd86cb4ec1cb551a696175f9624bbd151 Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Sat Mar 27 15:55:03 2021 +1300 py/provision/sambadns: rename CNameRecord -> CNAMERecord Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Andreas Schneider <a...@samba.org> commit 16254139617f7a56cb5d88cf6a34d9d83ecdbd91 Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Fri Mar 26 20:42:49 2021 +1300 py/dnsserver: replace obsolete comments with useful ones The replaced comment was about a long fixed Python reference counting bug. Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Andreas Schneider <a...@samba.org> commit bdc2567324c6b8069d3fd809ed1d1d68bd92a9d7 Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Fri Mar 26 18:22:17 2021 +1300 pydns: rename s/CNameRecord/CNAMERecord/ for consistency Everything else is TXTRecord, SRVRrcord, SOARecord. Making CNAME the same allows easier lookups. Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Andreas Schneider <a...@samba.org> ----------------------------------------------------------------------- Summary of changes: python/samba/dnsserver.py | 167 ++++++++++++++++++++++++++++----- python/samba/join.py | 4 +- python/samba/netcmd/dns.py | 80 ++-------------- python/samba/provision/sambadns.py | 15 ++- python/samba/tests/dcerpc/dnsserver.py | 44 ++------- python/samba/tests/dns.py | 24 ++--- python/samba/tests/dns_forwarder.py | 2 +- python/samba/tests/dns_wildcard.py | 6 +- source4/scripting/bin/samba_upgradedns | 4 +- 9 files changed, 192 insertions(+), 154 deletions(-) Changeset truncated at 500 lines: diff --git a/python/samba/dnsserver.py b/python/samba/dnsserver.py index 6d8a72919df..a9fcb7662e8 100644 --- a/python/samba/dnsserver.py +++ b/python/samba/dnsserver.py @@ -16,12 +16,32 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # +import shlex from samba.dcerpc import dnsserver, dnsp +# Note: these are not quite the same as similar looking classes in +# provision/sambadns.py -- those ones are based on +# dnsp.DnssrvRpcRecord, these are based on dnsserver.DNS_RPC_RECORD. +# They encode the same information in slightly different ways. # -# Always create a copy of strings when creating DNS_RPC_RECORDs -# to overcome the bug in pidl generated python bindings. +# DNS_RPC_RECORD structures ([MS-DNSP]2.2.2.2.5 "DNS_RPC_RECORD") are +# used on the wire by DnssrvEnumRecords2. The dnsp.DnssrvRpcRecord +# versions have the in-database version of the same information, where +# the flags field is unpacked, and the struct ordering is different. +# See [MS-DNSP] 2.3.2.2 "DnsRecord". # +# In both cases the structure and contents of .data depend on .wType. +# For example, if .wType is DNS_TYPE_A, .data is an IPv4 address. If +# the .wType is changed to DNS_TYPE_CNAME, the contents of .data will +# be interpreted as a cname blob, but the bytes there will still be +# those of the IPv4 address. If you don't also set the .data you may +# encounter stability problems. These DNS_RPC_RECORD subclasses +# attempt to hide that from you, but are only pretending -- any of +# them can represent any type of record. + + +class DNSParseError(ValueError): + pass class ARecord(dnsserver.DNS_RPC_RECORD): @@ -32,8 +52,11 @@ class ARecord(dnsserver.DNS_RPC_RECORD): self.dwFlags = rank | node_flag self.dwSerial = serial self.dwTtlSeconds = ttl - self._ip_addr = ip_addr[:] - self.data = self._ip_addr + self.data = ip_addr + + @classmethod + def from_string(cls, data, sep=None, **kwargs): + return cls(data, **kwargs) class AAAARecord(dnsserver.DNS_RPC_RECORD): @@ -45,8 +68,11 @@ class AAAARecord(dnsserver.DNS_RPC_RECORD): self.dwFlags = rank | node_flag self.dwSerial = serial self.dwTtlSeconds = ttl - self._ip6_addr = ip6_addr[:] - self.data = self._ip6_addr + self.data = ip6_addr + + @classmethod + def from_string(cls, data, sep=None, **kwargs): + return cls(data, **kwargs) class PTRRecord(dnsserver.DNS_RPC_RECORD): @@ -58,28 +84,34 @@ class PTRRecord(dnsserver.DNS_RPC_RECORD): self.dwFlags = rank | node_flag self.dwSerial = serial self.dwTtlSeconds = ttl - self._ptr = ptr[:] ptr_name = dnsserver.DNS_RPC_NAME() - ptr_name.str = self._ptr + ptr_name.str = ptr ptr_name.len = len(ptr) self.data = ptr_name + @classmethod + def from_string(cls, data, sep=None, **kwargs): + return cls(data, **kwargs) -class CNameRecord(dnsserver.DNS_RPC_RECORD): + +class CNAMERecord(dnsserver.DNS_RPC_RECORD): def __init__(self, cname, serial=1, ttl=900, rank=dnsp.DNS_RANK_ZONE, node_flag=0): - super(CNameRecord, self).__init__() + super().__init__() self.wType = dnsp.DNS_TYPE_CNAME self.dwFlags = rank | node_flag self.dwSerial = serial self.dwTtlSeconds = ttl - self._cname = cname[:] cname_name = dnsserver.DNS_RPC_NAME() - cname_name.str = self._cname + cname_name.str = cname cname_name.len = len(cname) self.data = cname_name + @classmethod + def from_string(cls, data, sep=None, **kwargs): + return cls(data, **kwargs) + class NSRecord(dnsserver.DNS_RPC_RECORD): @@ -90,12 +122,15 @@ class NSRecord(dnsserver.DNS_RPC_RECORD): self.dwFlags = rank | node_flag self.dwSerial = serial self.dwTtlSeconds = ttl - self._dns_server = dns_server[:] ns = dnsserver.DNS_RPC_NAME() - ns.str = self._dns_server + ns.str = dns_server ns.len = len(dns_server) self.data = ns + @classmethod + def from_string(cls, data, sep=None, **kwargs): + return cls(data, **kwargs) + class MXRecord(dnsserver.DNS_RPC_RECORD): @@ -106,13 +141,22 @@ class MXRecord(dnsserver.DNS_RPC_RECORD): self.dwFlags = rank | node_flag self.dwSerial = serial self.dwTtlSeconds = ttl - self._mail_server = mail_server[:] mx = dnsserver.DNS_RPC_RECORD_NAME_PREFERENCE() mx.wPreference = preference - mx.nameExchange.str = self._mail_server + mx.nameExchange.str = mail_server mx.nameExchange.len = len(mail_server) self.data = mx + @classmethod + def from_string(cls, data, sep=None, **kwargs): + try: + server, priority = data.split(sep) + priority = int(priority) + except ValueError as e: + raise DNSParseError("MX data must have server and priority " + "(space separated), not %r" % data) from e + return cls(server, priority, **kwargs) + class SOARecord(dnsserver.DNS_RPC_RECORD): @@ -124,20 +168,33 @@ class SOARecord(dnsserver.DNS_RPC_RECORD): self.dwFlags = rank | node_flag self.dwSerial = serial self.dwTtlSeconds = ttl - self._mname = mname[:] - self._rname = rname[:] soa = dnsserver.DNS_RPC_RECORD_SOA() soa.dwSerialNo = serial soa.dwRefresh = refresh soa.dwRetry = retry soa.dwExpire = expire soa.dwMinimumTtl = minimum - soa.NamePrimaryServer.str = self._mname + soa.NamePrimaryServer.str = mname soa.NamePrimaryServer.len = len(mname) - soa.ZoneAdministratorEmail.str = self._rname + soa.ZoneAdministratorEmail.str = rname soa.ZoneAdministratorEmail.len = len(rname) self.data = soa + @classmethod + def from_string(cls, data, sep=None, **kwargs): + args = data.split(sep) + if len(args) != 7: + raise DNSParseError('Data requires 7 space separated elements - ' + 'nameserver, email, serial, ' + 'refresh, retry, expire, minimumttl') + try: + for i in range(2, 7): + args[i] = int(args[i]) + except ValueError as e: + raise DNSParseError("SOA serial, refresh, retry, expire, minimumttl' " + "should be integers") from e + return cls(*args, **kwargs) + class SRVRecord(dnsserver.DNS_RPC_RECORD): @@ -148,15 +205,31 @@ class SRVRecord(dnsserver.DNS_RPC_RECORD): self.dwFlags = rank | node_flag self.dwSerial = serial self.dwTtlSeconds = ttl - self._target = target[:] srv = dnsserver.DNS_RPC_RECORD_SRV() srv.wPriority = priority srv.wWeight = weight srv.wPort = port - srv.nameTarget.str = self._target + srv.nameTarget.str = target srv.nameTarget.len = len(target) self.data = srv + @classmethod + def from_string(cls, data, sep=None, **kwargs): + try: + target, port, priority, weight = data.split(sep) + except ValueError as e: + raise DNSParseError("SRV data must have four space " + "separated elements: " + "server, port, priority, weight; " + "not %r" % data) from e + try: + args = (target, int(port), int(priority), int(weight)) + except ValueError as e: + raise DNSParseError("SRV port, priority, and weight " + "must be integers") from e + + return cls(*args, **kwargs) + class TXTRecord(dnsserver.DNS_RPC_RECORD): @@ -167,11 +240,8 @@ class TXTRecord(dnsserver.DNS_RPC_RECORD): self.dwFlags = rank | node_flag self.dwSerial = serial self.dwTtlSeconds = ttl - self._slist = [] - for s in slist: - self._slist.append(s[:]) names = [] - for s in self._slist: + for s in slist: name = dnsserver.DNS_RPC_NAME() name.str = s name.len = len(s) @@ -180,3 +250,48 @@ class TXTRecord(dnsserver.DNS_RPC_RECORD): txt.count = len(slist) txt.str = names self.data = txt + + @classmethod + def from_string(cls, data, sep=None, **kwargs): + slist = shlex.split(data) + return cls(slist, **kwargs) + + +# +# Don't add new Record types after this line + +_RECORD_TYPE_LUT = {} +def _setup_record_type_lut(): + for k, v in globals().items(): + if k[-6:] == 'Record': + k = k[:-6] + flag = getattr(dnsp, 'DNS_TYPE_' + k) + _RECORD_TYPE_LUT[k] = v + _RECORD_TYPE_LUT[flag] = v + +_setup_record_type_lut() +del _setup_record_type_lut + + +def record_from_string(t, data, sep=None, **kwargs): + """Get a DNS record of type t based on the data string. + Additional keywords (ttl, rank, etc) can be passed in. + + t can be a dnsp.DNS_TYPE_* integer or a string like "A", "TXT", etc. + """ + if isinstance(t, str): + t = t.upper() + try: + Record = _RECORD_TYPE_LUT[t] + except KeyError as e: + raise DNSParseError("Unsupported record type") from e + + return Record.from_string(data, sep=sep, **kwargs) + + +def flag_from_string(rec_type): + rtype = rec_type.upper() + try: + return getattr(dnsp, 'DNS_TYPE_' + rtype) + except AttributeError: + raise DNSParseError('Unknown type of DNS record %s' % rec_type) from e diff --git a/python/samba/join.py b/python/samba/join.py index d78375441fb..97745a3901a 100644 --- a/python/samba/join.py +++ b/python/samba/join.py @@ -41,7 +41,7 @@ from samba import werror from base64 import b64encode from samba import WERRORError, NTSTATUSError from samba import sd_utils -from samba.dnsserver import ARecord, AAAARecord, CNameRecord +from samba.dnsserver import ARecord, AAAARecord, CNAMERecord import logging import random import time @@ -1192,7 +1192,7 @@ class DCJoinContext(object): % (msdcs_cname, msdcs_zone, cname_target)) add_rec_buf = dnsserver.DNS_RPC_RECORD_BUF() - rec = CNameRecord(cname_target) + rec = CNAMERecord(cname_target) add_rec_buf.rec = rec dns_conn.DnssrvUpdateRecord2(client_version, 0, diff --git a/python/samba/netcmd/dns.py b/python/samba/netcmd/dns.py index d4b06929aa3..a267c4105b5 100644 --- a/python/samba/netcmd/dns.py +++ b/python/samba/netcmd/dns.py @@ -40,7 +40,7 @@ from samba.netcmd import ( ) from samba.dcerpc import dnsp, dnsserver -from samba.dnsserver import ARecord, AAAARecord, PTRRecord, CNameRecord, NSRecord, MXRecord, SOARecord, SRVRecord, TXTRecord +from samba.dnsserver import record_from_string, DNSParseError, flag_from_string def dns_connect(server, lp, creds): @@ -166,30 +166,10 @@ def dns_addr_array_string(array): def dns_type_flag(rec_type): - rtype = rec_type.upper() - if rtype == 'A': - record_type = dnsp.DNS_TYPE_A - elif rtype == 'AAAA': - record_type = dnsp.DNS_TYPE_AAAA - elif rtype == 'PTR': - record_type = dnsp.DNS_TYPE_PTR - elif rtype == 'NS': - record_type = dnsp.DNS_TYPE_NS - elif rtype == 'CNAME': - record_type = dnsp.DNS_TYPE_CNAME - elif rtype == 'SOA': - record_type = dnsp.DNS_TYPE_SOA - elif rtype == 'MX': - record_type = dnsp.DNS_TYPE_MX - elif rtype == 'SRV': - record_type = dnsp.DNS_TYPE_SRV - elif rtype == 'TXT': - record_type = dnsp.DNS_TYPE_TXT - elif rtype == 'ALL': - record_type = dnsp.DNS_TYPE_ALL - else: - raise CommandError('Unknown type of DNS record %s' % rec_type) - return record_type + try: + return flag_from_string(rec_type) + except DNSParseError as e: + raise CommandError(*e.args) def dns_client_version(cli_version): @@ -406,51 +386,11 @@ def print_dnsrecords(outf, records): # Convert data into a dns record def data_to_dns_record(record_type, data): - if record_type == dnsp.DNS_TYPE_A: - rec = ARecord(data) - elif record_type == dnsp.DNS_TYPE_AAAA: - rec = AAAARecord(data) - elif record_type == dnsp.DNS_TYPE_PTR: - rec = PTRRecord(data) - elif record_type == dnsp.DNS_TYPE_CNAME: - rec = CNameRecord(data) - elif record_type == dnsp.DNS_TYPE_NS: - rec = NSRecord(data) - elif record_type == dnsp.DNS_TYPE_MX: - tmp = data.split() - if len(tmp) != 2: - raise CommandError('Data requires 2 elements - mail_server, preference') - mail_server = tmp[0] - preference = int(tmp[1]) - rec = MXRecord(mail_server, preference) - elif record_type == dnsp.DNS_TYPE_SRV: - tmp = data.split() - if len(tmp) != 4: - raise CommandError('Data requires 4 elements - server, port, priority, weight') - server = tmp[0] - port = int(tmp[1]) - priority = int(tmp[2]) - weight = int(tmp[3]) - rec = SRVRecord(server, port, priority=priority, weight=weight) - elif record_type == dnsp.DNS_TYPE_SOA: - tmp = data.split() - if len(tmp) != 7: - raise CommandError('Data requires 7 elements - nameserver, email, serial, ' - 'refresh, retry, expire, minimumttl') - nameserver = tmp[0] - email = tmp[1] - serial = int(tmp[2]) - refresh = int(tmp[3]) - retry = int(tmp[4]) - expire = int(tmp[5]) - minimum = int(tmp[6]) - rec = SOARecord(nameserver, email, serial=serial, refresh=refresh, - retry=retry, expire=expire, minimum=minimum) - elif record_type == dnsp.DNS_TYPE_TXT: - slist = shlex.split(data) - rec = TXTRecord(slist) - else: - raise CommandError('Unsupported record type') + try: + rec = record_from_string(record_type, data) + except DNSParseError as e: + raise CommandError(*e.args) from None + return rec diff --git a/python/samba/provision/sambadns.py b/python/samba/provision/sambadns.py index 8a5d8a93442..4ddde36b4cb 100644 --- a/python/samba/provision/sambadns.py +++ b/python/samba/provision/sambadns.py @@ -75,6 +75,15 @@ def get_dnsadmins_sid(samdb, domaindn): return dnsadmins_sid +# Note: these classses are not quite the same as similar looking ones +# in ../dnsserver.py -- those ones are based on +# dnsserver.DNS_RPC_RECORD ([MS-DNSP]2.2.2.2.5 "DNS_RPC_RECORD"), +# these are based on dnsp.DnssrvRpcRecord ([MS-DNSP] 2.3.2.2 +# "DnsRecord"). +# +# They are not interchangeable or mergeable. If you're talking over +# the wire you want those other ones; these are the on-disk format. + class ARecord(dnsp.DnssrvRpcRecord): def __init__(self, ip_addr, serial=1, ttl=900, rank=dnsp.DNS_RANK_ZONE): @@ -97,10 +106,10 @@ class AAAARecord(dnsp.DnssrvRpcRecord): self.data = ip6_addr -class CNameRecord(dnsp.DnssrvRpcRecord): +class CNAMERecord(dnsp.DnssrvRpcRecord): def __init__(self, cname, serial=1, ttl=900, rank=dnsp.DNS_RANK_ZONE): - super(CNameRecord, self).__init__() + super().__init__() self.wType = dnsp.DNS_TYPE_CNAME self.rank = rank self.dwSerial = serial @@ -447,7 +456,7 @@ def add_ns_glue_record(samdb, container_dn, prefix, host): def add_cname_record(samdb, container_dn, prefix, host): - cname_record = CNameRecord(host) + cname_record = CNAMERecord(host) msg = ldb.Message(ldb.Dn(samdb, "%s,%s" % (prefix, container_dn))) msg["objectClass"] = ["top", "dnsNode"] msg["dnsRecord"] = ldb.MessageElement(ndr_pack(cname_record), ldb.FLAG_MOD_ADD, "dnsRecord") diff --git a/python/samba/tests/dcerpc/dnsserver.py b/python/samba/tests/dcerpc/dnsserver.py index 604add7e642..5f7aa378575 100644 --- a/python/samba/tests/dcerpc/dnsserver.py +++ b/python/samba/tests/dcerpc/dnsserver.py @@ -26,7 +26,7 @@ from samba.samdb import SamDB from samba.ndr import ndr_unpack, ndr_pack from samba.dcerpc import dnsp, dnsserver, security from samba.tests import RpcInterfaceTestCase, env_get_var_value -from samba.netcmd.dns import ARecord, AAAARecord, PTRRecord, CNameRecord, NSRecord, MXRecord, SRVRecord, TXTRecord +from samba.dnsserver import record_from_string, flag_from_string, ARecord from samba import sd_utils, descriptor from samba import WERRORError, werror @@ -178,7 +178,7 @@ class DnsserverTests(RpcInterfaceTestCase): self.custom_zone, "@", None, - self.record_type_int(record_type_str), + flag_from_string(record_type_str), dnsserver.DNS_RPC_VIEW_AUTHORITY_DATA, None, None) @@ -219,7 +219,7 @@ class DnsserverTests(RpcInterfaceTestCase): self.custom_zone, "@", None, - self.record_type_int(record_type_str), + flag_from_string(record_type_str), dnsserver.DNS_RPC_VIEW_AUTHORITY_DATA, None, None) @@ -261,7 +261,7 @@ class DnsserverTests(RpcInterfaceTestCase): self.custom_zone, "a.b", None, - self.record_type_int(record_type_str), + flag_from_string(record_type_str), dnsserver.DNS_RPC_VIEW_AUTHORITY_DATA, None, None) @@ -291,7 +291,7 @@ class DnsserverTests(RpcInterfaceTestCase): self.custom_zone, "a.b", None, - self.record_type_int(record_type_str), + flag_from_string(record_type_str), -- Samba Shared Repository