forest-express
Version:
Official package for all Forest Express Lianas
42 lines (41 loc) • 1.66 kB
JavaScript
;
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
};