s4-rodc: get the domain name from the partitions DN
authorAndrew Tridgell <tridge@samba.org>
Thu, 9 Sep 2010 08:02:08 +0000 (18:02 +1000)
committerAndrew Tridgell <tridge@samba.org>
Thu, 9 Sep 2010 11:39:24 +0000 (21:39 +1000)
don't rely on the netbios domain name being the first part of the
realm

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>

source4/scripting/python/samba/join.py
source4/scripting/python/samba/netcmd/join.py

index b0feee375ddf421a385ed33509b162ffd38ae686..ecc225ae3be05fb143bbd52854ffb72caf05fb4e 100644 (file)
@@ -40,7 +40,7 @@ class join_ctx:
     pass
 
 def join_rodc(server=None, creds=None, lp=None, site=None, netbios_name=None,
-              targetdir=None):
+              targetdir=None, domain=None):
     """join as a RODC"""
 
     if server is None:
@@ -77,16 +77,18 @@ def join_rodc(server=None, creds=None, lp=None, site=None, netbios_name=None,
         res = samdb.search(base="", scope=ldb.SCOPE_BASE, attrs=["dnsHostName"])
         return res[0]["dnsHostName"][0]
 
+    def get_domain_name(samdb):
+        '''get netbios name of the domain from the partitions record'''
+        partitions_dn = samdb.get_partitions_dn()
+        res = samdb.search(base=partitions_dn, scope=ldb.SCOPE_ONELEVEL, attrs=["nETBIOSName"],
+                           expression='ncName=%s' % samdb.get_default_basedn())
+        return res[0]["nETBIOSName"][0]
+
     def get_mysid(samdb):
         res = samdb.search(base="", scope=ldb.SCOPE_BASE, attrs=["tokenGroups"])
         binsid = res[0]["tokenGroups"][0]
         return samdb.schema_format_value("objectSID", binsid)
 
-    def get_domain_name(samdb):
-        # this should be done via CLDAP
-        res = samdb.search(base=samdb.get_default_basedn(), scope=ldb.SCOPE_BASE, attrs=["name"])
-        return res[0]["name"][0]
-
     def join_add_objects(ctx):
         '''add the various objects needed for the join'''
         print "Adding %s" % ctx.acct_dn
index 34fd5dec3d978780e47d81155d9ee1f46723f57d..ec8cd11122f6f4b0d0489b1ed9198f7f837d3ead 100644 (file)
@@ -64,7 +64,7 @@ class cmd_join(Command):
         elif role == "MEMBER":
             secure_channel_type = SEC_CHAN_WKSTA
         elif role == "RODC":
-            join_rodc(server=server, creds=creds, lp=lp,
+            join_rodc(server=server, creds=creds, lp=lp, domain=domain,
                       site=site, netbios_name=netbios_name)
             return
         else: