Trusted Network Providers

Provides a quick way of testing IP addresses against a list of trusted “network providers”. The project comes out of a use-case where I want to maintain a real-time IP blocklist for my WordPress & email servers, but I want to avoid accidentally blocking Googlebot, GMail and MS Outlook servers.

There’s a built-in list of trusted providers for common well-trusted services, and these can auto-updated themselves from publicly available IP lists, or DNS lookups.

Installation

# Add trusted-network-providers to your project.
npm install @headwall/trusted-network-providers

Example usage

/**
 * test.js
 */

const trustedProviders = require('./index');

/**
 * Add the built-in proicers including Googlebot, PayPal and a few others.
 */
trustedProviders.loadDefaultProviders();

/**
 * Force the dynamically-updated ptoviders to refresh themselves by whatever
 * means they use.
 */
trustedProviders.reloadAll()
	.then(() => {
		const ipAddresses = [
			'11.22.33.44',
			'123.123.123.123',
			'66.249.66.87',
		];

		ipAddresses.forEach((ipAddress) => {
			let providerName = trustedProviders.getTrustedProvider(ipAddress);
			if (!providerName) {
				providerName = '_wild_';
			}

			console.log(`${ipAddress} => ${providerName}`);
		});

		console.log('Finished IP lookups');
	});

You can periodically call trustedProviders.reloadAll() to refresh IP address lists. They won’t change very often, but if you’ve got a long-running service then reloading the providers a couple of times a day is probably a good idea.

Leave a comment