-
Notifications
You must be signed in to change notification settings - Fork 0
/
netldap2.rb
53 lines (42 loc) · 1.27 KB
/
netldap2.rb
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
require 'net/ldap'
ldap = Net::LDAP.new
ldap.host = "localhost"
ldap.port = 389
ldap.auth "cn=admin,dc=nodomain", "admin"
if ldap.bind == false
puts "auth failed"
exit
else
puts "auth succeeded"
end
#Add a user and later delete him
new_userdn = "cn=phpcreator,ou=users,dc=nodomain"
attr = {
:cn => 'phpcreator',
:objectclass => ['inetorgperson'],
:sn => 'Lerdorf',
:givenName => 'Rasmus'
}
ldap.add(:dn => new_userdn, :attributes => attr)
rubyists_dn = 'cn=rubyists,ou=groups,dc=nodomain'
groups_base = 'ou=groups,dc=nodomain'
ldap.add_attribute rubyists_dn, :member, new_userdn
rubyists = ldap.search :base => groups_base, :filter => '(cn=rubyists)',
:return_result => true
puts "Members of the group:"
rubyists[0].member.each do |member|
puts "member dn: #{member}"
end
puts "Something is wrong here."
ldap.delete :dn => new_userdn
rubyists = ldap.search :base => groups_base, :filter => '(cn=rubyists)', :return_result => true
members = rubyists[0].member
if members.include?(new_userdn)
members.delete new_userdn
ldap.replace_attribute rubyists_dn, :member, members
end
puts "There fixed that"
puts "Here's the membership now"
ldap.search :base => groups_base, :filter=> '(cn=rubyists)' do |rubyists|
puts "#{rubyists.member}"
end