net-ping 1.5.3-x86-mingw32 → 1.6.1-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NmEyMGYyYjAyZjY0Zjc4ZGUxMTEyZGY5MWVjMzkzODYxNTMyNjY4ZQ==
5
+ data.tar.gz: !binary |-
6
+ MTdkNzBmZGJjYjFiYjA5ZWM1NDE4ODg4YTc5NjlmYTU0MGE4ZDc4Nw==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ YTU5NjA4NGVlMWFkYzMxYTUwMjYxNTk0NmI3NTQzNWI5OTgzZDlkZTM5MDk4
10
+ NDA5OGI3MzUxOTkyZGFiZWI4OTllY2RlM2Q4ODY3ZTc5ZmRjYTQ3MWYyMmRl
11
+ ODg0N2M1YjA1YjlmMmVlMTQ1MWM3OTAyMmZiNmFlN2Q0MDk2MmQ=
12
+ data.tar.gz: !binary |-
13
+ ZDU5YWZmMzE3NzA4MDZhOGI0YmNkMWFjZDNjNTY2ZTdkZjFlODVjMzg2YmQy
14
+ YWM0MjY1ZDk4YzhmMTc2OTIyNmVkMTFjMjJhMzIzNGEwODc4ZmYxZTNkZGUw
15
+ OWJiZWYwYzRmNDMzNTQyZjdiOGU5NGY3YzM2ZTJjZTBlYTU2ZTM=
data/CHANGES CHANGED
@@ -1,3 +1,24 @@
1
+ == 1.6.1 - 17-Jul-2013
2
+ * Automatically set the scheme to "http" if not present when performing
3
+ HTTP pings. See https://bugs.ruby-lang.org/issues/8645 for an issue
4
+ with the uri library that led to this change. Thanks go to Preston Lee
5
+ for the spot.
6
+ * Removed the windows/system_info dependency, since it added other
7
+ dependencies just to check the Windows version. Instead, I added a
8
+ helper file that adds some needed Windows functions using FFI.
9
+ * Added Rake as a development dependency and updated the Gemfile
10
+ source because Bundler. Thanks to Jean-Philippe Doyle for the patches.
11
+ * Added some warning text to the Net::Ping::External tests for users
12
+ who are using OpenDNS. In short, you will probably get test failures
13
+ and surprising true results for bad hosts.
14
+
15
+ == 1.6.0 - 19-Mar-2013
16
+ * Split out the ldap portion of the code into its own branch.
17
+ * Don't require resolv-replace on Ruby 1.9.3 or later.
18
+ * Now gets proxy information from the http_proxy, https_proxy, and
19
+ no_proxy environment variables and uses that when making requests.
20
+ Thanks go to Kevin Olbrich for the patch.
21
+
1
22
  == 1.5.3 - 29-Feb-2012
2
23
  * Removed the Windows::Console dependency and replaced it with FFI since there
3
24
  were only two functions needed. This had the nice side effect of making it
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'http://rubygems.org'
2
+ gemspec
data/Rakefile CHANGED
@@ -9,7 +9,12 @@ namespace 'gem' do
9
9
  desc 'Create the net-ping gem'
10
10
  task :create => [:clean] do
11
11
  spec = eval(IO.read('net-ping.gemspec'))
12
- Gem::Builder.new(spec).build
12
+ if Gem::VERSION.to_f < 2.0
13
+ Gem::Builder.new(spec).build
14
+ else
15
+ require 'rubygems/package'
16
+ Gem::Package.build(spec)
17
+ end
13
18
  end
14
19
 
15
20
  desc 'Install the net-ping gem'
@@ -39,11 +44,6 @@ namespace 'example' do
39
44
  task :udp do
40
45
  ruby '-Ilib examples/example_pingudp.rb'
41
46
  end
42
-
43
- desc 'Run the ldap ping example program'
44
- task :ldap do
45
- ruby '-Ilib examples/example_pingldap.rb'
46
- end
47
47
  end
48
48
 
49
49
  Rake::TestTask.new do |t|
@@ -89,12 +89,6 @@ namespace 'test' do
89
89
  t.verbose = true
90
90
  t.test_files = FileList['test/test_net_ping_wmi.rb']
91
91
  end
92
-
93
- Rake::TestTask.new('ldap') do |t|
94
- t.warning = true
95
- t.verbose = true
96
- t.test_files = FileList['test/test_net_ping_ldap.rb']
97
- end
98
92
  end
99
93
 
100
94
  task :default => :test
data/lib/net/ping.rb CHANGED
@@ -9,10 +9,9 @@ require File.join(File.dirname(__FILE__), 'ping/udp')
9
9
  require File.join(File.dirname(__FILE__), 'ping/icmp')
10
10
  require File.join(File.dirname(__FILE__), 'ping/external')
11
11
  require File.join(File.dirname(__FILE__), 'ping/http')
12
- require File.join(File.dirname(__FILE__), 'ping/ldap')
13
12
 
