logstash-filter-LDAPresolve 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3d8cee25a04c992f639bf3007edc11cc618503ef
4
+ data.tar.gz: 9c99de7ed399ac6c2429d4a0dca4f0aa01e209c5
5
+ SHA512:
6
+ metadata.gz: c3a8a7bb0e9c246047811f2d707366af818bb6a3b045341fa3afd08c60d34ba195483ecf8d17fdf0ab2630e223060784c163b6049e74347cfaaf94a0e7b5ffa4
7
+ data.tar.gz: 1bc3391cfac2e608d3b97482f0cd9e28aeb109bc293646ac24d3c1c953b6fa79118cd1d1962da0d311469a45f69d25852b36074bd30a57404c4965d456dbd5a2
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ Gemfile.lock
3
+ Gemfile.bak
4
+ .bundle
5
+ vendor
File without changes
@@ -0,0 +1,11 @@
1
+ The following is a list of people who have contributed ideas, code, bug
2
+ reports, or in general have helped logstash along its way.
3
+
4
+ Contributors:
5
+ * Aaron Mildenstein (untergeek)
6
+ * Pier-Hugues Pellerin (ph)
7
+
8
+ Note: If you've sent us patches, bug reports, or otherwise contributed to
9
+ Logstash, and you aren't on the list above and want to be, please let us know
10
+ and we'll make sure you're here. Contributions from folks like you are what make
11
+ open source awesome.
@@ -0,0 +1,2 @@
1
+ # logstash-filter-LDAPresolve
2
+ filter plugin to resolve user full name and user group from uid using LDAP
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright (c) 2012–2015 Elasticsearch <http://www.elastic.co>
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
@@ -0,0 +1,5 @@
1
+ Elasticsearch
2
+ Copyright 2012-2015 Elasticsearch
3
+
4
+ This product includes software developed by The Apache Software
5
+ Foundation (http://www.apache.org/).
@@ -0,0 +1,156 @@
1
+ # LDAPresolve Logstash Plugin
2
+
3
+ This is a plugin for [Logstash](https://github.com/elasticsearch/logstash).
4
+
5
+ It is fully free and fully open source. The license is Apache 2.0, meaning you are pretty much free to use it however you want in whatever way.
6
+
7
+ ## Documentation
8
+
9
+ LDAPresolve filter will add to the event the fields 'login', 'user' and 'group' based on LDAP request
10
+ with provided uidNumber information.
11
+ and add LDAP_OK tag on success, otherwise error tag
12
+ LDAP_ERR: some LDAP connection or schema error
13
+ LDAP_UNK_USER: unknow uidNumber
14
+ LDAP_UNK_GROUP: unknow group
15
+
16
+ This filter useby default LDAPS but can be configure to use plain LDAP.
17
+ you can select the protocol you want to use via the use_ssl config setting
18
+
19
+ As all filters, this filter only processes 1 event at a time, so using this plugin can
20
+ significantly slow down your pipeline's throughput if you have a high latency network.
21
+ In order to reduce the slow down a cache mechanism is provided.
22
+ Cache holds the relevant information for a given uidNumber (full user name, group), and cache
23
+ entries are tagged with a timestamp of cache introduction
24
+ Basicaly uidNumber is first searched using the cache on the cache, checked for the timestamp.
25
+ if cache introduction time is older than persistence time then it is considered as not found and a LDAP
26
+ request is performed and cache updated for this specific uidNumber.
27
+
28
+ cache use and cache persistence time are adjustable form the config.
29
+
30
+ LDAP tree naming and schema may vary.
31
+ You must specify the DN where to lookcup for user and group information
32
+ User and group attributes are set to some reasonable values and are overwritable via the config
33
+ user attributes : 'uid', 'gidNumber', 'givenName', 'sn'
34
+ group attributes: 'dn'
35
+
36
+ If uidNumber is not found in LDAP, for user and group are set to default values, eg: Unknown.
37
+
38
+ ## Example
39
+
40
+ assume we have on LDAPS (with no authent) an user John DOE with uidNumber 25377 that pertains to group nobody
41
+ For example with following envent structure.
42
+ ```
43
+ {
44
+ "@version" => "1",
45
+ "@timestamp" => "2015-06-29:00:00.000Z",
46
+ "some_infos" => 'foo bar"
47
+ }
48
+ ```
49
+
50
+ and the following init configuration
51
+ ```
52
+ LDAPresolve {
53
+ uidNumber => 25377
54
+ host => "ldaps.pasteur.fr"
55
+ userdn => "ou=utilisateurs,dc=pasteur,dc=fr"
56
+ groupdn => "ou=entites,ou=groupes,dc=pasteur,dc=fr"
57
+ }
58
+ ```
59
+
60
+ we will get this output
61
+ ```
62
+ {
63
+ "@version" => "1",
64
+ "@timestamp" => "2015-06-29:00:00.000Z",
65
+ "some_infos" => 'foo bar"
66
+ "user" => "John DOE"
67
+ "group" => "nobody"
68
+ "login" => "jdoe"
69
+ }
70
+ ```
71
+
72
+ # Usage
73
+
74
+ ## 1 Installation
75
+
76
+ You can use the built-in plugin tool from Logstash to install the filter from https://rubygems.org/gems/logstash-filter-LDAPresolve
77
+
78
+ ```
79
+ $LS_HOME/bin/plugin install logstash-filter-LDAPresolve
80
+ ```
81
+
82
+ Or you can build it yourself:
83
+
84
+ ```
85
+ git clone https://github.com/EricDeveaud/logstash_filter_LDAPresolve
86
+ cd logstash_filter_LDAPresolve
87
+ bundle install
88
+ bundle exec rspec
89
+ gem build logstash-filter-LDAPresolve.gemspec
90
+ $LS_HOME/bin/plugin install ./logstash-filter-rest-0.1.0.gem
91
+ ```
92
+
93
+ ## 2 Configuration
94
+
95
+ Add the following to the #filter# section of your logstash configuration
96
+
97
+ #### mandatory elements
98
+ ```sh
99
+ LDAPresolve {
100
+ uidNumber => 7225
101
+ host => "ldap.somewhere.org"
102
+ userdn => "ou=users,dc=somewhere,dc=org"
103
+ groupdn => "ou=groups,dc=somewhere,dc=org"
104
+ }
105
+ ```
106
+
107
+ #### auxiliary arguments
108
+
109
+ if your LDAP server use another port than the (339) default one
110
+ ```sh
111
+ ldap_port => 1234
112
+ ```
113
+
114
+ if your LDAPS server use another port than the (636) default one
115
+ ```sh
116
+ ldaps_port => 1234
117
+ ```
118
+
119
+ if you use a login//passord to log to your LDAP server
120
+ ```sh
121
+ username => "some_loggin"
122
+ passord => "secretPassword"
123
+ ```
124
+
125
+ if your LDAP use some specific attributes you can specify them for the filtering request
126
+ ```sh
127
+ userattrs => ['attr1', 'attr2', ..]
128
+ groupattrs => ['attr1', 'attr2', ..]
129
+ ```
130
+
131
+ defaut atributes used by LDAPresolve are the following:
132
+ ```sh
133
+ userattrs => ['uid', 'gidNumber', 'givenName', 'sn'] that suits the posix account definitions.
134
+ groupattrs => ['dn']
135
+ ```
136
+
137
+ ## 3 Cache or not cache
138
+
139
+ LDAPresolve uses a basic cache mechanism by default. This cache mechanism can be disabled using the following configuration options
140
+
141
+ ```sh
142
+ usecache => false
143
+ ```
144
+
145
+ Cache retention is set by default to 300 second. you can change the cache retention duration using the following configuration options
146
+
147
+ ```sh
148
+ cache_interval => number_of_seconds
149
+ ```
150
+
151
+ # Contributing
152
+ All contributions are welcome: ideas, patches, documentation, bug reports, complaints, usggestions ...
153
+
154
+
155
+
156
+
@@ -0,0 +1 @@
1
+ require "logstash/devutils/rake"
@@ -0,0 +1,259 @@
1
+ # encoding: utf-8
2
+ require "logstash/filters/base"
3
+ require "logstash/namespace"
4
+
5
+ # LDAPresolve filter will add to the event the fields 'login', 'user' and 'group' based on LDAP request
6
+ # with provided uidNumber information.
7
+ # and add LDAP_OK on success, otherwise error tags are added to the event
8
+ # * LDAP_ERR: some LDAP connection or schema error
9
+ # * LDAP_UNK_USER: unknow uidNumber
10
+ # * LDAP_UNK_GROUP: unknow group
11
+ #
12
+ # This filter use by default LDAPS but can be configured to use plain LDAP.
13
+ # you can select the protocol you want to use via the use_ssl config setting
14
+ #
15
+ # As all filters, this filter only processes 1 event at a time, so using this plugin can
16
+ # significantly slow down your pipeline's throughput if you have a high latency network.
17
+ # In order to reduce the slow down a cache mechanism is provided.
18
+ # Cache holds the relevant information for a given uidNumber (full user name, group), and cache
19
+ # entries are tagged with a timestamp of cache introduction
20
+ # Basicaly uidNumber is first searched using the cache on the cache, checked for the timestamp.
21
+ # if cache introduction time is older than persistence time then it is considered as not found and a LDAP
22
+ # request is performed and cache updated for this specific uidNumber.
23
+ #
24
+ # cache use and cache persistence time are adjustable form the config.
25
+ #
26
+ # LDAP tree naming and schema may vary.
27
+ # You must specify the DN where to lookcup for user and group information
28
+ # User and group attributes are set to some reasonable values and are overwritable via the config
29
+ # user attributes : 'uid', 'gidNumber', 'givenName', 'sn'
30
+ # group attributes: 'dn'
31
+ #
32
+ # If uidNumber is not found in LDAP, for user and group are set to default values, eg: Unknown
33
+ #
34
+ #
35
+ # configure this filter from your Logstash filter config.
36
+ # [source, ruby]
37
+ # filter {
38
+ # LDAPresolve {
39
+ # uidNumber => uidNumber to resolve
40
+ # host => "my.LDAP.Server"
41
+ # userdn => "Domain Name to search for users information"
42
+ # groupdn => "Domain Name to search for group information"
43
+ # ldap_port => LDAP Server port (Default: 389)
44
+ # ldaps_port => LDAPS Server port (Default: 636)
45
+ # use_ssl => boolean (Default: true)
46
+ # username => "username to log on LDAP server" (Default '')
47
+ # password => "password to log on the LDAP server" Default '')
48
+ # }
49
+ # }
50
+ #
51
+ # Example
52
+ #
53
+ # assume we have on LDAPS (with no authent) an user John DOE with uidNumber 25377 that pertains to group nobody
54
+ # For example with following envent structure.
55
+ # {
56
+ # "@version" => "1",
57
+ # "@timestamp" => "2015-06-29:00:00.000Z",
58
+ # "some_infos" => 'foo bar"
59
+ # }
60
+ #
61
+ # and the following init configuration
62
+ #
63
+ # LDAPresolve {
64
+ # uidNumber => 25377
65
+ # host => "ldaps.pasteur.fr"
66
+ # userdn => "ou=utilisateurs,dc=pasteur,dc=fr"
67
+ # groupdn => "ou=entites,ou=groupes,dc=pasteur,dc=fr"
68
+ # }
69
+ #
70
+ # we will get this output
71
+ #
72
+ # {
73
+ # "@version" => "1",
74
+ # "@timestamp" => "2015-06-29:00:00.000Z",
75
+ # "some_infos" => 'foo bar"
76
+ # "user" => "John DOE"
77
+ # "group" => "nobody"
78
+ # "login" => "jdoe"
79
+ # }
80
+
81
+ class LogStash::Filters::LDAPresolve < LogStash::Filters::Base
82
+
83
+ config_name "LDAPresolve"
84
+
85
+ # uidNumber to resolve.
86
+ config :uidNumber, :validate => :string, :required => true
87
+
88
+ ##--- LDAP server specific configuration
89
+ # LDAP host name
90
+ config :host, :validate => :string, :required => true
91
+ # LDAP//LDAPS port
92
+ config :ldap_port, :validate => :number, :required => false, :default => 389
93
+ config :ldaps_port, :validate => :number, :required => false, :default => 636
94
+ # use SSL ?
95
+ config :use_ssl, :validate => :boolean, :required => false, :default => false
96
+ # LDAP username used to log to LDAP server
97
+ config :username, :validate => :username, :required => false
98
+ # LDAP password used to log to LDAP server
99
+ config :password, :validate => :password, :required => false
100
+ # as LDAP tree naming convention may vary, you must specify the dn to use for OU's user
101
+ config :userdn, :validate => :string, :required => true
102
+ config :userattrs, :validate => :array, :required => false, :default => ['uid', 'gidNumber', 'givenName', 'sn']
103
+ # as LDAP tree naming convention may vary, you must specify the dn to use for OU's group
104
+ config :groupdn, :validate => :string, :required => true
105
+ config :groupattrs, :validate => :array, :required => false, :default => ['dn']
106
+
107
+ ##--- cache settings true//false and time of cache renewal in sec
108
+ # shall we use caching true//false
109
+ config :useCache, :validate => :boolean, :required => false, :default => true
110
+ # cache persistence in second.
111
+ config :cache_interval, :validate => :number, :required => false, :default => 300
112
+
113
+
114
+ public
115
+ def register
116
+ require 'ldap'
117
+ @cache = {}
118
+ @DEFAULT = "Unknown"
119
+ @SUCCESS = "LDAP_OK"
120
+ @FAILURE = "LDAP_ERR"
121
+ @UNKNOWN = "LDAP_UNK"
122
+ end
123
+
124
+ public
125
+ def filter(event)
126
+ exitstatus = @SUCCESS
127
+ ##--- first check cache for provided uidNumber
128
+ cached = false
129
+ if @useCache
130
+ cached = cached?(@uidNumber)
131
+ end
132
+
133
+ if cached
134
+ login, user , group = cached
135
+ else
136
+ @logger.info("prompt LDAP for #{@uidNumber} informations")
137
+ if use_ssl
138
+ conn = LDAP::SSLConn.new(host=@host, port=@ldaps_port)
139
+ else
140
+ conn = LDAP::Conn.new(host=@host, port=@ldap_port)
141
+ end
142
+
143
+ res = ldapsearch(conn, uidNumber)
144
+ user = res['user']
145
+ group = res['group']
146
+ login = res['login']
147
+ exitstatus = res['status']
148
+ errmsg = res['err']
149
+
150
+ ##--- cache infos.
151
+ cacheUID(@uidNumber, login, user, group)
152
+ end
153
+
154
+ ##--- finaly change event to embed login, user and group information
155
+ event["user"] = user
156
+ event["group"] = group
157
+ event["login"] = login
158
+
159
+ ##--- add LDAPresolve exit tag, We can use this later to reparse+reindex logs if necessaryi.
160
+ if event["tags"]
161
+ event["tags"] << exitstatus
162
+ else
163
+ event["tags"]=[exitstatus]
164
+ end
165
+
166
+ # filter_matched should go in the last line of our successful code
167
+ filter_matched(event)
168
+ end # def filter
169
+
170
+
171
+ private
172
+
173
+ def cached?(uidNumber)
174
+ # checks if pgiven uidNumber appear in the cache
175
+ # then check for time it resides on the cache.
176
+ # if cache introdution time > cache_interval. claim that uidNumber is not cached to force
177
+ # update by the caller .
178
+ cached = @cache.fetch(uidNumber, false)
179
+ if cached and Time.now - cached[3] <= @cache_interval
180
+ return cached[0], cached[1], cached[2]
181
+ end
182
+ return false
183
+ end
184
+
185
+ def cacheUID(uidNumber, login, user, group)
186
+ # basic caching mechanism using a hash
187
+ # caveats, no size control.
188
+ @cache[uidNumber] = [login, user, group, Time.now]
189
+ end
190
+
191
+ def ldapsearch(conn, uidNumber)
192
+ ret = { 'login' => @DEFAULT, 'user' => @DEFAULT, 'group' => @DEFAULT, 'status' => @SUCCESS, 'err' => "" }
193
+ gid = 0
194
+
195
+ begin
196
+ conn.bind(username, password)
197
+ rescue LDAP::Error => err
198
+ @logger.error("Error: #{err.message}")
199
+ ret['err'] = err
200
+ ret['status'] = @FAILURE
201
+ return ret
202
+ end
203
+
204
+
205
+ # ok we bound, start search
206
+ scope = LDAP::LDAP_SCOPE_SUBTREE
207
+ ##--- search LDAP for the user name
208
+ begin
209
+ conn.search(@userdn, scope, "(& (objectclass=posixAccount) (uidNumber=#{@uidNumber}))", @userattrs) { |entry|
210
+
211
+ # convert entry object to hash for easier manipulation
212
+ hashEntry = {}
213
+ for k in entry.get_attributes
214
+ hashEntry[k] = entry.vals(k).join(" ")
215
+ end
216
+ # generate user full name.
217
+ # in posix account we expect at least uid, gidNumber
218
+ # givenName and sn may be ommited so provide default value
219
+ ret['user'] = "#{hashEntry.fetch("givenName", "")} #{hashEntry.fetch("sn", @DEFAULT)}".strip
220
+ ret['login'] = "#{hashEntry.fetch("uid")}"
221
+
222
+ # extract gid for further interogation
223
+ gid = hashEntry.fetch("gidNumber", 0)
224
+ match = 1
225
+ }
226
+ rescue LDAP::Error => err
227
+ @logger.error("Error: #{err.message}")
228
+ ret['err'] = err
229
+ ret['status'] = @FAILURE
230
+ return ret
231
+ end
232
+
233
+ if ret['user'] == @DEFAULT
234
+ ret['status'] = "#{@UNKNOWN}_USER"
235
+ return ret
236
+ end
237
+
238
+ ##--- search for GROUP name
239
+ filter = "(& (objectclass=posixGroup) (gidNumber=#{gid}))"
240
+ begin
241
+ conn.search(@groupdn, scope, filter, @groupattrs) { |entry|
242
+ ret['group'] = entry.dn.split(',')[0].split('=')[1]
243
+ }
244
+ rescue LDAP::Error => err
245
+ @logger.error("Error: #{err.message}")
246
+ ret['err'] = err
247
+ ret['status'] = @FAILURE
248
+ return ret
249
+ end
250
+
251
+ if ret['group'] == @DEFAULT
252
+ ret['status'] = "#{@UNKNOWN}_GROUP"
253
+ ret['group'] =ret['user']
254
+ return ret
255
+ end
256
+
257
+ return ret
258
+ end
259
+ end # class LogStash::Filters::LDAPresolve
@@ -0,0 +1,24 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'logstash-filter-LDAPresolve'
3
+ s.version = '0.1.1'
4
+ s.licenses = ['Apache License (2.0)']
5
+ s.summary = "This filter adds infodrmation fields from LDAP server based on the provided uid."
6
+ s.description = "This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program"
7
+ s.authors = ["Eric Deveaud"]
8
+ s.email = 'edeveaud@pasteur.fr'
9
+ s.homepage = "http://projets.pasteur.fr"
10
+ s.require_paths = ["lib"]
11
+
12
+ # Files
13
+ s.files = `git ls-files`.split($\)
14
+ # Tests
15
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
16
+
17
+ # Special flag to let us know this is actually a logstash plugin
18
+ s.metadata = { "logstash_plugin" => "true", "logstash_group" => "filter" }
19
+
20
+ # Gem dependencies
21
+ s.add_runtime_dependency "logstash-core", '>= 1.4.0', '< 2.0.0'
22
+ s.add_runtime_dependency "jruby-ldap"
23
+ s.add_development_dependency 'logstash-devutils'
24
+ end
@@ -0,0 +1,127 @@
1
+ require 'spec_helper'
2
+ require "logstash/filters/LDAPresolve"
3
+
4
+ describe LogStash::Filters::LDAPresolve do
5
+
6
+ describe "check bind error" do
7
+ let(:config) do <<-CONFIG
8
+ filter {
9
+ LDAPresolve {
10
+ host => "none.pasteur.fr"
11
+ userdn => "ou=utilisateurs,dc=pasteur,dc=fr"
12
+ groupdn => "ou=entites,ou=groupes,dc=pasteur,dc=fr"
13
+ uidNumber => 1234
14
+ }
15
+ }
16
+ CONFIG
17
+ end
18
+
19
+ sample("test" => "test" ) do
20
+ expect(subject).to include('tags')
21
+ expect(subject["tags"]).to eq(["LDAP_ERR"])
22
+
23
+ end
24
+ end # bind test
25
+
26
+ # describe "unknown uidNumber" do
27
+ # let(:config) do <<-CONFIG
28
+ # filter {
29
+ # LDAPresolve {
30
+ # host => "ldap.pasteur.fr"
31
+ # userdn => "ou=utilisateurs,dc=pasteur,dc=fr"
32
+ # groupdn => "ou=entites,ou=groupes,dc=pasteur,dc=fr"
33
+ # uidNumber => 1234567890
34
+ # }
35
+ # }
36
+ # CONFIG
37
+ # end
38
+ #
39
+ # sample("test" => "test" ) do
40
+ # expect(subject).to include('user')
41
+ # expect(subject["user"]).to eq('Unknown')
42
+ # expect(subject).to include('group')
43
+ # expect(subject["group"]).to eq('Unknown')
44
+ # expect(subject).to include('tags')
45
+ # expect(subject["tags"]).to eq(["LDAP_UNK_USER"])
46
+ #
47
+ # end
48
+ # end # end unknow uid
49
+ #
50
+ #
51
+ # describe "uidNumber with no associated group" do
52
+ # let(:config) do <<-CONFIG
53
+ # filter {
54
+ # LDAPresolve {
55
+ # host => "ldap.pasteur.fr"
56
+ # userdn => "ou=utilisateurs,dc=pasteur,dc=fr"
57
+ # groupdn => "ou=entites,ou=groupes,dc=pasteur,dc=fr"
58
+ # uidNumber => 23865
59
+ # }
60
+ # }
61
+ # CONFIG
62
+ # end
63
+ #
64
+ # sample("test" => "test") do
65
+ # expect(subject).to include('user')
66
+ # expect(subject["user"]).to eq('biomaj')
67
+ # expect(subject).to include('group')
68
+ # expect(subject["group"]).to eq('biomaj')
69
+ # expect(subject).to include('tags')
70
+ # expect(subject["tags"]).to eq(["LDAP_UNK_GROUP"])
71
+ #
72
+ # end
73
+ # end #end no group name user
74
+ #
75
+ # describe "LDAP test" do
76
+ # let(:config) do <<-CONFIG
77
+ # filter {
78
+ # LDAPresolve {
79
+ # host => "ldap.pasteur.fr"
80
+ # userdn => "ou=utilisateurs,dc=pasteur,dc=fr"
81
+ # groupdn => "ou=entites,ou=groupes,dc=pasteur,dc=fr"
82
+ # use_ssl => false
83
+ # uidNumber => 7225
84
+ # }
85
+ # }
86
+ # CONFIG
87
+ # end
88
+ #
89
+ # sample("test" => "test") do
90
+ # expect(subject).to include('user')
91
+ # expect(subject["user"]).to eq('Eric DEVEAUD')
92
+ # expect(subject).to include('group')
93
+ # expect(subject["group"]).to eq('CIB')
94
+ # expect(subject).to include('login')
95
+ # expect(subject["login"]).to eq('edeveaud')
96
+ # expect(subject).to include('tags')
97
+ # expect(subject["tags"]).to eq(["LDAP_OK"])
98
+ #
99
+ # end
100
+ # end #end LDAP test
101
+ #
102
+ # describe "LDAPS test" do
103
+ # let(:config) do <<-CONFIG
104
+ # filter {
105
+ # LDAPresolve {
106
+ # host => "ldap.pasteur.fr"
107
+ # userdn => "ou=utilisateurs,dc=pasteur,dc=fr"
108
+ # groupdn => "ou=entites,ou=groupes,dc=pasteur,dc=fr"
109
+ # use_ssl => true
110
+ # uidNumber => 7225
111
+ # }
112
+ # }
113
+ # CONFIG
114
+ # end
115
+ #
116
+ # sample("test" => "test") do
117
+ # expect(subject).to include('user')
118
+ # expect(subject["user"]).to eq('Eric DEVEAUD')
119
+ # expect(subject).to include('group')
120
+ # expect(subject["group"]).to eq('CIB')
121
+ # expect(subject).to include('tags')
122
+ # expect(subject["tags"]).to eq(["LDAP_OK"])
123
+ #
124
+ # end
125
+ # end # end LDAPS test
126
+
127
+ end
@@ -0,0 +1 @@
1
+ require "logstash/devutils/rspec/spec_helper"
metadata ADDED
@@ -0,0 +1,108 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: logstash-filter-LDAPresolve
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Eric Deveaud
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: logstash-core
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.4.0
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: 2.0.0
23
+ requirement: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: 1.4.0
28
+ - - <
29
+ - !ruby/object:Gem::Version
30
+ version: 2.0.0
31
+ prerelease: false
32
+ type: :runtime
33
+ - !ruby/object:Gem::Dependency
34
+ name: jruby-ldap
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirement: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ prerelease: false
46
+ type: :runtime
47
+ - !ruby/object:Gem::Dependency
48
+ name: logstash-devutils
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ prerelease: false
60
+ type: :development
61
+ description: This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program
62
+ email: edeveaud@pasteur.fr
63
+ executables: []
64
+ extensions: []
65
+ extra_rdoc_files: []
66
+ files:
67
+ - .gitignore
68
+ - CHANGELOG.md
69
+ - CONTRIBUTORS
70
+ - DEVELOPER.md
71
+ - Gemfile
72
+ - LICENSE
73
+ - NOTICE.TXT
74
+ - README.md
75
+ - Rakefile
76
+ - lib/logstash/filters/LDAPresolve.rb
77
+ - logstash-filter-LDAPresolve.gemspec
78
+ - spec/filters/LDAPresolve_spec.rb
79
+ - spec/spec_helper.rb
80
+ homepage: http://projets.pasteur.fr
81
+ licenses:
82
+ - Apache License (2.0)
83
+ metadata:
84
+ logstash_plugin: 'true'
85
+ logstash_group: filter
86
+ post_install_message:
87
+ rdoc_options: []
88
+ require_paths:
89
+ - lib
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ requirements: []
101
+ rubyforge_project:
102
+ rubygems_version: 2.4.8
103
+ signing_key:
104
+ specification_version: 4
105
+ summary: This filter adds infodrmation fields from LDAP server based on the provided uid.
106
+ test_files:
107
+ - spec/filters/LDAPresolve_spec.rb
108
+ - spec/spec_helper.rb