class GeoIP
Public Instance Methods
filename()
click to toggle source
# File lib/geoip_multi.rb, line 54 def filename @file.path end
netmask(ip)
click to toggle source
# File lib/geoip_multi.rb, line 49 def netmask (ip) seek_netmask(iptonum(ip)) @last_netmask end
range_by_ip(ip)
click to toggle source
# File lib/geoip_multi.rb, line 58 def range_by_ip(ip) ipnum = iptonum(ip) record=seek_netmask(ipnum) mask = 0xffffffff << 32 - @last_netmask left_seek_num = ipnum & mask right_seek_num = left_seek_num + ( 0xffffffff & ~mask ) while (left_seek_num !=0 and record == seek_netmask(left_seek_num - 1)) leftmask = 0xffffffff << 32 - @last_netmask left_seek_num = (left_seek_num - 1) & leftmask end while (right_seek_num != 0xffffffff and record == seek_netmask(right_seek_num + 1)) rightmask = 0xffffffff << 32 - @last_netmask right_seek_num = ( right_seek_num + 1 ) & rightmask right_seek_num += (0xffffffff & ~rightmask) end [numtoip(left_seek_num), numtoip(right_seek_num)] end