0.3.2 • Published 12 years ago
node_geoip_server v0.3.2
Overview
Node js http server that delivers geoip data via a web service. Once running, the server will output a JSON strong with the users city, state, country, etc. like this:
Inputs:
- The ip address is determined by looking at the following, stopping once one is found
- ?ip=xxx.xxx.xxx.xxx in the url
- X-Forwarded-For HTTP header (for proxies). Supports multiple proxies.
- IP address of the user via REMOTE_ADDR
- callback=functionName wrap the result in this callback function for jsonp.
- indent=numSpaces pretty print the output with this number of spaces. Ex. indent=2
Dependencies
- Node/npm (duh)
- The excellent node GeoIP library from kuno: https://github.com/kuno/GeoIP
- MaxMind's geoip city database, available here: http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
- Optional: Forever, a utility to keep the service running in production. https://github.com/nodejitsu/forever
Installation
- Install node.js - https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager
- Install npm - http://npmjs.org/ (run the install.sh as root)
- Install the C api from maxmind. Recomend you use use a packagemanager of your choice for your OS instead of compile from source, such as sudo apt-get install geoip-database or sudo yum install GeoIP. Known to work with version 1.4.8
- Install dependencies for this project: npm install
- Download and gunzip the latest http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz. The default location $repo_root/GeoLiteCity.dat , if you put it somewhere else, specify --geodb when starting the service. Run this (from the root of the repo)
Usage
If you are using Forever (recommended): forever start -l forever.log -o out.log -e err.log app.js
If you aren't using Forever node app.js
Options:
Updating the database
Maxmind updates their city database once a month. Grab the latest one and restart the service. Here's a cron that will do it once a month
TODO
- Unit tests
License
BSD, see LICENSE