socialcast-net-ldap 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/.gemtest +0 -0
  2. data/COPYING +272 -0
  3. data/Gemfile +10 -0
  4. data/Gemfile.lock +29 -0
  5. data/Hacking.rdoc +16 -0
  6. data/History.txt +137 -0
  7. data/LICENSE +56 -0
  8. data/Manifest.txt +45 -0
  9. data/README.txt +70 -0
  10. data/Rakefile +124 -0
  11. data/lib/net-ldap.rb +1 -0
  12. data/lib/net/ber.rb +341 -0
  13. data/lib/net/ber/ber_parser.rb +168 -0
  14. data/lib/net/ber/core_ext.rb +72 -0
  15. data/lib/net/ber/core_ext/array.rb +79 -0
  16. data/lib/net/ber/core_ext/bignum.rb +19 -0
  17. data/lib/net/ber/core_ext/false_class.rb +7 -0
  18. data/lib/net/ber/core_ext/fixnum.rb +63 -0
  19. data/lib/net/ber/core_ext/string.rb +57 -0
  20. data/lib/net/ber/core_ext/true_class.rb +9 -0
  21. data/lib/net/ldap.rb +1539 -0
  22. data/lib/net/ldap/dataset.rb +174 -0
  23. data/lib/net/ldap/entry.rb +208 -0
  24. data/lib/net/ldap/filter.rb +781 -0
  25. data/lib/net/ldap/password.rb +52 -0
  26. data/lib/net/ldap/pdu.rb +279 -0
  27. data/lib/net/ldif.rb +34 -0
  28. data/lib/net/snmp.rb +295 -0
  29. data/spec/integration/ssl_ber_spec.rb +33 -0
  30. data/spec/spec.opts +2 -0
  31. data/spec/spec_helper.rb +5 -0
  32. data/spec/unit/ber/ber_spec.rb +109 -0
  33. data/spec/unit/ber/core_ext/string_spec.rb +51 -0
  34. data/spec/unit/ldap/entry_spec.rb +51 -0
  35. data/spec/unit/ldap/filter_spec.rb +83 -0
  36. data/spec/unit/ldap_spec.rb +48 -0
  37. data/test/common.rb +3 -0
  38. data/test/test_entry.rb +59 -0
  39. data/test/test_filter.rb +115 -0
  40. data/test/test_ldif.rb +68 -0
  41. data/test/test_password.rb +17 -0
  42. data/test/test_rename.rb +79 -0
  43. data/test/test_snmp.rb +114 -0
  44. data/test/testdata.ldif +101 -0
  45. data/testserver/ldapserver.rb +210 -0
  46. data/testserver/testdata.ldif +101 -0
  47. metadata +178 -0
