maxminded
v0.4.2
Published
Auto updating maxmind GeoIP lookup for free and paid maxmind accounts and optional cloudflare fallback
Downloads
17
Readme
maxminded
Auto updating maxmind GeoIP lookup for free and paid maxmind accounts with optional cloudflare fallback. Leveringing the excellent node-maxmind package, maxminded provides a production oriented option that manages regular data updates. Maxminded provides fallback geoip lookup via geos-major which leverages CloudFlare request country code headers to look up geo data when maxmind has a lookup miss.
Install
npm install maxminded
Usage
Drop in replacement of node-maxmind when using free Maxmind GeoLiteCity data.
var maxmind = require('maxminded'); // difference: require maxminded instead of maxmind
maxmind.init('GeoLiteCity'); // init with local data and Wednesday updates
var location = maxmind.getLocation('66.6.44.4'); // City/Location lookup
Paid Geo Data Example
var maxminded = require('maxminded');
maxminded.init({ license: 'MAXMIND_LICENSE', memoryCache: true });
Lookup with CloudFlare fallback
This requires CloudFlare to be enabled for your domain so the cf-country header will be populated
var geo = maxminded.getLocation('66.6.44.4', req.headers);
Optional parameters with defaults
Gives weekly GeoLiteCity data updates and 18,000 lookups / second as the caches are disabled
maxminded.init({
license: undefined, // maxmind license key, for paid data. Ex: 'S0meK3yIdHere'
indexCache: false, // use maxmind-node indexCache at 80,000 lookups / second or
memoryCache: false, // use maxmind-node memoryCache at 130,000 lookups / second
cronTime: '00 30 03 * * 3', // run every Wednesday at 3:30am
timeZone: undefined, // timezone based updates, ex: "America/Los_Angeles"
start: undefined, // load immediately and callback when complete
initLoad: undefined, // initialize with local data, same as init(string_filename)
})
For additional parameter details see: node-maxmind, node-cron and maxmind-loader
Note for PaaS users (like nodejitsu)
A bonus of using maxminded is that your geo data doesn't need to be pushed to your PaaS with your code deploy. The geo ip data can be pulled directly from maxmind in compressed form when your application launches.
maxminded.init({start: function() {
var geo = maxminded.getLocation('66.6.44.4'); // GeoCityLite loaded w/weekly updates
}});
License: MIT
Dependencies: