1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# -*- 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())
|