Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
path: root/pynslcd/alias.py
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2011-05-01 21:08:39 +0200
committerArthur de Jong <arthur@arthurdejong.org>2011-05-01 21:08:39 +0200
commit4c19151250e318fa38dac33e5db1397b9d95a43e (patch)
treef177c2225f49ff5bb1b126663b3c734f63d7773e /pynslcd/alias.py
parentb4fa5371a770e8ba90a8d0ccd62ddabea0124fd5 (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.py24
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):