UNPKG

forest-express

Version:

Official package for all Forest Express Lianas

42 lines (41 loc) 1.66 kB
"use strict"; var P = require('bluebird'); var _ = require('lodash'); var VError = require('verror'); var ipUtil = require('forest-ip-utils'); var logger = require('./logger'); var errorMessages = require('../utils/error-messages'); var forestServerRequester = require('./forest-server-requester'); var IpWhitelistDeserializer = require('../deserializers/ip-whitelist'); var ipWhitelistRules = null; var useIpWhitelist = true; function retrieve(environmentSecret) { return forestServerRequester.perform('/liana/v1/ip-whitelist-rules', environmentSecret).then(function (responseBody) { if (responseBody.data) { return new IpWhitelistDeserializer(responseBody.data).perform(); } return P.reject(new Error("IP Whitelist: ".concat(errorMessages.SERVER_TRANSACTION.UNEXPECTED))); }).then(function (ipWhitelistData) { useIpWhitelist = ipWhitelistData.useIpWhitelist; ipWhitelistRules = ipWhitelistData.rules; })["catch"](function (error) { logger.error("An error occured while retrieving your IP whitelist. Your Forest envSecret may be missing or unknown. Can you check that you properly set your Forest envSecret in the Forest initializer? ".concat(error.message)); return P.reject(new VError('IP Whitelist error', error)); }); } function isIpWhitelistRetrieved() { return !useIpWhitelist || ipWhitelistRules !== null; } function isIpValid(ip) { if (useIpWhitelist) { return _.some(ipWhitelistRules, function (rule) { return ipUtil.isIpMatchesRule(ip, rule); }); } return true; } module.exports = { retrieve: retrieve, isIpValid: isIpValid, isIpWhitelistRetrieved: isIpWhitelistRetrieved };