rubinius-net-ldap 0.11

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.
Files changed (73) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rubocop.yml +5 -0
  4. data/.rubocop_todo.yml +462 -0
  5. data/.travis.yml +19 -0
  6. data/CONTRIBUTING.md +54 -0
  7. data/Contributors.rdoc +24 -0
  8. data/Gemfile +2 -0
  9. data/Hacking.rdoc +63 -0
  10. data/History.rdoc +260 -0
  11. data/License.rdoc +29 -0
  12. data/README.rdoc +65 -0
  13. data/Rakefile +17 -0
  14. data/lib/net-ldap.rb +2 -0
  15. data/lib/net/ber.rb +320 -0
  16. data/lib/net/ber/ber_parser.rb +182 -0
  17. data/lib/net/ber/core_ext.rb +55 -0
  18. data/lib/net/ber/core_ext/array.rb +96 -0
  19. data/lib/net/ber/core_ext/false_class.rb +10 -0
  20. data/lib/net/ber/core_ext/integer.rb +74 -0
  21. data/lib/net/ber/core_ext/string.rb +66 -0
  22. data/lib/net/ber/core_ext/true_class.rb +11 -0
  23. data/lib/net/ldap.rb +1229 -0
  24. data/lib/net/ldap/connection.rb +702 -0
  25. data/lib/net/ldap/dataset.rb +168 -0
  26. data/lib/net/ldap/dn.rb +225 -0
  27. data/lib/net/ldap/entry.rb +193 -0
  28. data/lib/net/ldap/error.rb +38 -0
  29. data/lib/net/ldap/filter.rb +778 -0
  30. data/lib/net/ldap/instrumentation.rb +23 -0
  31. data/lib/net/ldap/password.rb +38 -0
  32. data/lib/net/ldap/pdu.rb +297 -0
  33. data/lib/net/ldap/version.rb +5 -0
  34. data/lib/net/snmp.rb +264 -0
  35. data/rubinius-net-ldap.gemspec +37 -0
  36. data/script/install-openldap +112 -0
  37. data/script/package +7 -0
  38. data/script/release +16 -0
  39. data/test/ber/core_ext/test_array.rb +22 -0
  40. data/test/ber/core_ext/test_string.rb +25 -0
  41. data/test/ber/test_ber.rb +99 -0
  42. data/test/fixtures/cacert.pem +20 -0
  43. data/test/fixtures/openldap/memberof.ldif +33 -0
  44. data/test/fixtures/openldap/retcode.ldif +76 -0
  45. data/test/fixtures/openldap/slapd.conf.ldif +67 -0
  46. data/test/fixtures/seed.ldif +374 -0
  47. data/test/integration/test_add.rb +28 -0
  48. data/test/integration/test_ber.rb +30 -0
  49. data/test/integration/test_bind.rb +34 -0
  50. data/test/integration/test_delete.rb +31 -0
  51. data/test/integration/test_open.rb +88 -0
  52. data/test/integration/test_return_codes.rb +38 -0
  53. data/test/integration/test_search.rb +77 -0
  54. data/test/support/vm/openldap/.gitignore +1 -0
  55. data/test/support/vm/openldap/README.md +32 -0
  56. data/test/support/vm/openldap/Vagrantfile +33 -0
  57. data/test/test_dn.rb +44 -0
  58. data/test/test_entry.rb +65 -0
  59. data/test/test_filter.rb +223 -0
  60. data/test/test_filter_parser.rb +20 -0
  61. data/test/test_helper.rb +66 -0
  62. data/test/test_ldap.rb +60 -0
  63. data/test/test_ldap_connection.rb +404 -0
  64. data/test/test_ldif.rb +104 -0
  65. data/test/test_password.rb +10 -0
  66. data/test/test_rename.rb +77 -0
  67. data/test/test_search.rb +39 -0
  68. data/test/test_snmp.rb +119 -0
  69. data/test/test_ssl_ber.rb +40 -0
  70. data/test/testdata.ldif +101 -0
  71. data/testserver/ldapserver.rb +210 -0
  72. data/testserver/testdata.ldif +101 -0
  73. metadata +204 -0
