Socket
Socket
Sign inDemoInstall

ipnation

Package Overview
Dependencies
162
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    ipnation

Quickly convert an IP address to ISO nation data


Version published
Weekly downloads
1
Maintainers
1
Created
Weekly downloads
 

Readme

Source

ipnation

Build Status

Quickly convert an IPv4 address to an ISO Nation

Install

npm install ipnation

Basic use

> var ipnation = require('ipnation');
> ipnation.fromIPv4('50.19.117.93').then(function(res) {
  console.log(res);
});

{
  iso2: 'US',
  iso3: 'USA',
  isoNation: 'United States'
}

API

fromIPv4(address)

Query the IPv4 address space for a matching ISO nation code.

Arguments

  • address: String; a dot-decimal IPv4 address (e.g. 50.19.117.93)

Returns

Promise that resolves to an ISO code set for the address; the promise is rejected with an error if the address is malformed or invalid

Example

> ipnation.fromIPv4('50.19.117.93').then(function(res) {
  console.log(res);
});

{
  iso2: 'US',
  iso3: 'USA',
  isoNation: 'United States'
}

Data

This project is based on the publicly available dataset at ip2nation.com. The source data has been migrated to the following schema:

ipv4_iso3
fieldtype definition
*ipUNSIGNED INTEGER
iso3CHAR(3)

ip is the dot-decimal IPv4 address converted to binary representation (inet_aton) then unpacked to a long integer.

iso_nations
fieldtype definition
iso2CHAR(2)
*iso3CHAR(3)
iso_nationVARCHAR(255)
Persistence

All data resides in a local SQLite3 database which provides portable storage, efficient indexing, and fast querying. If you receive build warnings/errors from SQLite, consult the node-sqlite3 documentation.

Nation data is based on ISO 3166-1 country codes available in the source dataset with a few additions necessary to achieve internal consistency:

  • AP; APN; Asia/Pacific Region
  • BQ; BES; Bonaire, Sint Eustatius and Saba
  • CW; CUW; Curacao
  • EU, EUR, Europe
  • GG; GGY; Guernsey
  • IM; IMN; Isle of Man
  • JE, JEY, Jersey
  • MF, MAF, Saint Martin (French)
  • SS, SSD, South Sudan
  • SX, SXM, Sint Maarten (Dutch)

Currently, a few addresses may resolve to an unknown nation response:

{
  iso2: '??',
  iso3: '???',
  isoNation: 'UNK'
}

Tests

npm test

To get the coverage report:

npm run coverage

Detailed reports are available in the ./artifacts directory. This project maintains 100% coverage of functions and 80%+ coverage of branches.

Contribute

PRs are welcome! PRs must improve or maintian test coverage to be accepted.

For bugs, please include a failing test which passes when your PR is applied. For CRUD actions against the underlying SQLite database, please submit a .sql migration file in the sql directory.

Keywords

FAQs

Last updated on 05 Jul 2016

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc