File: readentrycontrol.py

package info (click to toggle)
python-ldap 3.4.4-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,368 kB
  • sloc: python: 9,558; ansic: 3,052; makefile: 139; sh: 79
file content (110 lines) | stat: -rw-r--r-- 3,425 bytes parent folder | download | duplicates (3)
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!/usr/bin/env python
"""
This sample script demonstrates the use of the pre-read control (see RFC 4527).

Originally contributed by Andreas Hasenack <ahasenack@terra.com.br>
"""

import pprint,ldap,ldap.modlist

from ldap.controls.readentry import PreReadControl,PostReadControl

uri = "ldap://localhost:2071/"

l = ldap.initialize(uri,trace_level=2)
l.simple_bind_s('uid=diradm,ou=schulung,dc=stroeder,dc=local','testsecret')

print("""#---------------------------------------------------------------------------
# Add new entry
#---------------------------------------------------------------------------
""")

new_test_dn = "uid=ablume,ou=Users,ou=schulung,dc=stroeder,dc=local"
new_test_dn2 = "uid=ablume2,ou=Users,ou=schulung,dc=stroeder,dc=local"
new_test_entry = {
  'objectClass':['account','posixAccount'],
  'uid':['ablume'],
  'cn':['Anna Blume'],
  'uidNumber':['10000'],
  'gidNumber':['10000'],
  'homeDirectory':['/home/ablume'],
}

pr = PostReadControl(criticality=True,attrList=['entryUUID','entryCSN'])

msg_id = l.add_ext(
  new_test_dn,
  ldap.modlist.addModlist(new_test_entry),
  serverctrls = [pr]
)
_,_,_,resp_ctrls = l.result3(msg_id)
print("resp_ctrls[0].dn:", resp_ctrls[0].dn)
print("resp_ctrls[0].entry:", pprint.pformat(resp_ctrls[0].entry))

print("""#---------------------------------------------------------------------------
# Modify entry
#---------------------------------------------------------------------------
""")

pr = PreReadControl(criticality=True,attrList=['uidNumber','gidNumber','entryCSN'])

msg_id = l.modify_ext(
  new_test_dn,
  [(ldap.MOD_INCREMENT, "uidNumber", "1"),(ldap.MOD_INCREMENT, "gidNumber", "1")],
  serverctrls = [pr]
)
_,_,_,resp_ctrls = l.result3(msg_id)
print("resp_ctrls[0].dn:",resp_ctrls[0].dn)
print("resp_ctrls[0].entry:",pprint.pformat(resp_ctrls[0].entry))

pr = PostReadControl(criticality=True,attrList=['uidNumber','gidNumber','entryCSN'])

msg_id = l.modify_ext(
  new_test_dn,
  [(ldap.MOD_INCREMENT, "uidNumber", "1"),(ldap.MOD_INCREMENT, "gidNumber", "1")],
  serverctrls = [pr]
)
_,_,_,resp_ctrls = l.result3(msg_id)
print("resp_ctrls[0].dn:",resp_ctrls[0].dn)
print("resp_ctrls[0].entry:",pprint.pformat(resp_ctrls[0].entry))

print("""#---------------------------------------------------------------------------
# Rename entry
#---------------------------------------------------------------------------
""")

pr = PostReadControl(criticality=True,attrList=['uid'])
msg_id = l.rename(
  new_test_dn,
  "uid=ablume2",
  delold=1,
  serverctrls = [pr]
)
_,_,_,resp_ctrls = l.result3(msg_id)
print("resp_ctrls[0].dn:",resp_ctrls[0].dn)
print("resp_ctrls[0].entry:",pprint.pformat(resp_ctrls[0].entry))

pr = PreReadControl(criticality=True,attrList=['uid'])
msg_id = l.rename(
  new_test_dn2,
  "uid=ablume",
  delold=1,
  serverctrls = [pr]
)
_,_,_,resp_ctrls = l.result3(msg_id)
print("resp_ctrls[0].dn:",resp_ctrls[0].dn)
print("resp_ctrls[0].entry:",pprint.pformat(resp_ctrls[0].entry))

print("""#---------------------------------------------------------------------------
# Delete entry
#---------------------------------------------------------------------------
""")

pr = PreReadControl(criticality=True,attrList=['*','+'])
msg_id = l.delete_ext(
  new_test_dn,
  serverctrls = [pr]
)
_,_,_,resp_ctrls = l.result3(msg_id)
print("resp_ctrls[0].dn:",resp_ctrls[0].dn)
print("resp_ctrls[0].entry:",pprint.pformat(resp_ctrls[0].entry))