data/.travis.yml ADDED
@@ -0,0 +1,19 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - rbx-1
5
+
6
+ env:
7
+ - INTEGRATION=openldap
8
+
9
+ install:
10
+ - if [ "$INTEGRATION" = "openldap" ]; then sudo script/install-openldap; fi
11
+ - bundle install
12
+
13
+ script: bundle exec rake ci
14
+
15
+ matrix:
16
+ fast_finish: true
17
+
18
+ notifications:
19
+ email: false
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,54 @@
1
+ # Contribution guide
2
+
3
+ Thank you for using net-ldap. If you'd like to help, keep these guidelines in
4
+ mind.
5
+
6
+ ## Submitting a New Issue
7
+
8
+ If you find a bug, or would like to propose an idea, file a [new issue][issues].
9
+ Include as many details as possible:
10
+
11
+ - Version of net-ldap gem
12
+ - LDAP server version
13
+ - Queries, connection information, any other input
14
+ - output or error messages
15
+
16
+ ## Sending a Pull Request
17
+
18
+ [Pull requests][pr] are always welcome!
19
+
20
+ Check out [the project's issues list][issues] for ideas on what could be improved.
21
+
22
+ Before sending, please add tests and ensure the test suite passes.
23
+
24
+ To run the full suite:
25
+
26
+ `bundle exec rake`
27
+
28
+ To run a specific test file:
29
+
30
+ `bundle exec ruby test/test_ldap.rb`
31
+
32
+ To run a specific test:
33
+
34
+ `bundle exec ruby test/test_ldap.rb -n test_instrument_bind`
35
+
36
+ Pull requests will trigger automatic continuous integration builds on
37
+ [TravisCI][travis]. To run integration tests locally, see the `test/support`
38
+ folder.
39
+
40
+ ## Styleguide
41
+
42
+ ```ruby
43
+ # 1.9+ style hashes
44
+ {key: "value"}
45
+
46
+ # Multi-line arguments with `\`
47
+ MyClass.new \
48
+ foo: 'bar',
49
+ baz: 'garply'
50
+ ```
51
+
52
+ [issues]: https://github.com/ruby-net-ldap/ruby-net-ldap/issues
53
+ [pr]: https://help.github.com/articles/using-pull-requests
54
+ [travis]: https://travis-ci.org/ruby-ldap/ruby-net-ldap
data/Contributors.rdoc ADDED
@@ -0,0 +1,24 @@
1
+ == Contributors
2
+
3
+ Net::LDAP was originally developed by:
4
+
5
+ * Francis Cianfrocca (garbagecat)
6
+
7
+ Contributions since:
8
+
9
+ * Emiel van de Laar (emiel)
10
+ * Rory O'Connell (roryo)
11
+ * Kaspar Schiess (kschiess)
12
+ * Austin Ziegler (halostatue)
13
+ * Dimitrij Denissenko (dim)
14
+ * James Hewitt (jamstah)
15
+ * Kouhei Sutou (kou)
16
+ * Lars Tobias Skjong-Børsting (larstobi)
17
+ * Rory O'Connell (roryo)
18
+ * Tony Headford (tonyheadford)
19
+ * Derek Harmel (derekharmel)
20
+ * Erik Hetzner (egh)
21
+ * nowhereman
22
+ * David J. Lee (DavidJLee)
23
+ * Cody Cutrer (ccutrer)
24
+ * WoodsBagotAndreMarquesLee
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/Hacking.rdoc ADDED
@@ -0,0 +1,63 @@
1
+ = Hacking on Net::LDAP
2
+
3
+ We welcome your contributions to Net::LDAP. We accept most contributions, but
4
+ there are ways to increase the chance of your patch being accepted quickly.
5
+
6
+ == Licensing
7
+
8
+ Net::LDAP 0.2 and later are be licensed under an MIT-style license; any
9
+ contributions after 2010-04-20 must be under this license to be accepted.
10
+
11
+ == Formatting
12
+
13
+ * Your patches should be formatted like the rest of Net::LDAP.
14
+ * We use a text wrap of 76–78 characters, especially for documentation
15
+ contents.
16
+ * Operators should have spaces around them.
17
+ * Method definitions should have parentheses around arguments (and no
18
+ parentheses if there are no arguments).
19
+ * Indentation should be kept as flat as possible; this may mean being more
20
+ explicit with constants.
21
+
22
+
23
+ We welcome your contributions to Net::LDAP. To increase the chances of your
24
+ patches being accepted, we recommend that you follow the guidelines below:
25
+
26
+ == Documentation
27
+
28
+ * Documentation: {net-ldap}[http://rubydoc.info/gems/net-ldap]
29
+
30
+ It is very important that, if you add new methods or objects, your code is
31
+ well-documented. The purpose of the changes should be clearly described so that
32
+ even if this is a feature we do not use, we can understand its purpose.
33
+
34
+ We also encourage documentation-only contributions that improve the
35
+ documentation of Net::LDAP.
36
+
37
+ We encourage you to provide a good summary of your as a modification to
38
+ +History.rdoc+, and if you're not yet named as a contributor, include a
39
+ modification to +Contributors.rdoc+ to add yourself.
40
+
41
+ == Tests
42
+
43
+ The Net::LDAP team uses [Minitest](http://docs.seattlerb.org/minitest/) for unit
44
+ testing; all changes must have tests for any new or changed features.
45
+
46
+ Your changes should have been tested against at least one real LDAP server; the
47
+ current tests are not sufficient to find all possible bugs. It's unlikely that
48
+ they will ever be sufficient given the variations in LDAP server behaviour.
49
+
50
+ If you're introducing a new feature, it would be preferred for you to provide
51
+ us with a sample LDIF data file for importing into LDAP servers for testing.
52
+
53
+ == Development Dependencies
54
+
55
+ Net::LDAP uses several libraries during development, all of which can be
56
+ installed using RubyGems.
57
+
58
+ * *flexmock*
59
+
60
+ == Participation
61
+
62
+ * GitHub: {ruby-ldap/ruby-net-ldap}[https://github.com/ruby-ldap/ruby-net-ldap/]
63
+ * Group: {ruby-ldap}[http://groups.google.com/group/ruby-ldap]
data/History.rdoc ADDED
@@ -0,0 +1,260 @@
1
+ === Net::LDAP 0.11
2
+ * Major enhancements:
3
+ * #183 Specific errors subclassing Net::LDAP::Error
4
+ * Bug fixes:
5
+ * #176 Fix nil tls options
6
+ * #184 Search guards against nil queued reads. Connection#unescape handles numerics
7
+ * Code clean-up:
8
+ * #180 Refactor connection establishment
9
+
10
+ === Net::LDAP 0.10.1
11
+ * Bug fixes:
12
+ * Fix Integer BER encoding of signed values
13
+
14
+ === Net::LDAP 0.10.0
15
+ * Major enhancements:
16
+ * Accept SimpleTLS/StartTLS encryption options (compatible with `OpenSSL::SSL::SSLContext#set_params`)
17
+ * Bug fixes:
18
+ * Parse filter strings with square and curly braces (`[]` and `{}`)
19
+ * Handle connection timeout errors (`Errno::ETIMEDOUT` raised as `Net::LDAP::LdapError`)
20
+ * Testing changes:
21
+ * Add integration tests for StartTLS connections to OpenLDAP
22
+ * Meta changes:
23
+ * Update Gem release tooling (remove Hoe, use Rake)
24
+ * Fix Gem release date
25
+
26
+ === Net::LDAP 0.9.0
27
+ * Major changes:
28
+ * Dropped support for ruby 1.8.7, ruby >= 1.9.3 now required
29
+ * Major enhancements:
30
+ * Add support for search time limit parameter
31
+ * Instrument received messages, PDU parsing
32
+ * Minor enhancments:
33
+ * Add support for querying ActiveDirectory capabilities from root dse
34
+ * Bug fixes:
35
+ * Fix reads for multiple concurrent requests with shared, open connections mixing up the results
36
+ * Fix search size option
37
+ * Fix BER encoding bug
38
+ * Code clean-up:
39
+ * Added integration test suite
40
+ * Switch to minitest
41
+
42
+ * Details
43
+ * #150 Support querying ActiveDirectory capabilities when searching root dse
44
+ * #142 Encode true as xFF
45
+ * #124, #145, #146, #152 Cleanup gemspec
46
+ * #138, #144 Track response messages by message id
47
+ * #141 Magic number/constant cleanup
48
+ * #119, #129, #130, #132, #133, #137 Integration tests
49
+ * #115 Search timeout support
50
+ * #140 Fix search size option
51
+ * #139 Cleanup and inline documentation for Net::LDAP::Connection#search
52
+ * #131 Instrumentation
53
+ * #116 Refactor Connection#write
54
+ * #126 Update gitignore
55
+ * #128 Fix whitespace
56
+ * #113, #121 Switch to minitest
57
+ * #123 Base64 encoded dn
58
+ * #114 Separate file for Net::LDAP::Connection
59
+ * #104 Parse version spec in LDIF datasets
60
+ * #106 ldap.modify doc fixes
61
+ * #111 Fix test deprecations
62
+
63
+ === Net::LDAP 0.5.0 / 2013-07-22
64
+ * Major changes:
65
+ * Required Ruby version is >=1.9.3
66
+ * Major enhancements:
67
+ * Added alias dereferencing (@ngwilson)
68
+ * BER now unescapes characters that are already escaped in the source string (@jzinn)
69
+ * BerIdentifiedString will now fall back to ASCII-8 encoding if the source Ruby object cannot be encoded in UTF-8 (@lfu)
70
+ * Bug fixes:
71
+ * Fixed nil variable error when following a reference response (@cmdrclueless)
72
+ * Fixed FilterParser unable to parse multibyte strings (@satoryu)
73
+ * Return ConverterNotFound when dealing with a potentially corrupt data response (@jamuc)
74
+
75
+ === Net::LDAP 0.3.1 / 2012-02-15
76
+ * Bug Fixes:
77
+ * Bundler should now work again
78
+
79
+ === Net::LDAP 0.3.0 / 2012-02-14
80
+ * Major changes:
81
+ * Now uses UTF-8 strings instead of ASCII-8 per the LDAP RFC
82
+ * Major Enhancements:
83
+ * Adding continuation reference processing
84
+ * Bug Fixes:
85
+ * Fixes usupported object type #139
86
+ * Fixes Net::LDAP namespace errors
87
+ * Return nil instead of an empty array if the search fails
88
+
89
+ === Net::LDAP 0.2.2 / 2011-03-26
90
+ * Bug Fixes:
91
+ * Fixed the call to Net::LDAP.modify_ops from Net::LDAP#modify.
92
+
93
+ === Net::LDAP 0.2.1 / 2011-03-23
94
+ * Bug Fixes:
95
+ * Net::LDAP.modify_ops was broken and is now fixed.
96
+
97
+ === Net::LDAP 0.2 / 2011-03-22
98
+ * Major Enhancements:
99
+ * Net::LDAP::Filter changes:
100
+ * Filters can only be constructed using our custom constructors (eq, ge,
101
+ etc.). Cleaned up the code to reflect the private new.
102
+ * Fixed #to_ber to output a BER representation for :ne filters. Simplified
103
+ the BER construction for substring matching.
104
+ * Added Filter.join(left, right), Filter.intersect(left, right), and
105
+ Filter.negate(filter) to match Filter#&, Filter#|, and Filter#~@ to
106
+ prevent those operators from having problems with the private new.
107
+ * Added Filter.present and Filter.present? aliases for the method
108
+ previously only known as Filter.pres.
109
+ * Added Filter.escape to escape strings for use in filters, based on
110
+ rfc4515.
111
+ * Added Filter.equals, Filter.begins, Filter.ends and Filter.contains,
112
+ which automatically escape input for use in a filter string.
113
+ * Cleaned up Net::LDAP::Filter::FilterParser to handle branches better.
114
+ Fixed some of the regular expressions to be more canonically defined.
115
+ * Correctly handles single-branch branches.
116
+ * Cleaned up the string representation of Filter objects.
117
+ * Added experimental support for RFC4515 extensible matching (e.g.,
118
+ "(cn:caseExactMatch:=Fred Flintstone)"); provided by "nowhereman".
119
+ * Net::LDAP::DN class representing an automatically escaping/unescaping
120
+ distinguished name for LDAP queries.
121
+ * Minor Enhancements:
122
+ * SSL capabilities will be enabled or disabled based on whether we can load
123
+ OpenSSL successfully or not.
124
+ * Moved the core class extensions extensions from being in the Net::LDAP
125
+ hierarchy to the Net::BER hierarchy as most of the methods therein are
126
+ related to BER-encoding values. This will make extracting Net::BER from
127
+ Net::LDAP easier in the future.
128
+ * Added some unit tests for the BER core extensions.
129
+ * Paging controls are only sent where they are supported.
130
+ * Documentation Changes:
131
+ * Core class extension methods under Net::BER.
132
+ * Extensive changes to Net::BER documentation.
133
+ * Cleaned up some rdoc oddities, suppressed empty documentation sections
134
+ where possible.
135
+ * Added a document describing how to contribute to Net::LDAP most
136
+ effectively.
137
+ * Added a document recognizing contributors to Net::LDAP.
138
+ * Extended unit testing:
139
+ * Added some unit tests for the BER core extensions.
140
+ * The LDIF test data file was split for Ruby 1.9 regexp support.
141
+ * Added a cruisecontrol.rb task.
142
+ * Converted some test/unit tests to specs.
143
+ * Code clean-up:
144
+ * Made the formatting of code consistent across all files.
145
+ * Removed Net::BER::BERParser::TagClasses as it does not appear to be used.
146
+ * Replaced calls to #to_a with calls to Kernel#Array; since Ruby 1.8.3, the
147
+ default #to_a implementation has been deprecated and should be replaced
148
+ either with calls to Kernel#Array or [value].flatten(1).
149
+ * Modified #add and #modify to return a Pdu#result_code instead of a
150
+ Pdu#result. This may be changed in Net::LDAP 1.0 to return the full
151
+ Pdu#result, but if we do so, it will be that way for all LDAP calls
152
+ involving Pdu objects.
153
+ * Renamed Net::LDAP::Psw to Net::LDAP::Password with a corresponding filename
154
+ change.
155
+ * Removed the stub file lib/net/ldif.rb and class Net::LDIF.
156
+ * Project Management:
157
+ * Changed the license from Ruby + GPL to MIT with the agreement of the
158
+ original author (Francis Cianfrocca) and the named contributors. Versions
159
+ prior to 0.2.0 are still available under the Ruby + GPL license.
160
+
161
+ === Net::LDAP 0.1.1 / 2010-03-18
162
+ * Fixing a critical problem with sockets.
163
+
164
+ === Net::LDAP 0.1 / 2010-03-17
165
+ * Small fixes throughout, more to come.
166
+ * Ruby 1.9 support added.
167
+ * Ruby 1.8.6 and below support removed. If we can figure out a compatible way
168
+ to reintroduce this, we will.
169
+ * New maintainers, new project repository location. Please see the README.txt.
170
+
171
+ === Net::LDAP 0.0.5 / 2009-03-xx
172
+ * 13 minor enhancements:
173
+ * Added Net::LDAP::Entry#to_ldif
174
+ * Supported rootDSE searches with a new API.
175
+ * Added [preliminary (still undocumented) support for SASL authentication.
176
+ * Supported several constructs from the server side of the LDAP protocol.
177
+ * Added a "consuming" String#read_ber! method.
178
+ * Added some support for SNMP data-handling.
179
+ * Belatedly added a patch contributed by Kouhei Sutou last October.
180
+ The patch adds start_tls support.
181
+ * Added Net::LDAP#search_subschema_entry
182
+ * Added Net::LDAP::Filter#parse_ber, which constructs Net::LDAP::Filter
183
+ objects directly from BER objects that represent search filters in
184
+ LDAP SearchRequest packets.
185
+ * Added Net::LDAP::Filter#execute, which allows arbitrary processing
186
+ based on LDAP filters.
187
+ * Changed Net::LDAP::Entry so it can be marshalled and unmarshalled.
188
+ Thanks to an anonymous feature requester who only left the name
189
+ "Jammy."
190
+ * Added support for binary values in Net::LDAP::Entry LDIF conversions
191
+ and marshalling.
192
+ * Migrated to 'hoe' as the new project droid.
193
+ * 14 bugs fixed:
194
+ * Silenced some annoying warnings in filter.rb. Thanks to "barjunk"
195
+ for pointing this out.
196
+ * Some fairly extensive performance optimizations in the BER parser.
197
+ * Fixed a bug in Net::LDAP::Entry::from_single_ldif_string noticed by
198
+ Matthias Tarasiewicz.
199
+ * Removed an erroneous LdapError value, noticed by Kouhei Sutou.
200
+ * Supported attributes containing blanks (cn=Babs Jensen) to
201
+ Filter#construct. Suggested by an anonymous Rubyforge user.
202
+ * Added missing syntactic support for Filter ANDs, NOTs and a few other
203
+ things.
204
+ * Extended support for server-reported error messages. This was provisionally
205
+ added to Net::LDAP#add, and eventually will be added to other methods.
206
+ * Fixed bug in Net::LDAP#bind. We were ignoring the passed-in auth parm.
207
+ Thanks to Kouhei Sutou for spotting it.
208
+ * Patched filter syntax to support octal \XX codes. Thanks to Kouhei Sutou
209
+ for the patch.
210
+ * Applied an additional patch from Kouhei.
211
+ * Allowed comma in filter strings, suggested by Kouhei.
212
+ * 04Sep07, Changed four error classes to inherit from StandardError rather
213
+ Exception, in order to be friendlier to irb. Suggested by Kouhei.
214
+ * Ensure connections are closed. Thanks to Kristian Meier.
215
+ * Minor bug fixes here and there.
216
+
217
+ === Net::LDAP 0.0.4 / 2006-08-15
218
+ * Undeprecated Net::LDAP#modify. Thanks to Justin Forder for
219
+ providing the rationale for this.
220
+ * Added a much-expanded set of special characters to the parser
221
+ for RFC-2254 filters. Thanks to Andre Nathan.
222
+ * Changed Net::LDAP#search so you can pass it a filter in string form.
223
+ The conversion to a Net::LDAP::Filter now happens automatically.
224
+ * Implemented Net::LDAP#bind_as (preliminary and subject to change).
225
+ Thanks for Simon Claret for valuable suggestions and for helping test.
226
+ * Fixed bug in Net::LDAP#open that was preventing #open from being
227
+ called more than one on a given Net::LDAP object.
228
+
229
+ === Net::LDAP 0.0.3 / 2006-07-26
230
+ * Added simple TLS encryption.
231
+ Thanks to Garett Shulman for suggestions and for helping test.
232
+
233
+ === Net::LDAP 0.0.2 / 2006-07-12
234
+ * Fixed malformation in distro tarball and gem.
235
+ * Improved documentation.
236
+ * Supported "paged search control."
237
+ * Added a range of API improvements.
238
+ * Thanks to Andre Nathan, andre@digirati.com.br, for valuable
239
+ suggestions.
240
+ * Added support for LE and GE search filters.
241
+ * Added support for Search referrals.
242
+ * Fixed a regression with openldap 2.2.x and higher caused
243
+ by the introduction of RFC-2696 controls. Thanks to Andre
244
+ Nathan for reporting the problem.
245
+ * Added support for RFC-2254 filter syntax.
246
+
247
+ === Net::LDAP 0.0.1 / 2006-05-01
248
+ * Initial release.
249
+ * Client functionality is near-complete, although the APIs
250
+ are not guaranteed and may change depending on feedback
251
+ from the community.
252
+ * We're internally working on a Ruby-based implementation
253
+ of a full-featured, production-quality LDAP server,
254
+ which will leverage the underlying LDAP and BER functionality
255
+ in Net::LDAP.
256
+ * Please tell us if you would be interested in seeing a public
257
+ release of the LDAP server.
258
+ * Grateful acknowledgement to Austin Ziegler, who reviewed
259
+ this code and provided the release framework, including
260
+ minitar.
data/License.rdoc ADDED
@@ -0,0 +1,29 @@
1
+ == License
2
+
3
+ This software is available under the terms of the MIT license.
4
+
5
+ Copyright 2006–2011 by Francis Cianfrocca and other contributors.
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining
8
+ a copy of this software and associated documentation files (the
9
+ "Software"), to deal in the Software without restriction, including
10
+ without limitation the rights to use, copy, modify, merge, publish,
11
+ distribute, sublicense, and/or sell copies of the Software, and to
12
+ permit persons to whom the Software is furnished to do so, subject to
13
+ the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be
16
+ included in all copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
+
26
+ === Notice of License Change
27
+
28
+ Versions prior to 0.2 were under Ruby's dual license with the GNU GPL. With
29
+ this release (0.2), Net::LDAP is now under the MIT license.