Class: TeamCymru::Bogon

Inherits:
Object
  • Object
show all
Defined in:
lib/teamcymru/bogon.rb

Overview

This class implements the lookup of bogon via DNS

Constant Summary collapse

@@bogon =
'bogons.cymru.com'
@@v4fullbogon =
'v4.fullbogons.cymru.com'
@@v6fullbogon =
'v6.fullbogons.cymru.com'

Instance Method Summary collapse

Instance Method Details

#bogon?(ip, fullbogon = true) ⇒ Boolean Also known as: lookup

tests if the given ip is a bogon fullbogon flag selects which bogon list to use see www.team-cymru.org/Services/Bogons/dns.html for more details

Returns:

  • (Boolean)


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/teamcymru/bogon.rb', line 17

def bogon?(ip,fullbogon=true)
	# detect if this is ipv4 or ipv6 or bad
	begin
		ip = IPAddr.new(ip)
		if ip.ipv6? and fullbogon
			label = ip.to_string.gsub(/:/,'').split(//).reverse.join(".")+"."+@@v6fullbogon
		elsif ip.ipv4? and fullbogon
			label = ip.to_s.split(/\./).reverse.join(".")+"."+@@v4fullbogon
		elsif ip.ipv4? and not fullbogon
			label = ip.to_s.split(/\./).reverse.join(".")+"."+@@bogon
		else
			puts "Unsupported combination: ipv4=#{ip.ipv4?} and fullbogon=#{fullbogon}"
			return false
		end
		addr = Resolv.getaddress(label)
		if addr
			return true
		else
			return false
		end
	rescue ArgumentError => e
		puts e
		return false
	rescue Resolv::ResolvError
		return false
	end
end