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

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.
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