From 02b98d205a168956b663e849d9e3fd9bb2695ca1 Mon Sep 17 00:00:00 2001 From: Jonathan Claudius Date: Thu, 1 Sep 2016 15:00:35 -0400 Subject: [PATCH 1/3] See if we can fix some timeout issues --- lib/string_ext.rb | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/lib/string_ext.rb b/lib/string_ext.rb index 54480182..d25a4157 100644 --- a/lib/string_ext.rb +++ b/lib/string_ext.rb @@ -1,5 +1,6 @@ require 'ipaddr' require 'resolv' +require 'timeout' # Extend string to include some helpful stuff class String @@ -23,20 +24,33 @@ def ip_addr? return true end - def resolve_fqdn_as_ipv6 - Resolv::DNS.open do |dns| - ress = dns.getresources self, Resolv::DNS::Resource::IN::AAAA - temp = ress.map { |r| r.address } - return temp[0] + def resolve_fqdn_as_ipv6(timeout = 3) + begin + Timeout::timeout(timeout) { + Resolv::DNS.open do |dns| + ress = dns.getresources self, Resolv::DNS::Resource::IN::AAAA + temp = ress.map { |r| r.address } + return temp[0] + end + } + rescue Timeout::Error + return "" end end - def resolve_fqdn_as_ipv4 - Resolv::DNS.open do |dns| - ress = dns.getresources self, Resolv::DNS::Resource::IN::A - temp = ress.map { |r| r.address } - return temp[0] + def resolve_fqdn_as_ipv4(timeout = 3) + begin + Timeout::timeout(timeout) { + Resolv::DNS.open do |dns| + ress = dns.getresources self, Resolv::DNS::Resource::IN::A + temp = ress.map { |r| r.address } + return temp[0] + end + } + rescue Timeout::Error + return "" end + end def resolve_fqdn @@ -46,7 +60,7 @@ def resolve_fqdn def fqdn? begin resolve_fqdn - rescue SocketError + rescue SocketError, Timeout::Error return false end From cab29b04a3c2fac123c4f6204563b19c9e2910ae Mon Sep 17 00:00:00 2001 From: Jonathan Claudius Date: Thu, 1 Sep 2016 17:15:27 -0400 Subject: [PATCH 2/3] Add timeout and resolv deps in lib/ssh_scan --- lib/ssh_scan.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/ssh_scan.rb b/lib/ssh_scan.rb index a06f15e9..27ef3ee8 100644 --- a/lib/ssh_scan.rb +++ b/lib/ssh_scan.rb @@ -1,5 +1,7 @@ #External Deps require 'bindata' +require 'timeout' +require 'resolv' #Internal Deps require 'ssh_scan/version' From 3572426836a06e00adf1948681aba4b72c084fb6 Mon Sep 17 00:00:00 2001 From: Jonathan Claudius Date: Thu, 1 Sep 2016 17:21:53 -0400 Subject: [PATCH 3/3] Remove stdlib gems as explicit deps --- ssh_scan.gemspec | 3 --- 1 file changed, 3 deletions(-) diff --git a/ssh_scan.gemspec b/ssh_scan.gemspec index d23ca82d..208e2917 100644 --- a/ssh_scan.gemspec +++ b/ssh_scan.gemspec @@ -27,10 +27,7 @@ Gem::Specification.new do |s| s.homepage = 'http://rubygems.org/gems/ssh_scan' s.add_dependency('bindata', '~> 2.0') - s.add_dependency('net-ssh') s.add_dependency('netaddr') - s.add_dependency('timeout') - s.add_dependency('json') s.add_development_dependency('pry') s.add_development_dependency('rspec', '~> 3.0') s.add_development_dependency('rspec-its', '~> 1.2')