class Unspam::CLI
Public Instance Methods
lookup_by_asn(asn)
click to toggle source
# File lib/unspam/cli.rb, line 40 def lookup_by_asn(asn) response = HTTParty.get "https://stat.ripe.net/data/announced-prefixes/data.json?resource=#{asn}&min_peers_seeing=2" result = JSON.parse(response.body) prefixes = Array.new result['data']['prefixes'].map { |h| h['prefix'] }.each do |prefix| prefixes.push(prefix) end NetAddr.merge(prefixes.map{ |ip| NetAddr::CIDR.create(ip) }, :Short => true).each do |prefix| printf("%-25s%5s\n", prefix, @msg) end end
lookup_by_ip(ip)
click to toggle source
# File lib/unspam/cli.rb, line 25 def lookup_by_ip(ip) response = HTTParty.get "https://stat.ripe.net/data/searchcomplete/data.json?resource=#{ip}" result = JSON.parse(response.body) as = [] result['data']['categories'].each do |cat| as += cat['suggestions'].map { |s| s['value'] } end as.select { |v| v =~ /^AS/ }.each do |asn| lookup_by_asn(asn) end end
nets(asn_or_ip, msg = nil)
click to toggle source
# File lib/unspam/cli.rb, line 14 def nets(asn_or_ip, msg = nil) @msg = msg if asn_or_ip =~ /^AS|^[^\.]$/ lookup_by_asn(asn_or_ip) else lookup_by_ip(asn_or_ip) end end