/jgeoip

A light Javascript API for reading MaxMind DB files

Primary LanguageJavaScriptMIT LicenseMIT

jGeoIP

NPM version GitHub last commit Github workflow Test coverage License

jGeoIP is a light Javascript API for reading new MaxMind's DB files (mmdb). jGeoIP stores the complete database in memory to speed up the performances. Besides, it implements a LRU (Least Recently Used) cache for optimizing reading performances for the most recently used IPs.

Usage

var jGeoIP = require('jgeoip');

// Load synchronously MaxMind database in memory
var geoip = new jGeoIP('path/to/maxmind.mmdb');

// IPV4
geoip.getRecord('8.8.8.8');

//IPV6
geoip.getRecord('2001:4860:4860::8844');

API

  • .getMetadata() returns MaxMind's database metadata,
  • .getRecord(IP) returns IP data.

Output

GeoLite2-City.mmdb outputs:

{ city:
   { geoname_id: 5375480,
     names:
      { de: 'Mountain View',
        en: 'Mountain View',
        fr: 'Mountain View',
        ja: 'マウンテンビュー',
        ru: 'Маунтин-Вью',
        'zh-CN': '芒廷维尤' } },
  continent:
   { code: 'NA',
     geoname_id: 6255149,
     names:
      { de: 'Nordamerika',
        en: 'North America',
        es: 'Norteamérica',
        fr: 'Amérique du Nord',
        ja: '北アメリカ',
        'pt-BR': 'América do Norte',
        ru: 'Северная Америка',
        'zh-CN': '北美洲' } },
  country:
   { geoname_id: 6252001,
     iso_code: 'US',
     names:
      { de: 'USA',
        en: 'United States',
        es: 'Estados Unidos',
        fr: 'États-Unis',
        ja: 'アメリカ合衆国',
        'pt-BR': 'Estados Unidos',
        ru: 'Сша',
        'zh-CN': '美国' } },
  location:
   { latitude: 37.386,
     longitude: -122.0838,
     metro_code: 807,
     time_zone: 'America/Los_Angeles' },
  postal: { code: '94040' },
  registered_country:
   { geoname_id: 6252001,
     iso_code: 'US',
     names:
      { de: 'USA',
        en: 'United States',
        es: 'Estados Unidos',
        fr: 'États-Unis',
        ja: 'アメリカ合衆国',
        'pt-BR': 'Estados Unidos',
        ru: 'Сша',
        'zh-CN': '美国' } },
  subdivisions: [ { geoname_id: 5332921, iso_code: 'CA', names: [Object] } ] }

Some IP addresses do not report city information. Most IPv6 addresses report country information only.

GeoLite2-Country.mmdb outputs:

{ continent:
   { code: 'NA',
     geoname_id: 6255149,
     names:
      { de: 'Nordamerika',
        en: 'North America',
        es: 'Norteamérica',
        fr: 'Amérique du Nord',
        ja: '北アメリカ',
        'pt-BR': 'América do Norte',
        ru: 'Северная Америка',
        'zh-CN': '北美洲' } },
  country:
   { geoname_id: 6252001,
     iso_code: 'US',
     names:
      { de: 'USA',
        en: 'United States',
        es: 'Estados Unidos',
        fr: 'États-Unis',
        ja: 'アメリカ合衆国',
        'pt-BR': 'Estados Unidos',
        ru: 'Сша',
        'zh-CN': '美国' } },
  registered_country:
   { geoname_id: 6252001,
     iso_code: 'US',
     names:
      { de: 'USA',
        en: 'United States',
        es: 'Estados Unidos',
        fr: 'États-Unis',
        ja: 'アメリカ合衆国',
        'pt-BR': 'Estados Unidos',
        ru: 'Сша',
        'zh-CN': '美国' } } }

License

MIT.

-- oOo ---