Sha256: 4f5ac1deaf538e5f34243d3a86b6497f68bf2256beca8b4b426742c4639d2c50
Contents?: true
Size: 1.6 KB
Versions: 3
Compression:
Stored size: 1.6 KB
Contents
# frozen_string_literal: true require "resolv" class Netdisco class Resolve # 对象实例化入口函数 def initialize @cache_ip = {} @cache_name = {} end # @param [String] name DNS name which we try to resolve to IP # @return [String, nil] string if name resolves to IP, otherwise nil # 优先加载缓存,不能存在则实时采集 def getip(name) if @cache_ip.has_key? name @cache_ip[name] else # 可能一个 name 同时存在 IPV4 和 IPV6 解析 begin if CFG.dns.afi == "ipv4" @cache_ip[name] = Resolv::DNS.new.getresource(name, Resolv::DNS::Resource::IN::A).address elsif CFG.dns.afi == "ipv6" @cache_ip[name] = Resolv::DNS.new.getresource(name, Resolv::DNS::Resource::IN::AAAA).address else @cache_ip[name] = Resolv.getaddress name end rescue => error Log.debug "DNS resolution for '#{name}' raised error '#{error.class}' with message '#{error.message}'" nil end end end # @param [String] ip DNS IP which we try to resolve to name # @return [String] name if it resolves, ip otherwise # 优先加载缓存,不能存在则实时采集 def getname(ip) if @cache_name.has_key? ip @cache_name[ip] else begin @cache_name[ip] = Resolv.getname ip rescue => error Log.debug "DNS resolution for '#{ip}' raised error '#{error.class}' with message '#{error.message}'" @cache_name[ip] = ip end end end end DNS = Resolve.new end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
netdisco-0.0.4 | lib/netdisco/dns.rb |
netdisco-0.0.3 | lib/netdisco/dns.rb |
netdisco-0.0.2 | lib/netdisco/dns.rb |