From 662b7458aed8daf70980f558f9713920c3e56da4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bj=C3=B6rn=20Baumbach?= Date: Fri, 9 Aug 2019 16:19:52 +0200 Subject: [PATCH] python/samdb: add option to specify types of group members MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The option can be used to specify the type of the object which have to be added to (or removed) from a group. The search filter for the objects will be created according to the types. Signed-off-by: Björn Baumbach Reviewed-by: Ralph Boehme --- python/samba/samdb.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/python/samba/samdb.py b/python/samba/samdb.py index 22819641802..1090383f526 100644 --- a/python/samba/samdb.py +++ b/python/samba/samdb.py @@ -251,8 +251,23 @@ pwdLastSet: 0 else: self.transaction_commit() + def group_member_filter(self, member, member_types): + filter = "" + + if 'user' in member_types: + filter += ('(&(sAMAccountName=%s)(objectclass=user))' % + ldb.binary_encode(member)) + if 'group' in member_types: + filter += ('(&(sAMAccountName=%s)(objectclass=group))' % + ldb.binary_encode(member)) + + filter = "(|%s)" % filter + + return filter + def add_remove_group_members(self, groupname, members, - add_members_operation=True): + add_members_operation=True, + member_types=[ 'user', 'group' ]): """Adds or removes group members :param groupname: Name of the target group @@ -280,8 +295,7 @@ changetype: modify """ % (str(targetgroup[0].dn)) for member in members: - filter = ('(&(sAMAccountName=%s)(|(objectclass=user)' - '(objectclass=group)))' % ldb.binary_encode(member)) + filter = self.group_member_filter(member, member_types) foreign_msg = None try: membersid = security.dom_sid(member) -- 2.11.4.GIT