class LogStash::Inputs::NetLdap
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"}, {field=>"field2" value=>"value2"} attrs => ['uid', 'mail', 'sn', 'cn'] }
}
Public Instance Methods
execute_search(queue)
click to toggle source
# File lib/logstash/inputs/netldap.rb, line 97 def execute_search(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
register()
click to toggle source
# File lib/logstash/inputs/netldap.rb, line 63 def register require "net/ldap" require "rufus/scheduler" @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)
click to toggle source
# File lib/logstash/inputs/netldap.rb, line 85 def run(queue) if @schedule @scheduler = Rufus::Scheduler.new(:max_work_threds => 1) @scheduler.cron @schedule do execute_search(queue) end @scheduler.join else execute_search(queue) end end
stop()
click to toggle source
# File lib/logstash/inputs/netldap.rb, line 126 def stop @scheduler.shutdown(:wait) if @scheduler end