# -*- coding: utf-8 -*- import ldap import sys #LDAP_HOST = 'ldaps://bernd:6336' LDAP_HOST = 'ldap://bernd:3889' LDAP_BASE_DN = 'dc=nodomain' USER = 'cn=admin,dc=nodomain' PASS = 'blubb' class Account(object): def __init__(self, ldap_host, base_dn, 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): return self.con.search_s( self.base_dn, ldap.SCOPE_SUBTREE, *args, **kwargs ) def register(self, name, attr): 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): 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): 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())