Class: IPinfo::IpAddressMatcher

Inherits:
Object
  • Object
show all
Defined in:
lib/ipinfo/ipAddressMatcher.rb

Constant Summary collapse

@@bogon_list =
[
    "0.0.0.0/8",
    "10.0.0.0/8",
    "100.64.0.0/10",
    "127.0.0.0/8",
    "169.254.0.0/16",
    "172.16.0.0/12",
    "192.0.0.0/24",
    "192.0.2.0/24",
    "192.168.0.0/16",
    "198.18.0.0/15",
    "198.51.100.0/24",
    "203.0.113.0/24",
    "224.0.0.0/4",
    "240.0.0.0/4",
    "255.255.255.255/32",
    "::/128",
    "::1/128",
    "::ffff:0:0/96",
    "::/96",
    "100::/64",
    "2001:10::/28",
    "2001:db8::/32",
    "fc00::/7",
    "fe80::/10",
    "fec0::/10",
    "ff00::/8",
    "2002::/24",
    "2002:a00::/24",
    "2002:7f00::/24",
    "2002:a9fe::/32",
    "2002:ac10::/28",
    "2002:c000::/40",
    "2002:c000:200::/40",
    "2002:c0a8::/32",
    "2002:c612::/31",
    "2002:c633:6400::/40",
    "2002:cb00:7100::/40",
    "2002:e000::/20",
    "2002:f000::/20",
    "2002:ffff:ffff::/48",
    "2001::/40",
    "2001:0:a00::/40",
    "2001:0:7f00::/40",
    "2001:0:a9fe::/48",
    "2001:0:ac10::/44",
    "2001:0:c000::/56",
    "2001:0:c000:200::/56",
    "2001:0:c0a8::/48",
    "2001:0:c612::/47",
    "2001:0:c633:6400::/56",
    "2001:0:cb00:7100::/56",
    "2001:0:e000::/36",
    "2001:0:f000::/36",
    "2001:0:ffff:ffff::/64"
]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ip) ⇒ IpAddressMatcher

Returns a new instance of IpAddressMatcher.



66
67
68
69
70
71
72
73
# File 'lib/ipinfo/ipAddressMatcher.rb', line 66

def initialize(ip)
    if !ip.index('/').nil? and ip.index('/') > 0
        addr_mask = ip.split('/')
        ip = addr_mask[0]
    end

    @required_address = parseAddress(ip)
end

Instance Attribute Details

#required_addressObject

Returns the value of attribute required_address.



7
8
9
# File 'lib/ipinfo/ipAddressMatcher.rb', line 7

def required_address
  @required_address
end

Instance Method Details

#matchesObject



83
84
85
86
87
88
89
90
91
# File 'lib/ipinfo/ipAddressMatcher.rb', line 83

def matches
    for bogon in @@bogon_list do
        if bogon.include? required_address
            return true
        end
    end

    false
end

#parseAddress(ip) ⇒ Object



75
76
77
78
79
80
81
# File 'lib/ipinfo/ipAddressMatcher.rb', line 75

def parseAddress(ip)
    begin
        Resolv.getaddress ip
    rescue Resolv::ResolvError => e
        pp e
    end
end