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