1
0
mirror of https://github.com/samba-team/samba.git synced 2025-07-28 11:42:03 +03:00

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 <abartlet@samba.org>
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
Amitay Isaacs
2011-08-18 15:15:20 +10:00
committed by Andrew Bartlett
parent c71e781e7d
commit 57b9f1b502

View File

@ -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.