Skip to content
Query the MaxMind GeoIP data records via a self-hosted web service
Ruby
Latest commit 43eb55e Sep 14, 2012 @sferik sferik Add JSONP tests
Failed to load latest commit information.
lib Cleanup HTML Sep 13, 2012
.gitignore
Gemfile Remove jeweler dependency Sep 13, 2012
Gemfile.lock Add simplecov to generate C0 code coverage report Sep 14, 2012
README.markdown
Rakefile
config.ru Cleanup config.ru Sep 13, 2012
geoip_server.gemspec Add simplecov to generate C0 code coverage report Sep 14, 2012
test.rb Add JSONP tests Sep 14, 2012

README.markdown

GeoIP Server

This simple Rack server is useful as a self-hosted service for making lookups to the GeoIP database from MaxMind.com

Instant installation and deploy

  • Clone this: git clone git://github.com/JackDanger/geoip_server.git
  • Download the free GeoIP data files: rake geoip:update_city_lite
  • Commit that data file to your clone: git add vendor && git commit -m "adding data file"
  • Signup for an account at Heroku (better details here)
  • Create and name a new app where you want to host this
  • Push it to Heroku.com: git push heroku master

HowTo

Once the server is running you can make a GET request to the server and receive lookup results in JSON format.

require 'json'
require 'open-uri'
# Get the requesting user's IP address
# In a Rails app, you can use: request.remote_ip
# In a Sinatra app, you can use: request.ip
# In a Rack app, you can use: @env['REMOTE_ADDR']
ip = "207.97.227.239"
data = JSON.load(open("http://my-geoip-service-app.herokuapp.com/#{ip}").read)
"You're in: #{data['city']}"

Or, straight from a terminal:

curl http://my-geoip-service-app.herokuapp.com/207.97.227.239

Patches welcome, forks celebrated.

Copyright (c) 2010 Jack Danger Canty. Released under the MIT License.

Something went wrong with that request. Please try again.