mtodd / geoip forked from ry/geoip-city
- Source
- Commits
- Network (2)
- Downloads (4)
- Wiki (1)
- Graphs
-
Branch:
master
| name | age | message | |
|---|---|---|---|
| |
.gitignore | Sun Jun 07 00:29:46 -0700 2009 | |
| |
README.md | Tue Dec 29 00:33:33 -0800 2009 | |
| |
Rakefile | Tue Dec 29 00:33:58 -0800 2009 | |
| |
extconf.rb | Thu Jun 04 14:43:51 -0700 2009 | |
| |
geoip-c.gemspec | Tue Dec 29 00:33:58 -0800 2009 | |
| |
geoip.c | Tue Dec 29 00:31:59 -0800 2009 | |
| |
test.rb | Thu Jul 09 16:41:11 -0700 2009 |
Ruby GeoIP Bindings
What?
This is a library which provides a single function. The function takes as input an IP address and it outputs a hash containing best-guess geographical information (like city, country, latitude, and longitude).
Actually this is only a Ruby binding to a C library which provides this function. Also, you must download a large binary database with all this mapping information. It is kindly provided free of charge by MaxMind.com.
Usage
require 'geoip'
db = GeoIP::City.new('/opt/GeoIP/share/GeoIP/GeoLiteCity.dat')
result = db.look_up('24.24.24.24')
p result
# => {:city=>"Ithaca",
# :latitude=>42.4277992248535,
# :longitude=>-76.4981994628906,
# :country_code3=>"USA",
# :country_code=>"US",
# :country_name=>"United States",
# :dma_code=>555,
# :area_code=>607,
# :region=>"NY" }
There are arguments to database initializer.
The first argument is the filename of the GeoIPCity.dat file
The second argument (optional) is to specify how GeoIP should keep the database in memory. There are three possibilities
:filesystem-- Read database from filesystem, uses least memory.:index-- The most frequently accessed index portion of the database, resulting in faster lookups than :filesystem, but less memory usage than :memory.:memory-- (Default.) Load database into memory, faster performance but uses more memory.
The third argument is boolean and decides whether the system should reload the database if changes are made to the dat file. (You probably don't need this. Default: false.)
For example
GeoIP::City.new(dbfile, :filesystem, true)
Usage for Organization Search
require 'geoip'
db = GeoIP::Organization.new('/opt/GeoIP/share/GeoIP/GeoIPOrg.dat')
db.look_up('24.24.24.24')
# => {:name=>"Road Runner"}
The name is the only data available for Organizations.
Install
Some variation of the following should work.
Install the GeoCity C library. You can get it from MaxMind. For example, I like to install mine in
/opt/GeoIP, so I do this:tar -zxvf GeoIP-1.4.3.tar.gz cd GeoIP-1.4.3 ./configure --prefix=/opt/GeoIP make && sudo make installOn Mac OS X, you can install using MacPorts:
sudo port install libgeoipNow install the
geoipgemgem install mtodd-geoip -s http://gems.github.com/ -- --with-geoip-dir=/opt/GeoIPAlternatively, if you installed libgeoip using MacPorts:
env ARCHFLAGS="-arch x86_64" gem install geoip-c -- --with-opt-dir=/opt/localDownload the GeoLite City database file in binary format at http://www.maxmind.com/app/geolitecity Maybe this direct link will work. I put this file in
/opt/GeoIP/share/GeoIP/GeoLiteCity.datIf you installed libgeoip using MacPorts then put it in:
/opt/local/share/GeoIP/GeoLiteCity.datIf you are a paying customer, you will download the files required below:
You will want to get the City Rev1 data file and Organization files at minimum.
Use it!
See above for usage details.
Hints
Might need to set
export ARCHFLAGS="-arch i386"to be able to compile the gem.
Example:
env ARCHFLAGS="-arch i386" gem install mtodd-geoip -s http://gems.github.com/ -- --with-geoip-dir=/opt/GeoIPYou might find this shell script helpful to install the C library.
Links
This iteration of the library is based on the hard work of Ryah Dahl (ry@tinyclouds.org). You can find the original RDocs and Git Repo below:
Thanks
Special appreciation and thanks belongs to Ry Dahl for his initial work on this library.
Many thanks to our contributors:
- Charles Brian Quinn
- Michael Sheakoski
- Silvio Quadri
License
Copyright (C) 2007--2009 Ryah Dahl (ry@tinyclouds.org), Matt Todd (mtodd@highgroove.com)
This program is free software. It comes without any warranty, to the extent permitted by applicable law. You can redistribute it and/or modify it under the terms of the Do What The Fuck You Want To Public License, Version 2, as published by Sam Hocevar. See http://sam.zoy.org/wtfpl/COPYING for more details.