14
13
  RbConfig = Config unless Object.const_defined?(:RbConfig)
15
14
 
16
- if RbConfig::CONFIG['host_os'] =~ /msdos|mswin|cygwin|mingw|win32|windows/i
15
+ if File::ALT_SEPARATOR
17
16
  require File.join(File.dirname(__FILE__), 'ping/wmi')
18
17
  end
@@ -0,0 +1,31 @@
1
+ require 'ffi'
2
+
3
+ module Windows
4
+ extend FFI::Library
5
+ ffi_lib :kernel32
6
+
7
+ attach_function :GetVersion, [], :ulong
8
+
9
+ def version
10
+ version = GetVersion()
11
+ major = LOBYTE(LOWORD(version))
12
+ minor = HIBYTE(LOWORD(version))
13
+ eval("Float(#{major}.#{minor})")
14
+ end
15
+
16
+ private
17
+
18
+ def LOWORD(l)
19
+ l & 0xffff
20
+ end
21
+
22
+ def LOBYTE(w)
23
+ w & 0xff
24
+ end
25
+
26
+ def HIBYTE(w)
27
+ w >> 8
28
+ end
29
+
30
+ module_function :version
31
+ end
data/lib/net/ping/http.rb CHANGED
@@ -2,10 +2,11 @@ require File.join(File.dirname(__FILE__), 'ping')
2
2
  require 'net/http'
3
3
  require 'net/https'
4
4
  require 'uri'
5
+ require 'open-uri'
5
6
 
6
7
  # Force non-blocking Socket.getaddrinfo on Unix systems. Do not use on
7
8
  # Windows because it (ironically) causes blocking problems.
8
- unless File::ALT_SEPARATOR
9
+ unless File::ALT_SEPARATOR or RUBY_VERSION >= "1.9.3"
9
10
  require 'resolv-replace'
10
11
  end
11
12
 
@@ -33,6 +34,9 @@ module Net
33
34
  # Use GET request instead HEAD. The default is false.
34
35
  attr_accessor :get_request
35
36
 
37
+ # was this ping proxied?
38
+ attr_accessor :proxied
39
+
36
40
  # Creates and returns a new Ping::HTTP object. The default port is the
37
41
  # port associated with the URI. The default timeout is 5 seconds.
38
42
  #
@@ -40,7 +44,7 @@ module Net
40
44
  @follow_redirect = true
41
45
  @redirect_limit = 5
42
46
  @ssl_verify_mode = OpenSSL::SSL::VERIFY_NONE
43
- @get_request = false
47
+ @get_request = false
44
48
 
45
49
  port ||= URI.parse(uri).port if uri
46
50
 
@@ -60,10 +64,15 @@ module Net
60
64
  # response is considered a failed ping.
61
65
  #
62
66
  # If no file or path is specified in the URI, then '/' is assumed.
67
+ # If no scheme is present in the URI, then 'http' is assumed.
63
68
  #
64
69
  def ping(host = @host)
65
70
  super(host)
66
71
  bool = false
72
+
73
+ # See https://bugs.ruby-lang.org/issues/8645
74
+ host = "http://#{host}" unless host.include?("http")
75
+
67
76
  uri = URI.parse(host)
68
77
 
69
78
  start_time = Time.now
@@ -75,7 +84,7 @@ module Net
75
84
  elsif redirect?(response) # Check code, HTTPRedirection does not always work
76
85
  if @follow_redirect
77
86
  @warning = response.message
78
- rlimit = 0
87
+ rlimit = 0
79
88
 
80
89
  while redirect?(response)
81
90
  if rlimit >= redirect_limit
@@ -85,13 +94,13 @@ module Net
85
94
  redirect = URI.parse(response['location'])
86
95
  redirect = uri + redirect if redirect.relative?
87
96
  response = do_ping(redirect)
88
- rlimit += 1
97
+ rlimit += 1
89
98
  end
90
99
 
91
100
  if response.is_a?(Net::HTTPSuccess)
92
101
  bool = true
93
102
  else
94
- @warning = nil
103
+ @warning = nil
95
104
  @exception ||= response.message
96
105
  end
97
106
 
@@ -120,25 +129,26 @@ module Net
120
129
 
121
130
  def do_ping(uri)
122
131
  response = nil
132
+ proxy = uri.find_proxy || URI.parse("")
123
133
  begin
124
134
  uri_path = uri.path.empty? ? '/' : uri.path
125
- headers = { }
135
+ headers = { }
126
136
  headers["User-Agent"] = user_agent unless user_agent.nil?
127
137
  Timeout.timeout(@timeout) do
128
- http = Net::HTTP.new(uri.host, uri.port)
129
-
130
- if uri.scheme == 'https'
131
- http.use_ssl = true
132
- http.verify_mode = @ssl_verify_mode
133
- end
134
-
138
+ http = Net::HTTP::Proxy(proxy.host, proxy.port, proxy.user, proxy.password).new(uri.host, uri.port)
139
+ @proxied = http.proxy?
135
140
  if @get_request == true
