net-ldap 0.16.2 → 0.19.0

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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/History.rdoc +59 -0
  3. data/README.rdoc +10 -3
  4. data/lib/net/ber/core_ext.rb +6 -6
  5. data/lib/net/ber.rb +2 -2
  6. data/lib/net/ldap/auth_adapter/gss_spnego.rb +2 -2
  7. data/lib/net/ldap/auth_adapter/sasl.rb +1 -1
  8. data/lib/net/ldap/auth_adapter/simple.rb +1 -1
  9. data/lib/net/ldap/connection.rb +22 -14
  10. data/lib/net/ldap/dataset.rb +1 -3
  11. data/lib/net/ldap/dn.rb +19 -27
  12. data/lib/net/ldap/entry.rb +11 -2
  13. data/lib/net/ldap/error.rb +2 -26
  14. data/lib/net/ldap/filter.rb +3 -3
  15. data/lib/net/ldap/instrumentation.rb +2 -2
  16. data/lib/net/ldap/password.rb +7 -5
  17. data/lib/net/ldap/pdu.rb +1 -1
  18. data/lib/net/ldap/version.rb +1 -1
  19. data/lib/net/ldap.rb +41 -16
  20. data/lib/net/snmp.rb +1 -1
  21. data/lib/net-ldap.rb +1 -1
  22. metadata +16 -92
  23. data/.gitignore +0 -10
  24. data/.rubocop.yml +0 -20
  25. data/.rubocop_todo.yml +0 -753
  26. data/.travis.yml +0 -55
  27. data/CONTRIBUTING.md +0 -54
  28. data/Gemfile +0 -2
  29. data/Rakefile +0 -23
  30. data/net-ldap.gemspec +0 -37
  31. data/script/changelog +0 -47
  32. data/script/ldap-docker +0 -12
  33. data/script/package +0 -7
  34. data/script/release +0 -16
  35. data/test/ber/core_ext/test_array.rb +0 -22
  36. data/test/ber/core_ext/test_string.rb +0 -25
  37. data/test/ber/test_ber.rb +0 -153
  38. data/test/fixtures/ca/docker-ca.pem +0 -18
  39. data/test/fixtures/ldif/06-retcode.ldif +0 -75
  40. data/test/fixtures/ldif/50-seed.ldif +0 -374
  41. data/test/integration/test_add.rb +0 -26
  42. data/test/integration/test_ber.rb +0 -30
  43. data/test/integration/test_bind.rb +0 -222
  44. data/test/integration/test_delete.rb +0 -29
  45. data/test/integration/test_open.rb +0 -87
  46. data/test/integration/test_password_modify.rb +0 -93
  47. data/test/integration/test_return_codes.rb +0 -46
  48. data/test/integration/test_search.rb +0 -77
  49. data/test/support/vm/openldap/.gitignore +0 -1
  50. data/test/test_auth_adapter.rb +0 -15
  51. data/test/test_dn.rb +0 -44
  52. data/test/test_entry.rb +0 -65
  53. data/test/test_filter.rb +0 -223
  54. data/test/test_filter_parser.rb +0 -24
  55. data/test/test_helper.rb +0 -73
  56. data/test/test_ldap.rb +0 -114
  57. data/test/test_ldap_connection.rb +0 -491
  58. data/test/test_ldif.rb +0 -104
  59. data/test/test_password.rb +0 -10
  60. data/test/test_rename.rb +0 -77
  61. data/test/test_search.rb +0 -39
  62. data/test/test_snmp.rb +0 -119
  63. data/test/test_ssl_ber.rb +0 -40
  64. data/test/testdata.ldif +0 -101
  65. data/testserver/ldapserver.rb +0 -209
  66. data/testserver/testdata.ldif +0 -101
data/lib/net/ldap.rb CHANGED
@@ -17,19 +17,19 @@ module Net # :nodoc:
17
17
  end
18
18
  require 'socket'
19
19
 
