diff options
author | Arthur de Jong <arthur@arthurdejong.org> | 2011-05-01 21:08:39 +0200 |
---|---|---|
committer | Arthur de Jong <arthur@arthurdejong.org> | 2011-05-01 21:08:39 +0200 |
commit | 4c19151250e318fa38dac33e5db1397b9d95a43e (patch) | |
tree | f177c2225f49ff5bb1b126663b3c734f63d7773e /pynslcd/alias.py | |
parent | b4fa5371a770e8ba90a8d0ccd62ddabea0124fd5 (diff) |
implement attribute mapping functionality and do some refactoring
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-pam-ldapd@1454 ef36b2f9-881f-0410-afb5-c4e39611909c
Diffstat (limited to 'pynslcd/alias.py')
-rw-r--r-- | pynslcd/alias.py | 24 |
1 files changed, 9 insertions, 15 deletions
diff --git a/pynslcd/alias.py b/pynslcd/alias.py index 940a98f..d432945 100644 --- a/pynslcd/alias.py +++ b/pynslcd/alias.py @@ -18,35 +18,32 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 USA -import ldap.filter +import logging import constants import common -class AliasRequest(common.Request): - - filter = '(objectClass=nisMailAlias)' +attmap = common.Attributes(cn='cn', rfc822MailMember='rfc822MailMember') +filter = '(objectClass=nisMailAlias)' - attmap_cn = 'cn' - attmap_rfc822MailMember = 'rfc822MailMember' - attributes = ( 'cn', 'rfc822MailMember' ) +class AliasRequest(common.Request): def write(self, dn, attributes): # get name and check against requested name - names = attributes.get(self.attmap_cn, []) + names = attributes['cn'] if not names: - logging.error('Error: entry %s does not contain %s value', dn, self.attmap_cn) + logging.error('Error: entry %s does not contain %s value', dn, attmap['cn']) return if self.name: if self.name.lower() not in (x.lower() for x in names): return names = ( self.name, ) # get the members of the alias - members = attributes.get(self.attmap_rfc822MailMember, []) + members = attributes['rfc822MailMember'] if not members: - logging.error('Error: entry %s does not contain %s value', dn, self.attmap_rfc822MailMember) + logging.error('Error: entry %s does not contain %s value', dn, attmap['rfc822MailMember']) return # write results for name in names: @@ -58,14 +55,11 @@ class AliasRequest(common.Request): class AliasByNameRequest(AliasRequest): action = constants.NSLCD_ACTION_ALIAS_BYNAME + filter_attrs = dict(cn='name') def read_parameters(self): self.name = self.fp.read_string() - def mk_filter(self): - return '(&%s(%s=%s))' % ( self.filter, - self.attmap_cn, ldap.filter.escape_filter_chars(self.name) ) - class AliasAllRequest(AliasRequest): |