net-ldap 0.16.2 → 0.16.3

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.
@@ -7,11 +7,13 @@ rvm:
7
7
  - 2.4
8
8
  - 2.5
9
9
  - 2.6
10
+ - 2.7
11
+ - jruby-9.2
10
12
  # optional
11
13
  - ruby-head
12
14
  - jruby-19mode
15
+ - jruby-9.2
13
16
  - jruby-head
14
- - rbx-2
15
17
 
16
18
  addons:
17
19
  hosts:
@@ -47,8 +49,8 @@ matrix:
47
49
  allow_failures:
48
50
  - rvm: ruby-head
49
51
  - rvm: jruby-19mode
52
+ - rvm: jruby-9.2
50
53
  - rvm: jruby-head
51
- - rvm: rbx-2
52
54
  fast_finish: true
53
55
 
54
56
  notifications:
@@ -49,6 +49,6 @@ MyClass.new \
49
49
  baz: 'garply'
50
50
  ```
51
51
 
52
- [issues]: https://github.com/ruby-net-ldap/ruby-net-ldap/issues
52
+ [issues]: https://github.com/ruby-ldap/ruby-net-ldap/issues
53
53
  [pr]: https://help.github.com/articles/using-pull-requests
54
54
  [travis]: https://travis-ci.org/ruby-ldap/ruby-net-ldap
@@ -1,4 +1,4 @@
1
- = Net::LDAP for Ruby {<img src="https://travis-ci.org/ruby-ldap/ruby-net-ldap.png" />}[https://travis-ci.org/ruby-ldap/ruby-net-ldap]
1
+ = Net::LDAP for Ruby {<img src="https://travis-ci.org/ruby-ldap/ruby-net-ldap.svg" />}[https://travis-ci.org/ruby-ldap/ruby-net-ldap]
2
2
 
3
3
  == Description
4
4
 
@@ -21,7 +21,7 @@ the most recent LDAP RFCs (4510–4519, plus portions of 4520–4532).
21
21
 
22
22
  == Synopsis
23
23
 
24
- See Net::LDAP for documentation and usage samples.
24
+ See {Net::LDAP on rubydoc.info}[https://www.rubydoc.info/gems/net-ldap/Net/LDAP] for documentation and usage samples.
25
25
 
26
26
  == Requirements
27
27
 
data/Rakefile CHANGED
@@ -15,7 +15,7 @@ Rake::TestTask.new do |t|
15
15
  end
16
16
 
17
17
  desc 'Run tests and RuboCop (RuboCop runs on mri only)'
18
- task ci: [:test]
18
+ task ci: Bundler.current_ruby.mri? ? [:test, :rubocop] : [:test]
19
19
 
20
20
  desc 'Run tests and RuboCop'
21
21
  task rubotest: [:test, :rubocop]
@@ -1,2 +1,2 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
- require 'net/ldap'
2
+ require_relative 'net/ldap'
@@ -1,5 +1,5 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
- require 'net/ldap/version'
2
+ require_relative 'ldap/version'
3
3
 
4
4
  module Net # :nodoc:
5
5
  ##
@@ -349,4 +349,4 @@ module Net::BER
349
349
  Null = Net::BER::BerIdentifiedNull.new
350
350
  end
351
351
 
352
- require 'net/ber/core_ext'
352
+ require_relative 'ber/core_ext'
@@ -1,5 +1,5 @@
1
1
  # -*- ruby encoding: utf-8 -*-
2
- require 'net/ber/ber_parser'
2
+ require_relative 'ber_parser'
3
3
  # :stopdoc:
4
4
  class IO
5
5
  include Net::BER::BERParser
@@ -19,35 +19,35 @@ end
19
19
  module Net::BER::Extensions # :nodoc:
20
20
  end
21
21
 
22
- require 'net/ber/core_ext/string'
22
+ require_relative 'core_ext/string'
23
23
  # :stopdoc:
24
24
  class String
25
25
  include Net::BER::BERParser
26
26
  include Net::BER::Extensions::String
27
27
  end
28
28
 
29
- require 'net/ber/core_ext/array'
29
+ require_relative 'core_ext/array'
30
30
  # :stopdoc:
31
31
  class Array
32
32
  include Net::BER::Extensions::Array
33
33
  end
34
34
  # :startdoc:
35
35
 
36
- require 'net/ber/core_ext/integer'
36
+ require_relative 'core_ext/integer'
37
37
  # :stopdoc:
38
38
  class Integer
39
39
  include Net::BER::Extensions::Integer
40
40
  end
41
41
  # :startdoc:
42
42
 
43
- require 'net/ber/core_ext/true_class'
43
+ require_relative 'core_ext/true_class'
44
44
  # :stopdoc:
45
45
  class TrueClass
46
46
  include Net::BER::Extensions::TrueClass
47
47
  end
48
48
  # :startdoc:
49
49
 
50
- require 'net/ber/core_ext/false_class'
50
+ require_relative 'core_ext/false_class'
51
51
  # :stopdoc:
52
52
  class FalseClass
53
53
  include Net::BER::Extensions::FalseClass
@@ -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)
@@ -1,5 +1,5 @@
1
- require 'net/ldap/auth_adapter'
2
- require 'net/ldap/auth_adapter/sasl'
1
+ require_relative '../auth_adapter'
2
+ require_relative 'sasl'
3
3
 
4
4
  module Net
5
5
  class LDAP
@@ -1,4 +1,4 @@
1
- require 'net/ldap/auth_adapter'
1
+ require_relative '../auth_adapter'
2
2
 
3
3
  module Net
4
4
  class LDAP
@@ -1,4 +1,4 @@
1
- require 'net/ldap/auth_adapter'
1
+ require_relative '../auth_adapter'
2
2
 
3
3
  module Net
4
4
  class LDAP
@@ -181,7 +181,7 @@ class Net::LDAP::Connection #:nodoc:
181
181
  # have to call it, but perhaps it will come in handy someday.
182
182
  #++
183
183
  def close
184
- return if @conn.nil?
184
+ return if !defined?(@conn) || @conn.nil?
185
185
  @conn.close
186
186
  @conn = nil
187
187
  end
@@ -300,7 +300,7 @@ class Net::LDAP::Connection #:nodoc:
300
300
  control[2] = (control[2] == true).to_ber
301
301
  control.to_ber_sequence
302
302
  end
303
- sort_control = [
303
+ [
304
304
  Net::LDAP::LDAPControls::SORT_REQUEST.to_ber,
305
305
  false.to_ber,
306
306
  sort_control_values.to_ber_sequence.to_s.to_ber,
@@ -610,7 +610,7 @@ class Net::LDAP::Connection #:nodoc:
610
610
  pdu = queued_read(message_id)
611
611
 
612
612
  if !pdu || pdu.app_tag != Net::LDAP::PDU::ExtendedResponse
613
- raise Net::LDAP::ResponseMissingError, "response missing or invalid"
613
+ raise Net::LDAP::ResponseMissingOrInvalidError, "response missing or invalid"
614
614
  end
615
615
 
616
616
  pdu
@@ -710,7 +710,7 @@ class Net::LDAP::Connection #:nodoc:
710
710
  # Wrap around Socket.tcp to normalize with other Socket initializers
711
711
  class DefaultSocket
712
712
  def self.new(host, port, socket_opts = {})
713
- Socket.tcp(host, port, socket_opts)
713
+ Socket.tcp(host, port, **socket_opts)
714
714
  end
715
715
  end
716
716
  end # class Connection
@@ -103,7 +103,7 @@ class Net::LDAP::Dataset < Hash
103
103
  # with the conversion of
104
104
  def from_entry(entry)
105
105
  dataset = Net::LDAP::Dataset.new
106
- hash = { }
106
+ hash = {}
107
107
  entry.each_attribute do |attribute, value|
108
108
  next if attribute == :dn
109
109
  hash[attribute] = value
@@ -165,4 +165,4 @@ class Net::LDAP::Dataset < Hash
165
165
  end
166
166
  end
167
167
 
168
- require 'net/ldap/entry' unless defined? Net::LDAP::Entry
168
+ require_relative 'entry' unless defined? Net::LDAP::Entry
@@ -57,19 +57,19 @@ class Net::LDAP::DN
57
57
  state = :key_oid
58
58
  key << char
59
59
  when ' ' then state = :key
60
- else raise "DN badly formed"
60
+ else raise Net::LDAP::InvalidDNError, "DN badly formed"
61
61
  end
62
62
  when :key_normal then
63
63
  case char
64
64
  when '=' then state = :value
65
65
  when 'a'..'z', 'A'..'Z', '0'..'9', '-', ' ' then key << char
66
- else raise "DN badly formed"
66
+ else raise Net::LDAP::InvalidDNError, "DN badly formed"
67
67
  end
68
68
  when :key_oid then
69
69
  case char
70
70
  when '=' then state = :value
71
71
  when '0'..'9', '.', ' ' then key << char
72
- else raise "DN badly formed"
72
+ else raise Net::LDAP::InvalidDNError, "DN badly formed"
73
73
  end
74
74
  when :value then
75
75
  case char
@@ -110,7 +110,7 @@ class Net::LDAP::DN
110
110
  when '0'..'9', 'a'..'f', 'A'..'F' then
111
111
  state = :value_normal
112
112
  value << "#{hex_buffer}#{char}".to_i(16).chr
113
- else raise "DN badly formed"
113
+ else raise Net::LDAP::InvalidDNError, "DN badly formed"
114
114
  end
115
115
  when :value_quoted then
116
116
  case char
@@ -132,7 +132,7 @@ class Net::LDAP::DN
132
132
  when '0'..'9', 'a'..'f', 'A'..'F' then
133
133
  state = :value_quoted
134
134
  value << "#{hex_buffer}#{char}".to_i(16).chr
135
- else raise "DN badly formed"
135
+ else raise Net::LDAP::InvalidDNError, "DN badly formed"
136
136
  end
137
137
  when :value_hexstring then
138
138
  case char
@@ -145,14 +145,14 @@ class Net::LDAP::DN
145
145
  yield key.string.strip, value.string.rstrip
146
146
  key = StringIO.new
147
147
  value = StringIO.new;
148
- else raise "DN badly formed"
148
+ else raise Net::LDAP::InvalidDNError, "DN badly formed"
149
149
  end
150
150
  when :value_hexstring_hex then
151
151
  case char
152
152
  when '0'..'9', 'a'..'f', 'A'..'F' then
153
153
  state = :value_hexstring
154
154
  value << char
155
- else raise "DN badly formed"
155
+ else raise Net::LDAP::InvalidDNError, "DN badly formed"
156
156
  end
157
157
  when :value_end then
158
158
  case char
@@ -162,14 +162,14 @@ class Net::LDAP::DN
162
162
  yield key.string.strip, value.string.rstrip
163
163
  key = StringIO.new
164
164
  value = StringIO.new;
165
- else raise "DN badly formed"
165
+ else raise Net::LDAP::InvalidDNError, "DN badly formed"
166
166
  end
167
- else raise "Fell out of state machine"
167
+ else raise Net::LDAP::InvalidDNError, "Fell out of state machine"
168
168
  end
169
169
  end
170
170
 
171
171
  # Last pair
172
- raise "DN badly formed" unless
172
+ raise Net::LDAP::InvalidDNError, "DN badly formed" unless
173
173
  [:value, :value_normal, :value_hexstring, :value_end].include? state
174
174
 
175
175
  yield key.string.strip, value.string.rstrip
@@ -189,4 +189,4 @@ class Net::LDAP::Entry
189
189
  private :setter?
190
190
  end # class Entry
191
191
 
192
- require 'net/ldap/dataset' unless defined? Net::LDAP::Dataset
192
+ require_relative 'dataset' unless defined? Net::LDAP::Dataset
@@ -60,6 +60,7 @@ class Net::LDAP
60
60
  class ResponseTypeInvalidError < Error; end
61
61
  class ResponseMissingOrInvalidError < Error; end
62
62
  class EmptyDNError < Error; end
63
+ class InvalidDNError < Error; end
63
64
  class HashTypeUnsupportedError < Error; end
64
65
  class OperatorError < Error; end
65
66
  class SubstringFilterError < Error; end
@@ -490,7 +490,7 @@ class Net::LDAP::Filter
490
490
  when :eq
491
491
  if @right == "*" # presence test
492
492
  @left.to_s.to_ber_contextspecific(7)
493
- elsif @right =~ /[*]/ # substring
493
+ elsif @right.to_s =~ /[*]/ # substring
494
494
  # Parsing substrings is a little tricky. We use String#split to
495
495
  # break a string into substrings delimited by the * (star)
496
496
  # character. But we also need to know whether there is a star at the
@@ -646,7 +646,7 @@ class Net::LDAP::Filter
646
646
  ##
647
647
  # Converts escaped characters (e.g., "\\28") to unescaped characters
648
648
  # @note slawson20170317: Don't attempt to unescape 16 byte binary data which we assume are objectGUIDs
649
- # The binary form of 5936AE79-664F-44EA-BCCB-5C39399514C6 triggers a BINARY -> UTF-8 conversion error
649
+ # The binary form of 5936AE79-664F-44EA-BCCB-5C39399514C6 triggers a BINARY -> UTF-8 conversion error
650
650
  def unescape(right)
651
651
  right = right.to_s
652
652
  if right.length == 16 && right.encoding == Encoding::BINARY
@@ -755,7 +755,7 @@ class Net::LDAP::Filter
755
755
  # This parses a given expression inside of parentheses.
756
756
  def parse_filter_branch(scanner)
757
757
  scanner.scan(/\s*/)
758
- if token = scanner.scan(/[-\w:.]*[\w]/)
758
+ if token = scanner.scan(/[-\w:.;]*[\w]/)
759
759
  scanner.scan(/\s*/)
760
760
  if op = scanner.scan(/<=|>=|!=|:=|=/)
761
761
  scanner.scan(/\s*/)
@@ -12,8 +12,8 @@ module Net::LDAP::Instrumentation
12
12
  def instrument(event, payload = {})
13
13
  payload = (payload || {}).dup
14
14
  if instrumentation_service
15
- instrumentation_service.instrument(event, payload) do |payload|
16
- payload[:result] = yield(payload) if block_given?
15
+ instrumentation_service.instrument(event, payload) do |instr_payload|
16
+ instr_payload[:result] = yield(instr_payload) if block_given?
17
17
  end
18
18
  else
19
19
  yield(payload) if block_given?
@@ -19,20 +19,18 @@ class Net::LDAP::Password
19
19
  # * Should we provide sha1 as a synonym for sha1? I vote no because then
20
20
  # should you also provide ssha1 for symmetry?
21
21
  #
22
- attribute_value = ""
23
22
  def generate(type, str)
24
23
  case type
25
24
  when :md5
26
- attribute_value = '{MD5}' + Base64.encode64(Digest::MD5.digest(str)).chomp!
25
+ '{MD5}' + Base64.strict_encode64(Digest::MD5.digest(str))
27
26
  when :sha
28
- attribute_value = '{SHA}' + Base64.encode64(Digest::SHA1.digest(str)).chomp!
27
+ '{SHA}' + Base64.strict_encode64(Digest::SHA1.digest(str))
29
28
  when :ssha
30
29
  salt = SecureRandom.random_bytes(16)
31
- attribute_value = '{SSHA}' + Base64.encode64(Digest::SHA1.digest(str + salt) + salt).chomp!
30
+ '{SSHA}' + Base64.strict_encode64(Digest::SHA1.digest(str + salt) + salt)
32
31
  else
33
32
  raise Net::LDAP::HashTypeUnsupportedError, "Unsupported password-hash type (#{type})"
34
33
  end
35
- return attribute_value
36
34
  end
37
35
  end
38
36
  end
@@ -123,7 +123,7 @@ class Net::LDAP::PDU
123
123
  when ExtendedResponse
124
124
  parse_extended_response(ber_object[1])
125
125
  else
126
- raise LdapPduError.new("unknown pdu-type: #{@app_tag}")
126
+ raise Error.new("unknown pdu-type: #{@app_tag}")
127
127
  end
128
128
 
129
129
  parse_controls(ber_object[2]) if ber_object[2]
@@ -1,5 +1,5 @@
1
1
  module Net
2
2
  class LDAP
3
- VERSION = "0.16.2"
3
+ VERSION = "0.16.3"
4
4
  end
5
5
  end
@@ -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
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'net/ldap/version'
4
+ require_relative 'lib/net/ldap/version'
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{net-ldap}
@@ -30,8 +30,8 @@ the most recent LDAP RFCs (4510-4519, plutions of 4520-4532).}
30
30
  s.summary = %q{Net::LDAP for Ruby (also called net-ldap) implements client access for the Lightweight Directory Access Protocol (LDAP), an IETF standard protocol for accessing distributed directory services}
31
31
 
32
32
  s.add_development_dependency("flexmock", "~> 1.3")
33
- s.add_development_dependency("rake", "~> 10.0")
34
- s.add_development_dependency("rubocop", "~> 0.42.0")
33
+ s.add_development_dependency("rake", "~> 12.3.3")
34
+ s.add_development_dependency("rubocop", "~> 0.49.0")
35
35
  s.add_development_dependency("test-unit")
36
- s.add_development_dependency("byebug")
36
+ s.add_development_dependency("byebug") unless RUBY_PLATFORM == "java"
37
37
  end
@@ -95,7 +95,7 @@ class TestBEREncoding < Test::Unit::TestCase
95
95
  def test_encode_binary_data
96
96
  # This is used for searching for GUIDs in Active Directory
97
97
  assert_equal "\x04\x10" + "j1\xB4\xA1*\xA2zA\xAC\xA9`?'\xDDQ\x16".b,
98
- ["6a31b4a12aa27a41aca9603f27dd5116"].pack("H*").to_ber_bin
98
+ ["6a31b4a12aa27a41aca9603f27dd5116"].pack("H*").to_ber_bin
99
99
  end
100
100
 
101
101
  def test_non_utf8_encodable_strings
@@ -25,6 +25,6 @@ class TestBERIntegration < LDAPIntegrationTestCase
25
25
  end
26
26
 
27
27
  assert_includes Net::LDAP::ResultCodesSearchSuccess,
28
- @ldap.get_operation_result.code, "should be a successful search operation"
28
+ @ldap.get_operation_result.code, "should be a successful search operation"
29
29
  end
30
30
  end