drsuapi,
misc,
)
-from samba.samdb import dsdb_Dn
+from samba.samdb import dsdb_dn_guess
from samba.ndr import ndr_unpack, ndr_pack
from collections import Counter
# listed. For instance DCs normally have 3 hasMasterNCs
# listed.
for value in res[0][k]:
- # Turn dn into a dsdb_Dn so we can use
- # its methods to parse a binary DN
- dsdn = dsdb_Dn(samdb, value.decode('utf8'))
+ # msDS-HasInstantiatedNCs is a BinaryDN, but the
+ # others are plain DNs.
+ dsdn = dsdb_dn_guess(samdb, value)
flags = dsdn.get_binary_integer()
dnstr = str(dsdn.dn)
"for (%s)" % (self.dnstr))
if "transportType" in msg:
- dsdn = dsdb_Dn(samdb, msg["transportType"][0].decode('utf8'))
+ dsdn = dsdb_dn_guess(samdb, msg["transportType"][0])
self.load_connection_transport(samdb, str(dsdn.dn))
if "schedule" in msg:
self.whenCreated = ldb.string_to_time(str(msg["whenCreated"][0]))
if "fromServer" in msg:
- dsdn = dsdb_Dn(samdb, msg["fromServer"][0].decode('utf8'))
+ dsdn = dsdb_dn_guess(samdb, msg["fromServer"][0])
self.from_dnstr = str(dsdn.dn)
assert self.from_dnstr is not None
continue
for value in msg[k]:
- dsdn = dsdb_Dn(samdb, value.decode('utf8'))
+ dsdn = dsdb_dn_guess(samdb, value)
dnstr = str(dsdn.dn)
if k == "nCName":
if "bridgeheadServerListBL" in msg:
for value in msg["bridgeheadServerListBL"]:
- dsdn = dsdb_Dn(samdb, value.decode('utf8'))
+ dsdn = dsdb_dn_guess(samdb, value)
dnstr = str(dsdn.dn)
if dnstr not in self.bridgehead_list:
self.bridgehead_list.append(dnstr)
if "siteList" in msg:
for value in msg["siteList"]:
- dsdn = dsdb_Dn(samdb, value.decode('utf8'))
+ dsdn = dsdb_dn_guess(samdb, value)
guid = misc.GUID(dsdn.dn.get_extended_component('GUID'))
dnstr = str(dsdn.dn)
if (guid, dnstr) not in self.site_list:
from samba import Ldb, ldb, read_and_sub_file
from samba.auth import system_session
-from samba.samdb import SamDB, dsdb_Dn
+from samba.samdb import SamDB, dsdb_dn_guess
class LdifError(Exception):
if k in ncattrs:
for value in res_msg[k]:
# Some of these have binary DNs so
- # use dsdb_Dn to split out relevant parts
- dsdn = dsdb_Dn(samdb, value.decode('utf8'))
+ # use dsdb_dn_guess to split out relevant parts.
+ dsdn = dsdb_dn_guess(samdb, value)
dnstr = str(dsdn.dn)
if dnstr not in nclist:
nclist.append(dnstr)