diff options
author | Hiroshi SHIBATA <[email protected]> | 2024-01-19 16:32:00 +0900 |
---|---|---|
committer | Hiroshi SHIBATA <[email protected]> | 2024-01-19 17:44:58 +0900 |
commit | 99c2c703da8f31bf1cb6f0641c18be35ded7ba0f (patch) | |
tree | a5cad4ad66b60a990312593fa09f98ed3411a9e7 | |
parent | 9ac316bb489dcd2111488af2aa9b421d91a85fdb (diff) |
Extract resolv-replace
-rw-r--r-- | gems/bundled_gems | 1 | ||||
-rw-r--r-- | lib/resolv-replace.gemspec | 22 | ||||
-rw-r--r-- | lib/resolv-replace.rb | 76 |
3 files changed, 1 insertions, 98 deletions
diff --git a/gems/bundled_gems b/gems/bundled_gems index 7fdbf0d57d..23a6b45750 100644 --- a/gems/bundled_gems +++ b/gems/bundled_gems @@ -27,3 +27,4 @@ base64 0.2.0 https://github.com/ruby/base64 bigdecimal 3.1.6 https://github.com/ruby/bigdecimal observer 0.1.2 https://github.com/ruby/observer abbrev 0.1.2 https://github.com/ruby/abbrev +resolv-replace 0.1.1 https://github.com/ruby/resolv-replace diff --git a/lib/resolv-replace.gemspec b/lib/resolv-replace.gemspec deleted file mode 100644 index 48f7108a8e..0000000000 --- a/lib/resolv-replace.gemspec +++ /dev/null @@ -1,22 +0,0 @@ -Gem::Specification.new do |spec| - spec.name = "resolv-replace" - spec.version = "0.1.1" - spec.authors = ["Tanaka Akira"] - spec.email = ["[email protected]"] - - spec.summary = %q{Replace Socket DNS with Resolv.} - spec.description = %q{Replace Socket DNS with Resolv.} - spec.homepage = "https://github.com/ruby/resolv-replace" - spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0") - spec.licenses = ["Ruby", "BSD-2-Clause"] - - spec.metadata["homepage_uri"] = spec.homepage - spec.metadata["source_code_uri"] = spec.homepage - - spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do - `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) } - end - spec.require_paths = ["lib"] - - spec.add_dependency "resolv" -end diff --git a/lib/resolv-replace.rb b/lib/resolv-replace.rb deleted file mode 100644 index a83e79d996..0000000000 --- a/lib/resolv-replace.rb +++ /dev/null @@ -1,76 +0,0 @@ -# frozen_string_literal: true - -require 'socket' -require 'resolv' - -class << IPSocket - # :stopdoc: - alias original_resolv_getaddress getaddress - # :startdoc: - def getaddress(host) - begin - return Resolv.getaddress(host).to_s - rescue Resolv::ResolvError - raise SocketError, "Hostname not known: #{host}" - end - end -end - -class TCPSocket < IPSocket - # :stopdoc: - alias original_resolv_initialize initialize - # :startdoc: - def initialize(host, serv, *rest) - rest[0] = IPSocket.getaddress(rest[0]) if rest[0] - original_resolv_initialize(IPSocket.getaddress(host), serv, *rest) - end -end - -class UDPSocket < IPSocket - # :stopdoc: - alias original_resolv_bind bind - # :startdoc: - def bind(host, port) - host = IPSocket.getaddress(host) if host != "" - original_resolv_bind(host, port) - end - - # :stopdoc: - alias original_resolv_connect connect - # :startdoc: - def connect(host, port) - original_resolv_connect(IPSocket.getaddress(host), port) - end - - # :stopdoc: - alias original_resolv_send send - # :startdoc: - def send(mesg, flags, *rest) - if rest.length == 2 - host, port = rest - begin - addrs = Resolv.getaddresses(host) - rescue Resolv::ResolvError - raise SocketError, "Hostname not known: #{host}" - end - addrs[0...-1].each {|addr| - begin - return original_resolv_send(mesg, flags, addr, port) - rescue SystemCallError - end - } - original_resolv_send(mesg, flags, addrs[-1], port) - else - original_resolv_send(mesg, flags, *rest) - end - end -end - -class SOCKSSocket < TCPSocket - # :stopdoc: - alias original_resolv_initialize initialize - # :startdoc: - def initialize(host, serv) - original_resolv_initialize(IPSocket.getaddress(host), port) - end -end if defined? SOCKSSocket |