136
141
  request = Net::HTTP::Get.new(uri_path)
137
142
  else
138
143
  request = Net::HTTP::Head.new(uri_path)
139
144
  end
140
145
 
141
- response = http.start{ |h| h.request(request) }
146
+ if uri.scheme == 'https'
147
+ http.use_ssl = true
148
+ http.verify_mode = @ssl_verify_mode
149
+ end
150
+
151
+ response = http.start { |h| h.request(request) }
142
152
  end
143
153
  rescue Exception => err
144
154
  @exception = err.message
data/lib/net/ping/icmp.rb CHANGED
@@ -2,8 +2,7 @@ require File.join(File.dirname(__FILE__), 'ping')
2
2
 
3
3
  if File::ALT_SEPARATOR
4
4
  require 'win32/security'
5
- require 'windows/system_info'
6
- include Windows::SystemInfo
5
+ require File.join(File.dirname(__FILE__), 'helper')
7
6
  end
8
7
 
9
8
  # The Net module serves as a namespace only.
@@ -32,7 +31,7 @@ module Net
32
31
  def initialize(host=nil, port=nil, timeout=5)
33
32
  raise 'requires root privileges' if Process.euid > 0
34
33
 
35
- if File::ALT_SEPARATOR && windows_version >= 6
34
+ if File::ALT_SEPARATOR && Windows.version >= 6
36
35
  unless Win32::Security.elevated_security?
37
36
  raise 'requires elevated security'
38
37
  end
data/lib/net/ping/ping.rb CHANGED
@@ -10,7 +10,7 @@ module Net
10
10
  #
11
11
  class Ping
12
12
  # The version of the net-ping library.
13
- VERSION = '1.5.2'
13
+ VERSION = '1.6.1'
14
14
 
15
15
  # The host to ping. In the case of Ping::HTTP, this is the URI.
16
16
  attr_accessor :host
data/net-ping.gemspec CHANGED
@@ -3,11 +3,11 @@ require 'rbconfig'
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = 'net-ping'
6
- spec.version = '1.5.3'
6
+ spec.version = '1.6.1'
7
7
  spec.license = 'Artistic 2.0'
8
8
  spec.author = 'Daniel J. Berger'
9
9
  spec.email = 'djberg96@gmail.com'
10
- spec.homepage = 'http://www.rubyforge.org/projects/shards'
10
+ spec.homepage = 'https://github.com/djberg96/net-ping'
11
11
  spec.summary = 'A ping interface for Ruby.'
12
12
  spec.test_file = 'test/test_net_ping.rb'
13
13
  spec.files = Dir['**/*'].reject{ |f| f.include?('git') }
@@ -15,12 +15,11 @@ Gem::Specification.new do |spec|
15
15
  spec.rubyforge_project = 'shards'
16
16
  spec.extra_rdoc_files = ['README', 'CHANGES', 'doc/ping.txt']
17
17
 
18
- spec.add_dependency('net-ldap', '~> 0.2.2')
19
18
  spec.add_dependency('ffi', '>= 1.0.0')
20
19
 
21
- spec.add_development_dependency('test-unit', '>= 2.1.2')
20
+ spec.add_development_dependency('test-unit', '>= 2.5.0')
22
21
  spec.add_development_dependency('fakeweb', '>= 1.3.0')
23
- spec.add_development_dependency('fakeldap', '~> 0.0.1')
22
+ spec.add_development_dependency('rake')
24
23
 
25
24
  if File::ALT_SEPARATOR && RUBY_PLATFORM != 'java'
26
25
  spec.platform = Gem::Platform::CURRENT
@@ -28,7 +27,7 @@ Gem::Specification.new do |spec|
28
27
  spec.platform.version = nil
29
28
 
30
29
  # Used primarily for icmp pings.
31
- spec.add_development_dependency('win32-security', '>= 1.0.8')
30
+ spec.add_development_dependency('win32-security', '>= 0.2.0')
32
31
 
33
32
  if RUBY_VERSION.to_f < 1.9
34
33
  spec.add_dependency('win32-open3', '>= 0.3.1')
@@ -12,10 +12,8 @@ require 'fakeweb'
12
12
 
13
13
  if File::ALT_SEPARATOR
14
14
  require 'win32/security'
15
- require 'windows/system_info'
16
- include Windows::SystemInfo
17
15
 
18
- if windows_version >= 6 && Win32::Security.elevated_security?
16
+ if Win32::Security.elevated_security?
19
17
  require 'test_net_ping_icmp'
20
18
  end
21
19
  else
@@ -30,7 +28,7 @@ end
30
28
 
31
29
  class TC_Net_Ping < Test::Unit::TestCase
32
30
  def test_net_ping_version
33
- assert_equal('1.5.2', Net::Ping::VERSION)
31
+ assert_equal('1.6.1', Net::Ping::VERSION)
34
32
  end
