net-ldap 0.16.2 → 0.16.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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