From: Amitay Isaacs Date: Thu, 18 Aug 2011 05:15:20 +0000 (+1000) Subject: samba3-python: Add methods to get any entry (user/group) and its sid from idmap X-Git-Url: http://git.samba.org/idra/samba.git/?p=idra%2Fsamba.git;a=commitdiff_plain;h=57b9f1b5025f2b521e6d8bcb25762b223b83ace4 samba3-python: Add methods to get any entry (user/group) and its sid from idmap This is required in upgrade_s3 script to migrate idmap database from s3 to s4 Pair-Programmed-With: Andrew Bartlett Signed-off-by: Andrew Bartlett --- diff --git a/source4/scripting/python/samba/samba3/__init__.py b/source4/scripting/python/samba/samba3/__init__.py index 55e9b18f246..f5dde44aa0b 100644 --- a/source4/scripting/python/samba/samba3/__init__.py +++ b/source4/scripting/python/samba/samba3/__init__.py @@ -208,6 +208,14 @@ class IdmapDatabase(TdbDatabase): def _check_version(self): assert fetch_int32(self.tdb, "IDMAP_VERSION\0") == IDMAP_VERSION_V2 + def ids(self): + """Retrieve a list of all ids in this database.""" + for k in self.tdb.iterkeys(): + if k.startswith(IDMAP_USER_PREFIX): + yield k.rstrip("\0").split(" ") + if k.startswith(IDMAP_GROUP_PREFIX): + yield k.rstrip("\0").split(" ") + def uids(self): """Retrieve a list of all uids in this database.""" for k in self.tdb.iterkeys(): @@ -220,6 +228,12 @@ class IdmapDatabase(TdbDatabase): if k.startswith(IDMAP_GROUP_PREFIX): yield int(k[len(IDMAP_GROUP_PREFIX):].rstrip("\0")) + def get_sid(self, xid, id_type): + data = self.tdb.get("%s %s\0" % (id_type, str(xid))) + if data is None: + return data + return data.rstrip("\0") + def get_user_sid(self, uid): """Retrieve the SID associated with a particular uid.