[PATCH 7/9] s4: Make unixid optional

Matthieu Patou mat at matws.net
Sun Nov 22 09:50:31 MST 2009


  Make unixid optional, if value not supplied next id from id pool will be used.
  Create a function to get next id in id pool.
---
 source4/scripting/python/samba/idmap.py |   28 ++++++++++++++++++++++++++--
 1 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/source4/scripting/python/samba/idmap.py b/source4/scripting/python/samba/idmap.py
index ad209f4..d7c28f1 100644
--- a/source4/scripting/python/samba/idmap.py
+++ b/source4/scripting/python/samba/idmap.py
@@ -22,6 +22,7 @@
 
 __docformat__ = "restructuredText"
 
+import ldb
 import samba
 
 class IDmapDB(samba.Ldb):
@@ -50,12 +51,35 @@ class IDmapDB(samba.Ldb):
         super(IDmapDB, self).connect(url=self.lp.private_path(url), flags=flags,
                 options=options)
 
-    def setup_name_mapping(self, sid, type, unixid):
+
+    def increment_xid(self):
+        """Increment xidNumber, if not present it create and assign it to the lowerBound
+
+        :return xid can that be used for SID/unixid mapping
+        """
+        res=self.search(expression="dn=CN=CONFIG",base="", scope=ldb.SCOPE_SUBTREE)
+        id=res[0].get("xidNumber")
+        flag=ldb.FLAG_MOD_REPLACE
+        if id == None:
+            id=res[0].get("lowerBound")
+            flag = ldb.FLAG_MOD_ADD
+        newid = int(str(id)) + 1
+        msg = ldb.Message()
+        msg.dn = ldb.Dn(self,"CN=CONFIG")
+        msg["xidNumber"] = ldb.MessageElement(str(newid),flag,"xidNumber")
+        self.modify(msg)
+        
+        return id
+
+
+    def setup_name_mapping(self, sid, type, unixid=None):
         """Setup a mapping between a sam name and a unix name.
 
         :param sid: SID of the NT-side of the mapping.
-        :param unixname: Unix name to map to.
+        :param unixname: Unix id to map to, if none supplied the next one will be selected
         """
+        if unixid == None:
+            unixid = self.increment_xid()
         type_string = ""
         if type == self.TYPE_UID:
             type_string = "ID_TYPE_UID"
-- 
1.6.3.3


--------------030606070905020301090407
Content-Type: text/x-patch;
 name="0006-s4-regroup-gpo-modification-in-one-function-set-acl-.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename*0="0006-s4-regroup-gpo-modification-in-one-function-set-acl-.pa";
 filename*1="tch"



More information about the samba-technical mailing list