diff options
author | Nico von Geyso <Nico.Geyso@FU-Berlin.de> | 2012-09-14 00:10:02 +0200 |
---|---|---|
committer | Nico von Geyso <Nico.Geyso@FU-Berlin.de> | 2012-09-14 00:10:02 +0200 |
commit | d7e62d1166991c0c4c9fa1385ead2bd2058b5b86 (patch) | |
tree | 5a9b1e779203f34493570c68496387a33d0dc77e | |
parent | f91792eb6d5a9a36ef961f03890e3780049a9f3d (diff) | |
download | web-d7e62d1166991c0c4c9fa1385ead2bd2058b5b86.tar.gz web-d7e62d1166991c0c4c9fa1385ead2bd2058b5b86.tar.bz2 web-d7e62d1166991c0c4c9fa1385ead2bd2058b5b86.zip |
added rudimentary ldap account class
-rw-r--r-- | account.py | 77 |
1 files changed, 57 insertions, 20 deletions
@@ -2,46 +2,83 @@ import ldap import sys -LDAP_HOST = 'localhost' +#LDAP_HOST = 'ldaps://bernd:6336' +LDAP_HOST = 'ldap://bernd:3889' LDAP_BASE_DN = 'dc=nodomain' -USER = 'cn=admin' +USER = 'cn=admin,dc=nodomain' PASS = 'blubb' class Account(object): def __init__(self, ldap_host, base_dn, user, password): - self.con = ldap.open(ldap_host) - self.con.simple_bind(user, password) + + self.con = ldap.initialize(ldap_host) + self.base_dn = base_dn + + self.con.version = ldap.VERSION3 + self.con.start_tls_s() + self.con.simple_bind(user, password) - def list(self, *args, **kwargs): - entries = self.con.search_s(self.base_dn, ldap.SCOPE_SUBTREE, *args, **kwargs) - for entry in entries: - print(entry) + def list(self, *args, **kwargs): + return self.con.search_s( + self.base_dn, ldap.SCOPE_SUBTREE, *args, **kwargs + ) def register(self, name, attr): - dn = 'cn=%s,%s' % (name, self.base_dn) - name = self.con.add_s(dn, attr) - print('Added ' % name) + dn = 'uid=%s,%s' % (name, self.base_dn) + try: + self.con.add_s(dn, attr) + except: + return False + + return True def modify(self, name, attr): - dn = 'cn=%s,%s' % (name, self.base_dn) - name = self.con.modify_s(dn, attr) - print('Modify ' % name) + try: + dn = self.find(name)[0] + self.con.modify_s(dn, attr) + except: + return False + + return True + + + def find(self, name, *args, **kwargs): + try: + dn = 'uid=%s,%s' % (name, self.base_dn) + return self.con.search_s( + dn, ldap.SCOPE_SUBTREE, *args, **kwargs + )[0] + except: + pass + + return None + def delete(self, name): - dn = 'cn=%s,%s' % (name, self.base_dn) - name = self.con.delete_s(dn, attr) - print('Delete ' % name) + try: + dn = self.find(name)[0] + self.con.delete_s(dn) + except: + return False + return True a = Account(LDAP_HOST, LDAP_BASE_DN, USER, PASS) +#print(a.register('test6', +# [('objectClass', 'account'),('uid','test6')] +#)) +#print(a.list()) +#a.delete('test3') +#print(a.find('test3')) +#print(a.list()) +#print("--") +a.modify('test2', [(ldap.MOD_ADD, 'description','ldap ist_scheisse')]) +print(a.list()) -class _Missing(object): - pass -_missing = _Missing() |