Class: LdapFluff::GenericMemberService

Inherits:
Object
  • Object
show all
Defined in:
lib/ldap_fluff/generic_member_service.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ldap, config) ⇒ GenericMemberService

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

#ldapObject

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

Raises:

  • (self.class::UIDNotFoundException)


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

Raises:

  • (self.class::GIDNotFoundException)


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

Raises:

  • (self.class::UIDNotFoundException)


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 (entry)
  [, '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!)
  [, '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 = )
  filter = Net::LDAP::Filter.eq(attr, uid)

  if @search_filter.nil?
    filter
  else
    filter & @search_filter
  end
end