35
33
  end
36
34
 
@@ -3,11 +3,12 @@
3
3
  #
4
4
  # Test case for the Net::PingExternal class. Run this via the 'test' or
5
5
  # 'test:external' rake task.
6
+ #
7
+ # WARNING: I've noticed that test failures will occur if you're using
8
+ # OpenDNS. This is apparently caused by them messing with upstream
9
+ # replies for advertising purposes.
6
10
  #########################################################################
7
- require 'rubygems'
8
- gem 'test-unit'
9
-
10
- require 'test/unit'
11
+ require 'test-unit'
11
12
  require 'net/ping/external'
12
13
 
13
14
  class TC_Net_Ping_External < Test::Unit::TestCase
@@ -4,25 +4,29 @@
4
4
  # Test case for the Net::PingHTTP class. This should be run via the 'test' or
5
5
  # 'test:http' Rake task.
6
6
  #################################################################################
7
- require 'rubygems'
8
- gem 'test-unit'
9
-
10
- require 'test/unit'
7
+ require 'test-unit'
8
+ require 'fakeweb'
11
9
  require 'net/ping/http'
12
10
 
13
11
  class TC_Net_Ping_HTTP < Test::Unit::TestCase
14
12
  def setup
13
+ ENV['http_proxy'] = ENV['https_proxy'] = ENV['no_proxy'] = nil
15
14
  @uri = 'http://www.google.com/index.html'
16
15
  @uri_https = 'https://encrypted.google.com'
16
+ @proxy = 'http://username:password@proxymoxie:3128'
17
+ FakeWeb.allow_net_connect = false
17
18
 
18
19
  FakeWeb.register_uri(:get, @uri, :body => "PONG")
19
20
  FakeWeb.register_uri(:head, @uri, :body => "PONG")
20
21
  FakeWeb.register_uri(:head, @uri_https, :body => "PONG")
22
+ FakeWeb.register_uri(:get, @uri_https, :body => "PONG")
21
23
  FakeWeb.register_uri(:head, "http://jigsaw.w3.org/HTTP/300/302.html",
22
24
  :body => "PONG",
23
25
  :location => "#{@uri}",
24
26
  :status => ["302", "Found"])
25
27
 
28
+ FakeWeb.register_uri(:any, 'http://www.blabfoobarurghxxxx.com', :exception => SocketError)
29
+
26
30
  @http = Net::Ping::HTTP.new(@uri, 80, 30)
27
31
  @bad = Net::Ping::HTTP.new('http://www.blabfoobarurghxxxx.com') # One hopes not
28
32
  end
@@ -175,6 +179,30 @@ class TC_Net_Ping_HTTP < Test::Unit::TestCase
175
179
  assert_true(@http.ping)
176
180
  end
177
181
 
182
+ test 'ping with http proxy' do
183
+ ENV['http_proxy'] = "http://proxymoxie:3128"
184
+ @http = Net::Ping::HTTP.new(@uri)
185
+ @http.get_request = true
186
+ assert_true(@http.ping)
187
+ assert_true(@http.proxied)
188
+ end
189
+
190
+ test 'ping with https proxy' do
191
+ ENV['https_proxy'] = "http://proxymoxie:3128"
192
+ @http = Net::Ping::HTTP.new(@uri_https)
193
+ @http.get_request = true
194
+ assert_true(@http.ping)
195
+ assert_true(@http.proxied)
196
+ end
197
+
198
+ test 'ping with no_proxy' do
199
+ ENV['no_proxy'] = "google.com"
200
+ @http = Net::Ping::HTTP.new(@uri)
201
+ @http.get_request = true
202
+ assert_true(@http.ping)
203
+ assert_false(@http.proxied)
204
+ end
205
+
178
206
  def teardown
179
207
  @uri = nil
180
208
  @http = nil
@@ -5,10 +5,7 @@
5
5
  # with root privileges on UNIX systems. This should be run via the
6
6
  # 'test' or 'test:icmp' Rake task.
7
7
  #######################################################################
8
- require 'rubygems'
9
- gem 'test-unit'
10
-
11
- require 'test/unit'
8
+ require 'test-unit'
12
9
  require 'net/ping/icmp'
13
10
  include Net
14
11
 
@@ -4,10 +4,7 @@
4
4
  # Test case for the Net::PingTCP class. This test should be run via
5
5
  # the 'test' or 'test:tcp' Rake task.
6
6
  #####################################################################
7
- require 'rubygems'
8
- gem 'test-unit'
9
-
10
- require 'test/unit'
7
+ require 'test-unit'
11
8
  require 'net/ping/tcp'
12
9
  include Net
13
10
 
@@ -7,10 +7,7 @@
7
7
  # If someone could provide me a host where a udp ping actually
8
8
  # works (with a service check), I would appreciate it. :)
9
9
  ########################################################################
10
- require 'rubygems'
11
- gem 'test-unit'
12
-
13
- require 'test/unit'
10
+ require 'test-unit'
14
11
  require 'net/ping/udp'
