Class: LogStash::Inputs::LDAPSearch

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

Overview

Perform an LDAP Search

Example:

 input {
    LDAPSearch {
     host => "myLDAPServer"
     dn => "myDN"
     password => "myPassword"
     filter => "myldapfilter"
     base => "ou=people,dc=univ,dc=fr"
     attrs => ['myattrubteslist']
    }
}

Instance Method Summary collapse

Instance Method Details

#registerObject



38
39
40
41
42
# File 'lib/logstash/inputs/LDAPSearch.rb', line 38

def register
  require 'base64'
  require 'rubygems'
  require 'ldap'
end

#run(queue) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/logstash/inputs/LDAPSearch.rb', line 45

def run(queue)
    
  @host = Socket.gethostbyname(@host).first
  #attrs = ['uid', 'sn', 'cn', 'eduPersonPrimaryAffiliation']
  scope = LDAP::LDAP_SCOPE_SUBTREE #LDAP::LDAP_SCOPE_ONELEVEL
  conn = LDAP::Conn.new(@host, @port)
  conn.bind(@dn, @password.value)
  begin
    @logger.debug("Executing LDAP search base='#{@base}' filter='#{@filter}'")
    conn.search(base, scope, filter, attrs) { |entry|
      # print distinguished name
      # p entry.dn
      event = LogStash::Event.new
      decorate(event)
      event["host"] = @host
      entry.get_attributes.each do |attr|
      #values = entry.get_values(attr).first
      values = entry.get_values(attr)
      values = values.map { |value|
          (/[^[:print:]]/ =~ value).nil? ? value : Base64.strict_encode64(value)
      }
      event[attr] = values
      end
      #event["attr"] = entry.attrs
      queue << event
        
    }
  rescue LDAP::ResultError => ex
    @logger.error("LDAP search error: #{ex}\n#{ex.backtrace}")
    exit
  end
  finished
end