summaryrefslogtreecommitdiff
path: root/pynslcd
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2012-12-23 19:35:12 +0000
committerArthur de Jong <arthur@arthurdejong.org>2012-12-23 19:35:12 +0000
commitf94a0d4e903ea040a38a56096e8f0f0eadb93a40 (patch)
treebb69ff593bc65763c06babd3f5ae30c5842fd87f /pynslcd
parentc7bb19c55c7a902e25bdd33b0d49a2ddcf62e07a (diff)
update the netgroup by name request to have one result entry per netgroup with multiple rows within one result
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-pam-ldapd@1874 ef36b2f9-881f-0410-afb5-c4e39611909c
Diffstat (limited to 'pynslcd')
-rw-r--r--pynslcd/netgroup.py31
1 files changed, 16 insertions, 15 deletions
diff --git a/pynslcd/netgroup.py b/pynslcd/netgroup.py
index 4118cd4..ee0b120 100644
--- a/pynslcd/netgroup.py
+++ b/pynslcd/netgroup.py
@@ -47,25 +47,26 @@ class Cache(cache.Cache):
class NetgroupRequest(common.Request):
- def write(self, name, member):
- m = _netgroup_triple_re.match(member)
- if m:
- self.fp.write_int32(constants.NSLCD_NETGROUP_TYPE_TRIPLE)
- self.fp.write_string(m.group('host'))
- self.fp.write_string(m.group('user'))
- self.fp.write_string(m.group('domain'))
- else:
+ def write(self, name, triples, members):
+ self.fp.write_string(name)
+ for triple in triples:
+ m = _netgroup_triple_re.match(triple)
+ if m:
+ self.fp.write_int32(constants.NSLCD_NETGROUP_TYPE_TRIPLE)
+ self.fp.write_string(m.group('host'))
+ self.fp.write_string(m.group('user'))
+ self.fp.write_string(m.group('domain'))
+ for member in members:
self.fp.write_int32(constants.NSLCD_NETGROUP_TYPE_NETGROUP)
self.fp.write_string(member)
+ self.fp.write_int32(constants.NSLCD_NETGROUP_TYPE_END)
def convert(self, dn, attributes, parameters):
- # write the netgroup triples
- name = attributes['cn'][0]
- for triple in attributes['nisNetgroupTriple']:
- yield (name, triple)
- # write netgroup members
- for member in attributes['memberNisNetgroup']:
- yield (name, member)
+ names = attributes['cn']
+ triples = attributes['nisNetgroupTriple']
+ members = attributes['memberNisNetgroup']
+ for name in names:
+ yield (name, triples, members)
class NetgroupByNameRequest(NetgroupRequest):