15
12
 
16
13
  class TC_Net_Ping_UDP < Test::Unit::TestCase
@@ -5,18 +5,15 @@
5
5
  # run MS Windows. You should run this test via the 'test' or
6
6
  # 'test:wmi' Rake task.
7
7
  #######################################################################
8
- require 'rubygems'
9
- gem 'test-unit'
10
-
11
- require 'test/unit'
8
+ require 'test-unit'
12
9
  require 'net/ping/wmi'
13
10
  include Net
14
11
 
15
12
  class TC_Ping_WMI < Test::Unit::TestCase
16
13
  def self.startup
17
- @@windows = Config::CONFIG['host_os'] =~ /mswin|win32|dos|cygwin|mingw/i
14
+ @@windows = File::ALT_SEPARATOR
18
15
  end
19
-
16
+
20
17
  def setup
21
18
  @host = "www.ruby-lang.org"
22
19
  @wmi = Ping::WMI.new(@host) if @@windows
@@ -55,11 +52,11 @@ class TC_Ping_WMI < Test::Unit::TestCase
55
52
  assert_boolean(@wmi.ping?)
56
53
  assert_boolean(@wmi.ping?(@host))
57
54
  end
58
-
55
+
59
56
  def test_ping_expected_failure
60
57
  omit_unless(@@windows, 'skipped on Unix platforms')
61
58
  assert_false(Ping::WMI.new('bogus').ping?)
62
- assert_false(Ping::WMI.new('http://www.asdfhjklasdfhlkj.com').ping?)
59
+ assert_false(Ping::WMI.new('http://www.asdfhjklasdfhlkj.com').ping?)
63
60
  end
64
61
 
65
62
  def test_exception
@@ -77,7 +74,7 @@ class TC_Ping_WMI < Test::Unit::TestCase
77
74
  @host = nil
78
75
  @wmi = nil
79
76
  end
80
-
77
+
81
78
  def self.shutdown
82
79
  @@windows = nil
83
80
  end
metadata CHANGED
@@ -1,156 +1,106 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: net-ping
3
- version: !ruby/object:Gem::Version
4
- hash: 5
5
- prerelease:
6
- segments:
7
- - 1
8
- - 5
9
- - 3
10
- version: 1.5.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.6.1
11
5
  platform: x86-mingw32
12
- authors:
6
+ authors:
13
7
  - Daniel J. Berger
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2012-02-29 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: net-ldap
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 19
29
- segments:
30
- - 0
31
- - 2
32
- - 2
33
- version: 0.2.2
34
- type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
11
+ date: 2013-07-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
37
14
  name: ffi
38
- prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 23
45
- segments:
46
- - 1
47
- - 0
48
- - 0
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
49
19
  version: 1.0.0
50
20
  type: :runtime
51
- version_requirements: *id002
52
- - !ruby/object:Gem::Dependency
53
- name: test-unit
54
21
  prerelease: false
55
- requirement: &id003 !ruby/object:Gem::Requirement
56
- none: false
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- hash: 15
61
- segments:
62
- - 2
63
- - 1
64
- - 2
65
- version: 2.1.2
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: test-unit
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 2.5.0
66
34
  type: :development
67
- version_requirements: *id003
68
- - !ruby/object:Gem::Dependency
69
- name: fakeweb
70
35
  prerelease: false
71
- requirement: &id004 !ruby/object:Gem::Requirement
72
- none: false
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: 27
77
- segments:
78
- - 1
79
- - 3
80
- - 0
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 2.5.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: fakeweb
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
81
47
  version: 1.3.0
82
48
  type: :development
83
- version_requirements: *id004
84
- - !ruby/object:Gem::Dependency
85
- name: fakeldap
86
49
  prerelease: false
87
- requirement: &id005 !ruby/object:Gem::Requirement
88
- none: false
89
- requirements:
90
- - - ~>
91
- - !ruby/object:Gem::Version
92
- hash: 29
93
- segments:
94
- - 0
95
- - 0
96
- - 1
97
- version: 0.0.1
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 1.3.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
98
62
  type: :development
99
- version_requirements: *id005
100
- - !ruby/object:Gem::Dependency
101
- name: win32-security
102
63
  prerelease: false
103
- requirement: &id006 !ruby/object:Gem::Requirement
104
- none: false
105
- requirements:
106
- - - ">="
107
- - !ruby/object:Gem::Version
108
- hash: 7
109
- segments:
110
- - 1
111
- - 0
112
- - 8
113
- version: 1.0.8
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: win32-security
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: 0.2.0
114
76
  type: :development
115
- version_requirements: *id006
116
- - !ruby/object:Gem::Dependency
117
- name: win32-open3
118
77
  prerelease: false
