@csermet/multiprovider
Version:
cloud-graph provider plugin for AWS used to fetch AWS cloud data.
69 lines (68 loc) • 2.73 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const sdk_1 = require("@cloudgraph/sdk");
const translations_1 = __importDefault(require("../../properties/translations"));
const generateArns_1 = require("../../utils/generateArns");
const format_1 = require("../../utils/format");
/**
* NACL
*/
exports.default = ({ service: rawData, account, region, }) => {
const { NetworkAclId: id, Associations: associations, Entries: entries, VpcId: vpcId, IsDefault: isDefault, Tags, } = rawData;
const associatedSubnets = (associations || []).map(({ NetworkAclAssociationId: networkAclAssociationId, SubnetId: subnetId, }) => ({
id: sdk_1.generateUniqueId({
networkAclAssociationId,
subnetId,
}),
networkAclAssociationId,
subnetId,
}));
const egress = (entries || []).filter(({ Egress: e }) => e);
const ingress = (entries || []).filter(({ Egress: e }) => !e);
const [outboundRules, inboundRules] = [
{ data: egress, direction: translations_1.default.destination },
{ data: ingress, direction: translations_1.default.source },
].map(({ data, direction }) => data.map((rule) => {
const { CidrBlock: cidrBlock, Ipv6CidrBlock: ipv6CidrBlock, PortRange: { To: toPort, From: fromPort } = {}, Protocol: protocol, RuleNumber: ruleNumber, RuleAction: ruleAction, } = rule;
let portRange = '';
if (!fromPort && !toPort) {
portRange = translations_1.default.all;
}
else if (fromPort === toPort) {
portRange = fromPort.toString();
}
else {
portRange = `${fromPort} - ${toPort}`;
}
return {
id: sdk_1.generateUniqueId({
...rule,
}),
ruleNumber,
protocol: protocol === '-1' ? translations_1.default.all : protocol,
portRange,
toPort,
fromPort,
source: direction === translations_1.default.source ? cidrBlock || ipv6CidrBlock || '' : undefined,
destination: direction === translations_1.default.destination
? cidrBlock || ipv6CidrBlock || ''
: undefined,
allowOrDeny: ruleAction,
};
}));
return {
id,
vpcId,
arn: generateArns_1.networkAclArn({ region, account, id }),
accountId: account,
associatedSubnets,
inboundRules,
outboundRules,
default: isDefault,
region,
tags: format_1.formatTagsFromMap(Tags),
};
};