jam-cloud/ruby/lib/jam_ruby/models/jam_isp.rb

29 lines
756 B
Ruby

require 'ipaddr'
module JamRuby
class JamIsp < ActiveRecord::Base
self.table_name = 'jamisp'
def self.ip_to_num(ip_addr)
i = IPAddr.new(ip_addr)
return i.to_i if i.ipv4?
nil
end
def self.lookup(ipnum)
JamIsp.select(:coid)
.where('geom && ST_MakePoint(?, 0) AND ? BETWEEN beginip AND endip', ipnum, ipnum)
.limit(1)
.first
end
def self.make_row(beginip, endip, coid)
c = ActiveRecord::Base.connection.raw_connection
c.prepare('blah', 'insert into jamisp (beginip, endip, coid, geom) values($1::bigint, $2::bigint, $3, ST_MakeEnvelope($1::bigint, -1, $2::bigint, 1))')
c.exec_prepared('blah', [beginip, endip, coid])
c.exec("deallocate blah")
end
end
end