data/.gemtest ADDED
File without changes
data/COPYING ADDED
@@ -0,0 +1,272 @@
1
+ GNU GENERAL PUBLIC LICENSE
2
+ Version 2, June 1991
3
+
4
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street,
5
+ Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and
6
+ distribute verbatim copies of this license document, but changing it is not
7
+ allowed.
8
+
9
+ Preamble
10
+
11
+ The licenses for most software are designed to take away your freedom to
12
+ share and change it. By contrast, the GNU General Public License is
13
+ intended to guarantee your freedom to share and change free software--to
14
+ make sure the software is free for all its users. This General Public
15
+ License applies to most of the Free Software Foundation's software and to
16
+ any other program whose authors commit to using it. (Some other Free
17
+ Software Foundation software is covered by the GNU Lesser General Public
18
+ License instead.) You can apply it to your programs, too.
19
+
20
+ When we speak of free software, we are referring to freedom, not price. Our
21
+ General Public Licenses are designed to make sure that you have the freedom
22
+ to distribute copies of free software (and charge for this service if you
23
+ wish), that you receive source code or can get it if you want it, that you
24
+ can change the software or use pieces of it in new free programs; and that
25
+ you know you can do these things.
26
+
27
+ To protect your rights, we need to make restrictions that forbid anyone to
28
+ deny you these rights or to ask you to surrender the rights. These
29
+ restrictions translate to certain responsibilities for you if you distribute
30
+ copies of the software, or if you modify it.
31
+
32
+ For example, if you distribute copies of such a program, whether gratis or
33
+ for a fee, you must give the recipients all the rights that you have. You
34
+ must make sure that they, too, receive or can get the source code. And you
35
+ must show them these terms so they know their rights.
36
+
37
+ We protect your rights with two steps: (1) copyright the software, and (2)
38
+ offer you this license which gives you legal permission to copy, distribute
39
+ and/or modify the software.
40
+
41
+ Also, for each author's protection and ours, we want to make certain that
42
+ everyone understands that there is no warranty for this free software. If
43
+ the software is modified by someone else and passed on, we want its
44
+ recipients to know that what they have is not the original, so that any
45
+ problems introduced by others will not reflect on the original authors'
46
+ reputations.
47
+
48
+ Finally, any free program is threatened constantly by software patents. We
49
+ wish to avoid the danger that redistributors of a free program will
50
+ individually obtain patent licenses, in effect making the program
51
+ proprietary. To prevent this, we have made it clear that any patent must be
52
+ licensed for everyone's free use or not licensed at all.
53
+
54
+ The precise terms and conditions for copying, distribution and modification
55
+ follow.
56
+
57
+ GNU GENERAL PUBLIC LICENSE
58
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
59
+
60
+ 0. This License applies to any program or other work which contains a notice
61
+ placed by the copyright holder saying it may be distributed under the
62
+ terms of this General Public License. The "Program", below, refers to
63
+ any such program or work, and a "work based on the Program" means either
64
+ the Program or any derivative work under copyright law: that is to say, a
65
+ work containing the Program or a portion of it, either verbatim or with
66
+ modifications and/or translated into another language. (Hereinafter,
67
+ translation is included without limitation in the term "modification".)
68
+ Each licensee is addressed as "you".
69
+
70
+ Activities other than copying, distribution and modification are not
71
+ covered by this License; they are outside its scope. The act of running
72
+ the Program is not restricted, and the output from the Program is covered
73
+ only if its contents constitute a work based on the Program (independent
74
+ of having been made by running the Program). Whether that is true depends
75
+ on what the Program does.
76
+
77
+ 1. You may copy and distribute verbatim copies of the Program's source code
78
+ as you receive it, in any medium, provided that you conspicuously and
79
+ appropriately publish on each copy an appropriate copyright notice and
80
+ disclaimer of warranty; keep intact all the notices that refer to this
81
+ License and to the absence of any warranty; and give any other recipients
82
+ of the Program a copy of this License along with the Program.
83
+
84
+ You may charge a fee for the physical act of transferring a copy, and you
85
+ may at your option offer warranty protection in exchange for a fee.
86
+
87
+ 2. You may modify your copy or copies of the Program or any portion of it,
88
+ thus forming a work based on the Program, and copy and distribute such
89
+ modifications or work under the terms of Section 1 above, provided that
90
+ you also meet all of these conditions:
91
+
92
+ a) You must cause the modified files to carry prominent notices stating
93
+ that you changed the files and the date of any change.
94
+
95
+ b) You must cause any work that you distribute or publish, that in whole
96
+ or in part contains or is derived from the Program or any part
97
+ thereof, to be licensed as a whole at no charge to all third parties
98
+ under the terms of this License.
99
+
100
+ c) If the modified program normally reads commands interactively when
101
+ run, you must cause it, when started running for such interactive use
102
+ in the most ordinary way, to print or display an announcement
103
+ including an appropriate copyright notice and a notice that there is
104
+ no warranty (or else, saying that you provide a warranty) and that
105
+ users may redistribute the program under these conditions, and telling
106
+ the user how to view a copy of this License. (Exception: if the
107
+ Program itself is interactive but does not normally print such an
108
+ announcement, your work based on the Program is not required to print
109
+ an announcement.)
110
+
111
+ These requirements apply to the modified work as a whole. If
112
+ identifiable sections of that work are not derived from the Program, and
113
+ can be reasonably considered independent and separate works in
114
+ themselves, then this License, and its terms, do not apply to those
115
+ sections when you distribute them as separate works. But when you
116
+ distribute the same sections as part of a whole which is a work based on
117
+ the Program, the distribution of the whole must be on the terms of this
118
+ License, whose permissions for other licensees extend to the entire
119
+ whole, and thus to each and every part regardless of who wrote it.
120
+
121
+ Thus, it is not the intent of this section to claim rights or contest
122
+ your rights to work written entirely by you; rather, the intent is to
123
+ exercise the right to control the distribution of derivative or
124
+ collective works based on the Program.
125
+
126
+ In addition, mere aggregation of another work not based on the Program
127
+ with the Program (or with a work based on the Program) on a volume of a
128
+ storage or distribution medium does not bring the other work under the
129
+ scope of this License.
130
+
131
+ 3. You may copy and distribute the Program (or a work based on it, under
132
+ Section 2) in object code or executable form under the terms of Sections
133
+ 1 and 2 above provided that you also do one of the following:
134
+
135
+ a) Accompany it with the complete corresponding machine-readable source
136
+ code, which must be distributed under the terms of Sections 1 and 2
137
+ above on a medium customarily used for software interchange; or,
138
+
139
+ b) Accompany it with a written offer, valid for at least three years, to
140
+ give any third party, for a charge no more than your cost of
141
+ physically performing source distribution, a complete machine-readable
142
+ copy of the corresponding source code, to be distributed under the
143
+ terms of Sections 1 and 2 above on a medium customarily used for
144
+ software interchange; or,
145
+
146
+ c) Accompany it with the information you received as to the offer to
147
+ distribute corresponding source code. (This alternative is allowed
148
+ only for noncommercial distribution and only if you received the
149
+ program in object code or executable form with such an offer, in
150
+ accord with Subsection b above.)
151
+
152
+ The source code for a work means the preferred form of the work for
153
+ making modifications to it. For an executable work, complete source code
154
+ means all the source code for all modules it contains, plus any
155
+ associated interface definition files, plus the scripts used to control
156
+ compilation and installation of the executable. However, as a special
157
+ exception, the source code distributed need not include anything that is
158
+ normally distributed (in either source or binary form) with the major
159
+ components (compiler, kernel, and so on) of the operating system on which
160
+ the executable runs, unless that component itself accompanies the
161
+ executable.
162
+
163
+ If distribution of executable or object code is made by offering access
164
+ to copy from a designated place, then offering equivalent access to copy
165
+ the source code from the same place counts as distribution of the source
166
+ code, even though third parties are not compelled to copy the source
167
+ along with the object code.
168
+
169
+ 4. You may not copy, modify, sublicense, or distribute the Program except as
170
+ expressly provided under this License. Any attempt otherwise to copy,
171
+ modify, sublicense or distribute the Program is void, and will
172
+ automatically terminate your rights under this License. However, parties
173
+ who have received copies, or rights, from you under this License will not
174
+ have their licenses terminated so long as such parties remain in full
175
+ compliance.
176
+
177
+ 5. You are not required to accept this License, since you have not signed
178
+ it. However, nothing else grants you permission to modify or distribute
179
+ the Program or its derivative works. These actions are prohibited by law
180
+ if you do not accept this License. Therefore, by modifying or
181
+ distributing the Program (or any work based on the Program), you indicate
182
+ your acceptance of this License to do so, and all its terms and
183
+ conditions for copying, distributing or modifying the Program or works
184
+ based on it.
185
+
186
+ 6. Each time you redistribute the Program (or any work based on the
187
+ Program), the recipient automatically receives a license from the
188
+ original licensor to copy, distribute or modify the Program subject to
189
+ these terms and conditions. You may not impose any further restrictions
190
+ on the recipients' exercise of the rights granted herein. You are not
191
+ responsible for enforcing compliance by third parties to this License.
192
+
193
+ 7. If, as a consequence of a court judgment or allegation of patent
194
+ infringement or for any other reason (not limited to patent issues),
195
+ conditions are imposed on you (whether by court order, agreement or
196
+ otherwise) that contradict the conditions of this License, they do not
197
+ excuse you from the conditions of this License. If you cannot distribute
198
+ so as to satisfy simultaneously your obligations under this License and
199
+ any other pertinent obligations, then as a consequence you may not
200
+ distribute the Program at all. For example, if a patent license would
201
+ not permit royalty-free redistribution of the Program by all those who
202
+ receive copies directly or indirectly through you, then the only way you
203
+ could satisfy both it and this License would be to refrain entirely from
204
+ distribution of the Program.
205
+
206
+ If any portion of this section is held invalid or unenforceable under any
207
+ particular circumstance, the balance of the section is intended to apply
208
+ and the section as a whole is intended to apply in other circumstances.
209
+
210
+ It is not the purpose of this section to induce you to infringe any
211
+ patents or other property right claims or to contest validity of any such
212
+ claims; this section has the sole purpose of protecting the integrity of
213
+ the free software distribution system, which is implemented by public
214
+ license practices. Many people have made generous contributions to the
215
+ wide range of software distributed through that system in reliance on
216
+ consistent application of that system; it is up to the author/donor to
217
+ decide if he or she is willing to distribute software through any other
218
+ system and a licensee cannot impose that choice.
219
+
220
+ This section is intended to make thoroughly clear what is believed to be
221
+ a consequence of the rest of this License.
222
+
223
+ 8. If the distribution and/or use of the Program is restricted in certain
224
+ countries either by patents or by copyrighted interfaces, the original
225
+ copyright holder who places the Program under this License may add an
226
+ explicit geographical distribution limitation excluding those countries,
227
+ so that distribution is permitted only in or among countries not thus
228
+ excluded. In such case, this License incorporates the limitation as if
229
+ written in the body of this License.
230
+
231
+ 9. The Free Software Foundation may publish revised and/or new versions of
232
+ the General Public License from time to time. Such new versions will be
233
+ similar in spirit to the present version, but may differ in detail to
234
+ address new problems or concerns.
235
+
236
+ Each version is given a distinguishing version number. If the Program
237
+ specifies a version number of this License which applies to it and "any
238
+ later version", you have the option of following the terms and conditions
239
+ either of that version or of any later version published by the Free
240
+ Software Foundation. If the Program does not specify a version number of
241
+ this License, you may choose any version ever published by the Free
242
+ Software Foundation.
243
+
244
+ 10. If you wish to incorporate parts of the Program into other free programs
245
+ whose distribution conditions are different, write to the author to ask
246
+ for permission. For software which is copyrighted by the Free Software
247
+ Foundation, write to the Free Software Foundation; we sometimes make
248
+ exceptions for this. Our decision will be guided by the two goals of
249
+ preserving the free status of all derivatives of our free software and
250
+ of promoting the sharing and reuse of software generally.
251
+
252
+ NO WARRANTY
253
+
254
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
255
+ THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
256
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
257
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
258
+ EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
259
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
260
+ ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
261
+ YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
262
+ NECESSARY SERVICING, REPAIR OR CORRECTION.
263
+
264
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
265
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
266
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
267
+ DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
268
+ DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
269
+ (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
270
+ INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
271
+ THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
272
+ OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem 'hoe'
4
+ gem 'hoe-git'
5
+
6
+ group :development do
7
+ gem 'metaid'
8
+ gem 'rspec', '~> 2.0'
9
+ gem 'flexmock'
10
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,29 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ diff-lcs (1.1.2)
5
+ flexmock (0.8.11)
6
+ hoe (2.8.0)
7
+ rake (>= 0.8.7)
8
+ hoe-git (1.3.0)
9
+ hoe (>= 2.2.0)
10
+ metaid (1.0)
11
+ rake (0.8.7)
12
+ rspec (2.3.0)
13
+ rspec-core (~> 2.3.0)
14
+ rspec-expectations (~> 2.3.0)
15
+ rspec-mocks (~> 2.3.0)
16
+ rspec-core (2.3.1)
17
+ rspec-expectations (2.3.0)
18
+ diff-lcs (~> 1.1.2)
19
+ rspec-mocks (2.3.0)
20
+
21
+ PLATFORMS
22
+ ruby
23
+
24
+ DEPENDENCIES
25
+ flexmock
26
+ hoe
27
+ hoe-git
28
+ metaid
29
+ rspec (~> 2.0)
data/Hacking.rdoc ADDED
@@ -0,0 +1,16 @@
1
+ = Hacking Net::LDAP
2
+
3
+ We welcome your contributions to Net::LDAP. To increase the chances of your
4
+ patches being accepted, we recommend that you follow the guidelines below:
5
+
6
+ 1. Your code should be formatted like the rest of Net::LDAP. We use a text
7
+ wrap of 76 - 78 characters, especially for documentation contents.
8
+ Operators should have spaces around them, method definitions should have
9
+ parentheses around arguments. Keep the indentation as flat as possible.
10
+ 2. Your changes should be well-documented and described.
11
+ 3. You must provide rspec tests for any new or changed features. Rspec has
12
+ been chosen as the way forward for tests.
13
+ 4. You should provide LDIF data for importing into LDAP servers so that the
14
+ changes can be tested <em>in situ</em> with more than one real LDAP
15
+ server.
16
+ 5. You should have tested your changes against a real LDAP server.
data/History.txt ADDED
@@ -0,0 +1,137 @@
1
+ === Net::LDAP NEXT / 2010-__-__
2
+ * SSL capabilities will be enabled or disabled based on whether we can load
3
+ OpenSSL successfully or not.
4
+ * Moved the core class extensions extensions from being in the Net::LDAP
5
+ hierarchy to the Net::BER hierarchy as most of the methods therein are
6
+ related to BER-encoding values. This will make extracting Net::BER from
7
+ Net::LDAP easier in the future.
8
+ * Net::LDAP::Filter changes:
9
+ * Filters can only be constructed using our custom constructors (eq, ge,
10
+ etc.). Cleaned up the code to reflect the private new.
11
+ * Fixed #to_ber to output a BER representation for :ne filters. Simplified
12
+ * the BER construction for substring matching.
13
+ * Added Filter.join(left, right), Filter.intersect(left, right), and
14
+ Filter.negate(filter) to match Filter#&, Filter#|, and Filter#~@ to prevent
15
+ those operators from having problems with the private new.
16
+ * Added Filter.present and Filter.present? aliases for the method previously
17
+ only known as Filter.pres.
18
+ * Cleaned up Net::LDAP::Filter::FilterParser to handle branches better. Fixed
19
+ some of the regular expressions to be more canonically defined.
20
+ * Cleaned up the string representation of Filter objects.
21
+ * Added experimental support for RFC4515 extensible matching (e.g.,
22
+ "(cn:caseExactMatch:=Fred Flintstone)"); provided by "nowhereman".
23
+ * Added or revised documentation:
24
+ * Core class extension methods under Net::BER.
25
+ * Extended unit testing:
26
+ * Added some unit tests for the BER core extensions.
27
+ * Code clean-up:
28
+ * Made the formatting of code consistent across all files.
29
+ * Removed Net::BER::BERParser::TagClasses as it does not appear to be used.
30
+ * Replaced calls to #to_a with calls to Kernel#Array; since Ruby 1.8.3, the
31
+ default #to_a implementation has been deprecated and should be replaced
32
+ either with calls to Kernel#Array or [value].flatten(1).
33
+ * Modified #add and #modify to return a Pdu#result_code instead of a
34
+ Pdu#result. This may be changed in Net::LDAP 1.0 to return the full
35
+ Pdu#result, but if we do so, it will be that way for all LDAP calls
36
+ involving Pdu objects.
37
+
38
+ === Net::LDAP 0.1.1 / 2010-03-18
39
+ * Fixing a critical problem with sockets.
40
+
41
+ === Net::LDAP 0.1.0 / 2010-03-17
42
+ * Small fixes throughout, more to come.
43
+ * Ruby 1.9 support added.
44
+ * Ruby 1.8.6 and below support removed. If we can figure out a compatible way
45
+ to reintroduce this, we will.
46
+ * New maintainers, new project repository location. Please see the README.txt.
47
+
48
+ === Net::LDAP 0.0.5 / 2009-03-xx
49
+ * 13 minor enhancements:
50
+ * Added Net::LDAP::Entry#to_ldif
51
+ * Supported rootDSE searches with a new API.
52
+ * Added [preliminary (still undocumented) support for SASL authentication.
53
+ * Supported several constructs from the server side of the LDAP protocol.
54
+ * Added a "consuming" String#read_ber! method.
55
+ * Added some support for SNMP data-handling.
56
+ * Belatedly added a patch contributed by Kouhei Sutou last October.
57
+ The patch adds start_tls support.
58
+ * Added Net::LDAP#search_subschema_entry
59
+ * Added Net::LDAP::Filter#parse_ber, which constructs Net::LDAP::Filter
60
+ objects directly from BER objects that represent search filters in
61
+ LDAP SearchRequest packets.
62
+ * Added Net::LDAP::Filter#execute, which allows arbitrary processing
63
+ based on LDAP filters.
64
+ * Changed Net::LDAP::Entry so it can be marshalled and unmarshalled.
65
+ Thanks to an anonymous feature requester who only left the name
66
+ "Jammy."
67
+ * Added support for binary values in Net::LDAP::Entry LDIF conversions
68
+ and marshalling.
69
+ * Migrated to 'hoe' as the new project droid.
70
+ * 14 bugs fixed:
71
+ * Silenced some annoying warnings in filter.rb. Thanks to "barjunk"
72
+ for pointing this out.
73
+ * Some fairly extensive performance optimizations in the BER parser.
74
+ * Fixed a bug in Net::LDAP::Entry::from_single_ldif_string noticed by
75
+ Matthias Tarasiewicz.
76
+ * Removed an erroneous LdapError value, noticed by Kouhei Sutou.
77
+ * Supported attributes containing blanks (cn=Babs Jensen) to
78
+ Filter#construct. Suggested by an anonymous Rubyforge user.
79
+ * Added missing syntactic support for Filter ANDs, NOTs and a few other
80
+ things.
81
+ * Extended support for server-reported error messages. This was provisionally
82
+ added to Net::LDAP#add, and eventually will be added to other methods.
83
+ * Fixed bug in Net::LDAP#bind. We were ignoring the passed-in auth parm.
84
+ Thanks to Kouhei Sutou for spotting it.
85
+ * Patched filter syntax to support octal \XX codes. Thanks to Kouhei Sutou
86
+ for the patch.
87
+ * Applied an additional patch from Kouhei.
88
+ * Allowed comma in filter strings, suggested by Kouhei.
89
+ * 04Sep07, Changed four error classes to inherit from StandardError rather
90
+ Exception, in order to be friendlier to irb. Suggested by Kouhei.
91
+ * Ensure connections are closed. Thanks to Kristian Meier.
92
+ * Minor bug fixes here and there.
93
+
94
+ === Net::LDAP 0.0.4 / 2006-08-15
95
+ * Undeprecated Net::LDAP#modify. Thanks to Justin Forder for
96
+ providing the rationale for this.
97
+ * Added a much-expanded set of special characters to the parser
98
+ for RFC-2254 filters. Thanks to Andre Nathan.
99
+ * Changed Net::LDAP#search so you can pass it a filter in string form.
100
+ The conversion to a Net::LDAP::Filter now happens automatically.
101
+ * Implemented Net::LDAP#bind_as (preliminary and subject to change).
102
+ Thanks for Simon Claret for valuable suggestions and for helping test.
103
+ * Fixed bug in Net::LDAP#open that was preventing #open from being
104
+ called more than one on a given Net::LDAP object.
105
+
106
+ === Net::LDAP 0.0.3 / 2006-07-26
107
+ * Added simple TLS encryption.
108
+ Thanks to Garett Shulman for suggestions and for helping test.
109
+
110
+ === Net::LDAP 0.0.2 / 2006-07-12
111
+ * Fixed malformation in distro tarball and gem.
112
+ * Improved documentation.
113
+ * Supported "paged search control."
114
+ * Added a range of API improvements.
115
+ * Thanks to Andre Nathan, andre@digirati.com.br, for valuable
116
+ suggestions.
117
+ * Added support for LE and GE search filters.
118
+ * Added support for Search referrals.
119
+ * Fixed a regression with openldap 2.2.x and higher caused
120
+ by the introduction of RFC-2696 controls. Thanks to Andre
121
+ Nathan for reporting the problem.
122
+ * Added support for RFC-2254 filter syntax.
123
+
124
+ === Net::LDAP 0.0.1 / 2006-05-01
125
+ * Initial release.
126
+ * Client functionality is near-complete, although the APIs
127
+ are not guaranteed and may change depending on feedback
128
+ from the community.
129
+ * We're internally working on a Ruby-based implementation
130
+ of a full-featured, production-quality LDAP server,
131
+ which will leverage the underlying LDAP and BER functionality
132
+ in Net::LDAP.
133
+ * Please tell us if you would be interested in seeing a public
134
+ release of the LDAP server.
135
+ * Grateful acknowledgement to Austin Ziegler, who reviewed
136
+ this code and provided the release framework, including
137
+ minitar.