20
- require 'net/ber'
21
- require 'net/ldap/pdu'
22
- require 'net/ldap/filter'
23
- require 'net/ldap/dataset'
24
- require 'net/ldap/password'
25
- require 'net/ldap/entry'
26
- require 'net/ldap/instrumentation'
27
- require 'net/ldap/connection'
28
- require 'net/ldap/version'
29
- require 'net/ldap/error'
30
- require 'net/ldap/auth_adapter'
31
- require 'net/ldap/auth_adapter/simple'
32
- require 'net/ldap/auth_adapter/sasl'
20
+ require_relative 'ber'
21
+ require_relative 'ldap/pdu'
22
+ require_relative 'ldap/filter'
23
+ require_relative 'ldap/dataset'
24
+ require_relative 'ldap/password'
25
+ require_relative 'ldap/entry'
26
+ require_relative 'ldap/instrumentation'
27
+ require_relative 'ldap/connection'
28
+ require_relative 'ldap/version'
29
+ require_relative 'ldap/error'
30
+ require_relative 'ldap/auth_adapter'
31
+ require_relative 'ldap/auth_adapter/simple'
32
+ require_relative 'ldap/auth_adapter/sasl'
33
33
 
34
34
  Net::LDAP::AuthAdapter.register([:simple, :anon, :anonymous], Net::LDAP::AuthAdapter::Simple)
35
35
  Net::LDAP::AuthAdapter.register(:sasl, Net::LDAP::AuthAdapter::Sasl)
@@ -412,7 +412,7 @@ class Net::LDAP
412
412
  ResultCodeStrongerAuthRequired => "Stronger Auth Needed",
413
413
  ResultCodeReferral => "Referral",
414
414
  ResultCodeAdminLimitExceeded => "Admin Limit Exceeded",
415
- ResultCodeUnavailableCriticalExtension => "Unavailable crtical extension",
415
+ ResultCodeUnavailableCriticalExtension => "Unavailable critical extension",
416
416
  ResultCodeConfidentialityRequired => "Confidentiality Required",
417
417
  ResultCodeSaslBindInProgress => "saslBindInProgress",
418
418
  ResultCodeNoSuchAttribute => "No Such Attribute",
@@ -480,6 +480,8 @@ class Net::LDAP
480
480
  # server says it supports them. This is a fix for MS Active Directory
481
481
  # * :instrumentation_service => An object responsible for instrumenting
482
482
  # operations, compatible with ActiveSupport::Notifications' public API.
483
+ # * :connect_timeout => The TCP socket timeout (in seconds) to use when
484
+ # connecting to the LDAP server (default 5 seconds).
483
485
  # * :encryption => specifies the encryption to be used in communicating
484
486
  # with the LDAP server. The value must be a Hash containing additional
485
487
  # parameters, which consists of two keys:
@@ -1182,14 +1184,22 @@ class Net::LDAP
1182
1184
  # entries. This method sends an extra control code to tell the LDAP server
1183
1185
  # to do a tree delete. ('1.2.840.113556.1.4.805')
1184
1186
  #
1187
+ # If the LDAP server does not support the DELETE_TREE control code, subordinate
1188
+ # entries are deleted recursively instead.
1189
+ #
1185
1190
  # Returns True or False to indicate whether the delete succeeded. Extended
1186
1191
  # status information is available by calling #get_operation_result.
1187
1192
  #
1188
1193
  # dn = "mail=deleteme@example.com, ou=people, dc=example, dc=com"
1189
1194
  # ldap.delete_tree :dn => dn
1190
1195
  def delete_tree(args)
1191
- delete(args.merge(:control_codes => [[Net::LDAP::LDAPControls::DELETE_TREE, true]]))
1196
+ if search_root_dse[:supportedcontrol].include? Net::LDAP::LDAPControls::DELETE_TREE
1197
+ delete(args.merge(:control_codes => [[Net::LDAP::LDAPControls::DELETE_TREE, true]]))
1198
+ else
1199
+ recursive_delete(args)
1200
+ end
1192
1201
  end
1202
+
1193
1203
  # This method is experimental and subject to change. Return the rootDSE
1194
1204
  # record from the LDAP server as a Net::LDAP::Entry, or an empty Entry if
1195
1205
  # the server doesn't return the record.
@@ -1320,7 +1330,7 @@ class Net::LDAP
1320
1330
  # Force connect to see if there's a connection error
1321
1331
  connection.socket
1322
1332
  connection