119
- requirement: &id007 !ruby/object:Gem::Requirement
120
- none: false
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- hash: 17
125
- segments:
126
- - 0
127
- - 3
128
- - 1
129
- version: 0.3.1
130
- type: :runtime
131
- version_requirements: *id007
132
- description: " The net-ping library provides a ping interface for Ruby. It includes\n separate TCP, HTTP, LDAP, ICMP, UDP, WMI (for Windows) and external ping\n classes.\n"
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: 0.2.0
83
+ description: ! " The net-ping library provides a ping interface for Ruby. It includes\n
84
+ \ separate TCP, HTTP, LDAP, ICMP, UDP, WMI (for Windows) and external ping\n classes.\n"
133
85
  email: djberg96@gmail.com
134
86
  executables: []
135
-
136
87
  extensions: []
137
-
138
- extra_rdoc_files:
88
+ extra_rdoc_files:
139
89
  - README
140
90
  - CHANGES
141
91
  - doc/ping.txt
142
- files:
92
+ files:
143
93
  - CHANGES
144
94
  - doc/ping.txt
145
95
  - examples/example_pingexternal.rb
146
96
  - examples/example_pinghttp.rb
147
- - examples/example_pingldap.rb
148
97
  - examples/example_pingtcp.rb
149
98
  - examples/example_pingudp.rb
99
+ - Gemfile
150
100
  - lib/net/ping/external.rb
101
+ - lib/net/ping/helper.rb
151
102
  - lib/net/ping/http.rb
152
103
  - lib/net/ping/icmp.rb
153
- - lib/net/ping/ldap.rb
154
104
  - lib/net/ping/ping.rb
155
105
  - lib/net/ping/tcp.rb
156
106
  - lib/net/ping/udp.rb
@@ -164,42 +114,32 @@ files:
164
114
  - test/test_net_ping_external.rb
165
115
  - test/test_net_ping_http.rb
166
116
  - test/test_net_ping_icmp.rb
167
- - test/test_net_ping_ldap.rb
168
117
  - test/test_net_ping_tcp.rb
169
118
  - test/test_net_ping_udp.rb
170
119
  - test/test_net_ping_wmi.rb
171
- homepage: http://www.rubyforge.org/projects/shards
172
- licenses:
120
+ homepage: https://github.com/djberg96/net-ping
121
+ licenses:
173
122
  - Artistic 2.0
123
+ metadata: {}
174
124
  post_install_message:
175
125
  rdoc_options: []
176
-
177
- require_paths:
126
+ require_paths:
178
127
  - lib
179
- required_ruby_version: !ruby/object:Gem::Requirement
180
- none: false
181
- requirements:
182
- - - ">="
183
- - !ruby/object:Gem::Version
184
- hash: 3
185
- segments:
186
- - 0
187
- version: "0"
188
- required_rubygems_version: !ruby/object:Gem::Requirement
189
- none: false
190
- requirements:
191
- - - ">="
192
- - !ruby/object:Gem::Version
193
- hash: 3
194
- segments:
195
- - 0
196
- version: "0"
128
+ required_ruby_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ! '>='
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
197
138
  requirements: []
198
-
199
139
  rubyforge_project: shards
200
- rubygems_version: 1.8.10
140
+ rubygems_version: 2.0.3
201
141
  signing_key:
202
- specification_version: 3
142
+ specification_version: 4
203
143
  summary: A ping interface for Ruby.
204
- test_files:
144
+ test_files:
205
145
  - test/test_net_ping.rb
