class Legitbot::BotMatch


valid?, fake? and detected_as
Represents a bot instance match. Typical methods are
#

def self.fake?(ip, resolver_config = nil)

def self.fake?(ip, resolver_config = nil)
  self.new(ip, resolver_config).fake?
end

def self.valid?(ip, resolver_config = nil)

def self.valid?(ip, resolver_config = nil)
  self.new(ip, resolver_config).valid?
end

def detected_as

def detected_as
  self.class.name.split('::').last.downcase.to_sym
end

def fake?

def fake?
  !valid?
end

def initialize(ip, resolver_config = nil)

def initialize(ip, resolver_config = nil)
  @dns = Resolv::DNS.new(resolver_config)
  @ip = ip
end

def reverse_domain

the reverse name
Returns a Resolv::DNS::Name instance with
#
def reverse_domain
  @reverse_domain ||= @dns.getname(@ip)
end

def reverse_name

Returns a String with the reverse name
#
def reverse_name
  reverse_domain.to_s
end

def reverse_resolves?

def reverse_resolves?
  reversed_ip == @ip
end

def reversed_ip

Returns a String with IP created from the reverse name
#
def reversed_ip
  @reverse_ip ||= @dns.getaddress(reverse_name)
  @reverse_ip.to_s
end

def subdomain_of?(*domains)

def subdomain_of?(*domains)
  domains.any? { |d|
    reverse_domain.subdomain_of? Resolv::DNS::Name.create(d)
  }
end