From d7e62d1166991c0c4c9fa1385ead2bd2058b5b86 Mon Sep 17 00:00:00 2001 From: Nico von Geyso Date: Fri, 14 Sep 2012 00:10:02 +0200 Subject: added rudimentary ldap account class --- account.py | 77 ++++++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 57 insertions(+), 20 deletions(-) diff --git a/account.py b/account.py index 1c764a5..76e3bf8 100644 --- a/account.py +++ b/account.py @@ -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() -- cgit v1.2.3-1-g7c22