@@ -1,22 +0,0 @@
1
- ########################################################################
2
- # example_pingldap.rb
3
- #
4
- # A short sample program demonstrating an ldap ping. You can run
5
- # this program via the example:ldap task. Modify as you see fit.
6
- ########################################################################
7
- require 'net/ping/ldap'
8
-
9
- good = 'ldap://localhost'
10
- bad = 'ldap://example.com'
11
-
12
- puts "== Good ping (if you have an ldap server at #{good})"
13
-
14
- p1 = Net::Ping::LDAP.new(good)
15
- p p1.ping?
16
-
17
- puts "== Bad ping"
18
-
19
- p2 = Net::Ping::LDAP.new(bad)
20
- p p2.ping?
21
- p p2.warning
22
- p p2.exception
data/lib/net/ping/ldap.rb DELETED
@@ -1,107 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'ping')
2
- require 'net/ldap'
3
- require 'uri'
4
-
5
-
6
- # The Net module serves as a namespace only.
7
- module Net
8
-
9
- # The Ping::LDAP class encapsulates methods for LDAP pings.
10
- class Ping::LDAP < Ping
11
-
12
- # uri contains the URI object for the request
13
- #
14
- attr_accessor :uri
15
-
16
- # username and password may be set for ping using
17
- # an authenticated LDAP bind
18
- #
19
- attr_accessor :username
20
- attr_accessor :password
21
-
22
- # set/get the encryption method. By default nil,
23
- # but may be set to :simple_tls
24
- #
25
- attr_accessor :encryption
26
- def encryption=(value)
27
- @encryption = (value.is_a? Symbol) ? value : value.to_sym
28
- end
29
-
30
- # Creates and returns a new Ping::LDAP object.
31
- # The default +timeout+ is 5 seconds.
32
- #
33
- # +uri+ string is expected to be a full URI with scheme (ldap/ldaps)
34
- # and optionally the port (else default port is assumed) e.g.
35
- # ldap://my.ldap.host.com
36
- # ldap://my.ldap.host.com:1389
37
- # ldaps://my.ldap.host.com
38
- # ldaps://my.ldap.host.com:6636
39
- #
40
- # If a plain hostname is provided as the +uri+, a default port of 389 is assumed
41
- #
42
- def initialize(uri=nil, timeout=5)
43
- host, port = decode_uri(uri)
44
- super(host, port, timeout)
45
- end
46
-
47
- # method used to decode uri string
48
- #
49
- def decode_uri(value)
50
- @uri = URI.parse(value)
51
- if uri.scheme =~ /ldap/
52
- p = @port = uri.port
53
- h = @host = uri.host
54
- @encryption = uri.scheme=='ldaps' ? :simple_tls : nil
55
- else
56
- h = value
57
- p = 389
58
- end
59
- [h, p]
60
- end
61
-
62
- # constructs the LDAP configuration structure
63
- #
64
- def config
65
- {
66
- :host => uri.host,
67
- :port => uri.port,
68
- :encryption => encryption
69
- }.merge(
70
- (username && password) ?
71
- { :auth => {:method => :simple, :username => username, :password => password} } :
72
- { :auth => {:method => :anonymous} }
73
- )
74
- end
75
-
76
- # perform ping, optionally providing the ping destination uri
77
- #
78
- def ping(host = nil)
79
- decode_uri(host) if host
80
- super(@host)
81
-
82
- bool = false
83
-
84
- start_time = Time.now
85
-
86
- begin
87
- Timeout.timeout(@timeout) do
88
- Net::LDAP.new( config ).bind
89
- end
90
- rescue Net::LDAP::LdapError => e
91
- @exception = e.message
92
- rescue Exception => e
93
- @exception = e.message
94
- else
95
- bool = true
96
- end
97
-
98
- # There is no duration if the ping failed
99
- @duration = Time.now - start_time if bool
100
-
101
- bool
102
- end
103
-
104
- alias ping? ping
105
- alias pingecho ping
106
- end
107
- end
@@ -1,200 +0,0 @@
1
- #################################################################################
2
- # test_net_ping_http.rb
3
- #
4
- # Test case for the Net::PingHTTP class. This should be run via the 'test' or
5
- # 'test:http' Rake task.
6
- #################################################################################
7
- require 'rubygems'
8
- gem 'test-unit'
9
-
10
- require 'test/unit'
11
- require 'net/ping/ldap'
12
- require 'fakeldap'
13
-
14
- class TC_Net_Ping_LDAP < Test::Unit::TestCase
15
- class << self
16
- def startup
17
- @@host = 'localhost'
18
- @@port = 2389
19
- @@uri = "ldap://#{@@host}:#{@@port}"
20
- @@timeout = 30
21
- @@cn = 'el.Daper'
22
- @@password = 'ldappassword'
23
-
24
- @@ldap_server = FakeLDAP::Server.new(:port => @@port)
25
- @@ldap_server.run_tcpserver
26
- @@ldap_server.add_user("cn=#{@@cn},ou=USERS,dc=example,dc=com", @@password)
27
- end
28
- def shutdown
29
- @@ldap_server.stop
30
- end
31
- end
32
- def setup
33
- @ldap = Net::Ping::LDAP.new(@@uri, @@timeout)
34
- @ldap.username = @@cn
35
- @ldap.password = @@password
36
- @bogus = 'ldap://blabfoobarurghxxxx.com' # One hopes so
37
- @bad = Net::Ping::LDAP.new(@bogus)
38
- end
39
-
40
- def teardown
41
- @ldap = nil
42
- end
43
-
44
- test 'ping basic functionality' do
45
- assert_respond_to(@ldap, :ping)
46
- assert_nothing_raised{ @ldap.ping }
47
- end
48
-
49
- test 'ping returns a boolean value' do
50
- assert_boolean(@ldap.ping?)
51
- assert_boolean(@bad.ping?)
52
- end
53
-
54
- test 'ping? is an alias for ping' do
55
- assert_alias_method(@ldap, :ping?, :ping)
56
- end
57
-
58
- test 'pingecho is an alias for ping' do
59
- assert_alias_method(@ldap, :pingecho, :ping)
60
- end
61
-
62
- test 'ping should succeed for a valid website' do
63
- assert_true(@ldap.ping?)
64
- end
65
-
66
- test 'ping should fail for an invalid website' do
67
- assert_false(@bad.ping?)
68
- end
69
-
70
- test 'duration basic functionality' do
71
- assert_respond_to(@ldap, :duration)
72
- assert_nothing_raised{ @ldap.ping }
73
- end
74
-
75
- test 'duration returns a float value on a successful ping' do
76
- assert_true(@ldap.ping)
77
- assert_kind_of(Float, @ldap.duration)
78
- end
79
-
80
- test 'duration is nil on an unsuccessful ping' do
81
- assert_false(@bad.ping)
82
- assert_nil(@ldap.duration)
83
- end
84
-
85
- test "duration is unset if a bad ping follows a good ping" do
86
- assert_true{ @ldap.ping }
87
- assert_not_nil(@ldap.duration)
88
- assert_false(@ldap.ping?(@bogus))
89
- assert_nil(@ldap.duration)
90
- end
91
-
92
- test 'host attribute basic functionality' do
93
- assert_respond_to(@ldap, :host)
94
- assert_respond_to(@ldap, :host=)
95
- assert_equal(@@host, @ldap.host)
96
- end
97
-
98
- test 'port attribute basic functionality' do
99
- assert_respond_to(@ldap, :port)
100
- assert_respond_to(@ldap, :port=)
101
- end
102
-
103
- test 'port attribute expected value' do
104
- assert_equal(@@port, @ldap.port)
105
- end
106
-
107
- test 'timeout attribute basic functionality' do
108
- assert_respond_to(@ldap, :timeout)
109
- assert_respond_to(@ldap, :timeout=)
110
- end
111
-
112
- test 'timeout attribute expected values' do
113
- assert_equal(@@timeout, @ldap.timeout)
114
- assert_equal(5, @bad.timeout)
115
- end
116
-
117
- test 'exception attribute basic functionality' do
118
- assert_respond_to(@ldap, :exception)
119
- assert_nil(@ldap.exception)
120
- end
121
-
122
- test 'exception attribute is nil if the ping is successful' do
123
- assert_true(@ldap.ping)
124
- assert_nil(@ldap.exception)
125
- end
126
-
127
- test 'exception attribute is not nil if the ping is unsuccessful' do
128
- assert_false(@bad.ping)
129
- assert_not_nil(@bad.exception)
130
- end
131
-
132
- test 'warning attribute basic functionality' do
133
- assert_respond_to(@ldap, :warning)
134
- assert_nil(@ldap.warning)
135
- end
136
-
137
- test 'uri attribute basic functionality' do
138
- assert_respond_to(@ldap, :uri)
139
- assert_respond_to(@ldap, :uri=)
140
- end
141
-
142
- test 'username attribute basic functionality' do
143
- assert_respond_to(@ldap, :username)
144
- assert_respond_to(@ldap, :username=)
145
- end
146
-
147
- test 'password attribute basic functionality' do
148
- assert_respond_to(@ldap, :password)
149
- assert_respond_to(@ldap, :password=)
150
- end
151
-
152
- test 'encryption attribute basic functionality' do
153
- assert_respond_to(@ldap, :encryption)
154
- assert_respond_to(@ldap, :encryption=)
155
- end
156
-
157
- test 'encryption defaults to nil for ldap' do
158
- assert_nil(Net::Ping::LDAP.new('ldap://somehost.example.net').encryption)
159
- end
160
-
161
- test 'encryption defaults to simple_tls for ldaps' do
162
- assert_equal(:simple_tls, Net::Ping::LDAP.new('ldaps://somehost.example.net').encryption)
163
- end
164
-
165
- test 'port defaults to 389 for ldap' do
166
- assert_equal(389, Net::Ping::LDAP.new('ldap://somehost.example.net').port)
167
- end
168
-
169
- test 'port defaults to 636 for ldaps' do
170
- assert_equal(636, Net::Ping::LDAP.new('ldaps://somehost.example.net').port)
171
- end
172
-
173
- test 'port extracted from uri if provided' do
174
- assert_equal(12345, Net::Ping::LDAP.new('ldap://somehost.example.net:12345').port)
175
- assert_equal(12345, Net::Ping::LDAP.new('ldaps://somehost.example.net:12345').port)
176
- end
177
-
178
- test 'encryption setting is forced to symbol' do
179
- @ldap.encryption = 'simple_tls'
180
- assert_true( @ldap.encryption.is_a? Symbol )
181
- assert_true( @ldap.config[:encryption].is_a? Symbol )
182
- end
183
-
184
- test 'username/password set in config auth section' do
185
- @ldap.username, @ldap.password = 'fred', 'derf'
186
- assert_equal('fred', @ldap.config[:auth][:username] )
187
- assert_equal('derf', @ldap.config[:auth][:password] )
188
- end
189
-
190
- test 'auth method defaults to simple if username/password set' do
191
- @ldap.username, @ldap.password = 'fred', 'derf'
192
- assert_equal(:simple, @ldap.config[:auth][:method] )
193
- end
194
-
195
- test 'if no username/password then defaults to auth anonymous' do
196
- @ldap.username = @ldap.password = nil
197
- assert_equal({:method => :anonymous}, @ldap.config[:auth] )
198
- end
199
-
200
- end