1323
- rescue Errno::ECONNREFUSED, Errno::ETIMEDOUT, Net::LDAP::ConnectionRefusedError => e
1333
+ rescue Errno::ECONNREFUSED, Errno::ETIMEDOUT => e
1324
1334
  @result = {
1325
1335
  :resultCode => 52,
1326
1336
  :errorMessage => ResultStrings[ResultCodeUnavailable],
@@ -1340,4 +1350,19 @@ class Net::LDAP
1340
1350
  end
1341
1351
  end
1342
1352
 
1353
+ # Recursively delete a dn and it's subordinate children.
1354
+ # This is useful when a server does not support the DELETE_TREE control code.
1355
+ def recursive_delete(args)
1356
+ raise EmptyDNError unless args.is_a?(Hash) && args.key?(:dn)
1357
+ # Delete Children
1358
+ search(base: args[:dn], scope: Net::LDAP::SearchScope_SingleLevel) do |entry|
1359
+ recursive_delete(dn: entry.dn)
1360
+ end
1361
+ # Delete Self
1362
+ unless delete(dn: args[:dn])
1363
+ raise Net::LDAP::Error, get_operation_result[:error_message].to_s
1364
+ end
1365
+ true
1366
+ end
1367
+
1343
1368
  end # class LDAP
data/lib/net/snmp.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
- require 'net/ldap/version'
2
+ require_relative 'ldap/version'
3
3
 
4
4
  # :stopdoc:
5
5
  module Net
data/lib/net-ldap.rb CHANGED
@@ -1,2 +1,2 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
- require 'net/ldap'
2
+ require_relative 'net/ldap'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net-ldap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.2
4
+ version: 0.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francis Cianfrocca
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2019-11-18 00:00:00.000000000 Z
16
+ date: 2024-01-03 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: flexmock
@@ -35,56 +35,56 @@ dependencies:
35
35
  requirements:
36
36
  - - "~>"
37
37
  - !ruby/object:Gem::Version
38
- version: '10.0'
38
+ version: 12.3.3
39
39
  type: :development
40
40
  prerelease: false
41
41
  version_requirements: !ruby/object:Gem::Requirement
42
42
  requirements:
43
43
  - - "~>"
44
44
  - !ruby/object:Gem::Version
45
- version: '10.0'
45
+ version: 12.3.3
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: rubocop
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  requirements:
50
50
  - - "~>"
51
51
  - !ruby/object:Gem::Version
52
- version: 0.42.0
52
+ version: '1.48'
53
53
  type: :development
54
54
  prerelease: false
55
55
  version_requirements: !ruby/object:Gem::Requirement
56
56
  requirements:
57
57
  - - "~>"
58
58
  - !ruby/object:Gem::Version
59
- version: 0.42.0
59
+ version: '1.48'
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: test-unit
62
62
  requirement: !ruby/object:Gem::Requirement
63
63
  requirements:
64
- - - ">="
64
+ - - "~>"
65
65
  - !ruby/object:Gem::Version
66
- version: '0'
66
+ version: '3.3'
67
67
  type: :development
68
68
  prerelease: false
69
69
  version_requirements: !ruby/object:Gem::Requirement
70
70
  requirements:
71
- - - ">="
71
+ - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: '0'
73
+ version: '3.3'
74
74
  - !ruby/object:Gem::Dependency
75
75
  name: byebug
76
76
  requirement: !ruby/object:Gem::Requirement
77
77
  requirements:
78
- - - ">="
78
+ - - "~>"
79
79
  - !ruby/object:Gem::Version
80
- version: '0'
80
+ version: 9.0.6
81
81
  type: :development
82
82
  prerelease: false
83
83
  version_requirements: !ruby/object:Gem::Requirement
84
84
  requirements:
85
- - - ">="
85
+ - - "~>"
86
86
  - !ruby/object:Gem::Version
87
- version: '0'
87
+ version: 9.0.6
88
88
  description: |-
89
89
  Net::LDAP for Ruby (also called net-ldap) implements client access for the
90
90
  Lightweight Directory Access Protocol (LDAP), an IETF standard protocol for
@@ -112,18 +112,11 @@ extra_rdoc_files:
112
112
  - License.rdoc
113
113
  - README.rdoc
114
114
  files:
115
- - ".gitignore"
116
- - ".rubocop.yml"
117
- - ".rubocop_todo.yml"
118
- - ".travis.yml"
119
- - CONTRIBUTING.md
120
115
  - Contributors.rdoc
121
- - Gemfile
122
116
  - Hacking.rdoc
123
117
  - History.rdoc
124
118
  - License.rdoc
125
119
  - README.rdoc
126
- - Rakefile
127
120
  - lib/net-ldap.rb
128
121
  - lib/net/ber.rb
129
122
  - lib/net/ber/ber_parser.rb
@@ -149,43 +142,6 @@ files:
149
142
  - lib/net/ldap/pdu.rb
150
143
  - lib/net/ldap/version.rb
151
144
  - lib/net/snmp.rb
152
- - net-ldap.gemspec
153
- - script/changelog
154
- - script/ldap-docker
155
- - script/package
156
- - script/release
157
- - test/ber/core_ext/test_array.rb
158
- - test/ber/core_ext/test_string.rb
159
- - test/ber/test_ber.rb
160
- - test/fixtures/ca/docker-ca.pem
161
- - test/fixtures/ldif/06-retcode.ldif
162
- - test/fixtures/ldif/50-seed.ldif
163
- - test/integration/test_add.rb
164
- - test/integration/test_ber.rb
165
- - test/integration/test_bind.rb
166
- - test/integration/test_delete.rb
167
- - test/integration/test_open.rb
168
- - test/integration/test_password_modify.rb
169
- - test/integration/test_return_codes.rb
170
- - test/integration/test_search.rb
171
- - test/support/vm/openldap/.gitignore
172
- - test/test_auth_adapter.rb
173
- - test/test_dn.rb
174
- - test/test_entry.rb
175
- - test/test_filter.rb
176
- - test/test_filter_parser.rb
177
- - test/test_helper.rb
178
- - test/test_ldap.rb
179
- - test/test_ldap_connection.rb
180
- - test/test_ldif.rb
181
- - test/test_password.rb
182
- - test/test_rename.rb
183
- - test/test_search.rb
184
- - test/test_snmp.rb
185
- - test/test_ssl_ber.rb
186
- - test/testdata.ldif
187
- - testserver/ldapserver.rb
188
- - testserver/testdata.ldif
189
145
  homepage: http://github.com/ruby-ldap/ruby-net-ldap
190
146
  licenses:
191
147
  - MIT
@@ -207,42 +163,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
207
163
  - !ruby/object:Gem::Version
208
164
  version: '0'
209
165
  requirements: []
210
- rubygems_version: 3.0.1
166
+ rubygems_version: 3.4.14
211
167
  signing_key:
212
168
  specification_version: 4
213
169
  summary: Net::LDAP for Ruby (also called net-ldap) implements client access for the
214
170
  Lightweight Directory Access Protocol (LDAP), an IETF standard protocol for accessing
215
171
  distributed directory services
216
- test_files:
217
- - test/ber/core_ext/test_array.rb
218
- - test/ber/core_ext/test_string.rb
219
- - test/ber/test_ber.rb
220
- - test/fixtures/ca/docker-ca.pem
221
- - test/fixtures/ldif/06-retcode.ldif
222
- - test/fixtures/ldif/50-seed.ldif
223
- - test/integration/test_add.rb
224
- - test/integration/test_ber.rb
225
- - test/integration/test_bind.rb
226
- - test/integration/test_delete.rb
227
- - test/integration/test_open.rb
228
- - test/integration/test_password_modify.rb
229
- - test/integration/test_return_codes.rb
230
- - test/integration/test_search.rb
231
- - test/support/vm/openldap/.gitignore
232
- - test/test_auth_adapter.rb
233
- - test/test_dn.rb
234
- - test/test_entry.rb
235
- - test/test_filter.rb
236
- - test/test_filter_parser.rb
237
- - test/test_helper.rb
238
- - test/test_ldap.rb
239
- - test/test_ldap_connection.rb
240
- - test/test_ldif.rb
241
- - test/test_password.rb
242
- - test/test_rename.rb
243
- - test/test_search.rb
244
- - test/test_snmp.rb
245
- - test/test_ssl_ber.rb
246
- - test/testdata.ldif
247
- - testserver/ldapserver.rb
248
- - testserver/testdata.ldif
172
+ test_files: []
data/.gitignore DELETED
@@ -1,10 +0,0 @@
1
- *~
2
- *.swp
3
- .rvmrc
4
- pkg/
5
- doc/
6
- publish/
7
- Gemfile.lock
8
- .bundle
9
- bin/
10
- .idea
data/.rubocop.yml DELETED
@@ -1,20 +0,0 @@
1
- inherit_from: .rubocop_todo.yml
2
-
3
- AllCops:
4
- Exclude:
5
- - 'pkg/**/*'
6
-
7
- Style/ExtraSpacing:
8
- Enabled: false
9
-
10
- Lint/AssignmentInCondition:
11
- Enabled: false
12
-
13
- Style/ParallelAssignment:
14
- Enabled: false
15
-
16
- Style/TrailingCommaInLiteral:
17
- EnforcedStyleForMultiline: comma
18
-
19
- Style/TrailingCommaInArguments:
20
- EnforcedStyleForMultiline: comma