Class: LdapFluff::GenericMemberService
- Inherits:
-
Object
- Object
- LdapFluff::GenericMemberService
show all
- Defined in:
- lib/ldap_fluff/generic_member_service.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of GenericMemberService.
6
7
8
9
10
11
12
13
14
15
16
|
# File 'lib/ldap_fluff/generic_member_service.rb', line 6
def initialize(ldap, config)
@ldap = ldap
@base = config.base_dn
@group_base = (config.group_base.empty? ? config.base_dn : config.group_base)
@search_filter = nil
begin
@search_filter = Net::LDAP::Filter.construct(config.search_filter) unless (config.search_filter.nil? || config.search_filter.empty?)
rescue Net::LDAP::Error => e
puts "Search filter unavailable - #{e}"
end
end
|
Instance Attribute Details
#ldap ⇒ Object
Returns the value of attribute ldap.
4
5
6
|
# File 'lib/ldap_fluff/generic_member_service.rb', line 4
def ldap
@ldap
end
|
Instance Method Details
#find_by_dn(dn) ⇒ Object
24
25
26
27
28
29
30
31
|
# File 'lib/ldap_fluff/generic_member_service.rb', line 24
def find_by_dn(dn)
entry, base = dn.split(/(?<!\\),/, 2)
entry_attr, entry_value = entry.split('=', 2)
entry_value = entry_value.gsub('\,', ',')
user = @ldap.search(:filter => name_filter(entry_value, entry_attr), :base => base)
raise self.class::UIDNotFoundException if (user.nil? || user.empty?)
user
end
|
#find_group(gid) ⇒ Object
33
34
35
36
37
|
# File 'lib/ldap_fluff/generic_member_service.rb', line 33
def find_group(gid)
group = @ldap.search(:filter => group_filter(gid), :base => @group_base)
raise self.class::GIDNotFoundException if (group.nil? || group.empty?)
group
end
|
#find_user(uid) ⇒ Object
18
19
20
21
22
|
# File 'lib/ldap_fluff/generic_member_service.rb', line 18
def find_user(uid)
user = @ldap.search(:filter => name_filter(uid))
raise self.class::UIDNotFoundException if (user.nil? || user.empty?)
user
end
|
#get_groups(grouplist) ⇒ Object
extract the group names from the LDAP style response, return string will be something like CN=bros,OU=bropeeps,DC=jomara,DC=redhat,DC=com
56
57
58
|
# File 'lib/ldap_fluff/generic_member_service.rb', line 56
def get_groups(grouplist)
grouplist.map(&:downcase).collect { |g| g.sub(/.*?cn=(.*?),.*/, '\1') }
end
|
#get_login_from_entry(entry) ⇒ Object
77
78
79
80
81
82
|
# File 'lib/ldap_fluff/generic_member_service.rb', line 77
def get_login_from_entry(entry)
[@attr_login, 'uid', 'cn'].each do |attribute|
return entry.send(attribute) if entry.respond_to? attribute
end
nil
end
|
#get_logins(userlist) ⇒ Object
65
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/ldap_fluff/generic_member_service.rb', line 65
def get_logins(userlist)
userlist.map(&:downcase!)
[@attr_login, 'uid', 'cn'].map do |attribute|
logins = userlist.collect { |g| g.sub(/.*?#{attribute}=(.*?),.*/, '\1') }
if logins == userlist
nil
else
logins
end
end.uniq.compact.flatten
end
|
#get_netgroup_users(netgroup_triples) ⇒ Object
60
61
62
63
|
# File 'lib/ldap_fluff/generic_member_service.rb', line 60
def get_netgroup_users(netgroup_triples)
return [] if netgroup_triples.nil?
netgroup_triples.map { |m| m.split(',')[1] }
end
|
#group_filter(gid) ⇒ Object
49
50
51
|
# File 'lib/ldap_fluff/generic_member_service.rb', line 49
def group_filter(gid)
Net::LDAP::Filter.eq("cn", gid)
end
|
#name_filter(uid, attr = @attr_login) ⇒ Object
39
40
41
42
43
44
45
46
47
|
# File 'lib/ldap_fluff/generic_member_service.rb', line 39
def name_filter(uid, attr = @attr_login)
filter = Net::LDAP::Filter.eq(attr, uid)
if @search_filter.nil?
filter
else
filter & @search_filter
end
end
|