Class: LogStash::Inputs::NetLdap

Inherits:
Base
  • Object
show all
Defined in:
lib/logstash/inputs/netldap.rb

Overview

Performs a LDAP search using net-ldap.

Usage :

input

ldap{
  host => "myLdapHost"
  port => 389
  dn => "myDn"
  password => "myPassword"
  base => "ou=people,dc=gouv,dc=fr"
  filter => [{field=>"field1" value=>"value1", value=>"value2"
  attrs => ['uid', 'mail', 'sn', 'cn']
}

}

Instance Method Summary collapse

Instance Method Details

#registerObject



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/logstash/inputs/netldap.rb', line 60

def register
  @host = Socket.gethostname
  
  if @anonymous
    auth = { :method => :anonymous}
  else
    if @dn.nil? or @password.nil?
      raise(LogStash::ConfigurationError, ":dn and :password must be set when bind is not anonymous.")
    end
    auth = {
      :method => :simple,
      :username => @dn,
      :password => @password.value  
    }
  end
  @conn = Net::LDAP.new :host => @ldap_host,
  :port => @port,
  :auth => auth
end

#run(queue) ⇒ Object



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
# File 'lib/logstash/inputs/netldap.rb', line 80

def run(queue)
  # Filters def
  finalFilter = "" # need to initialize this outside the each
  @filters.each.with_index do |hashFilter, index|
    tmpFilter = Net::LDAP::Filter.eq(hashFilter['field'], hashFilter['value'])
    case index
    when 0
      finalFilter = tmpFilter
    else
      finalFilter = Net::LDAP::Filter.join(finalFilter, tmpFilter)
    end
  end

  #filter = Net::LDAP::Filter.eq("objectclass", "inetorgperson")
  @conn.search(:base => @base, :filter => finalFilter, :attributes => @attrs) do |entry|
    # event = LogStash::Event::new
    event = LogStash::Event.new()
    decorate(event)
    entry.each do |attribute, value|
      if value.count() > 1
        event.set("#{attribute}", value)
      else
        event.set("#{attribute}", value.first)
      end
    end
    queue << event
  end
end