UNPKG

@csermet/multiprovider

Version:

cloud-graph provider plugin for AWS used to fetch AWS cloud data.

124 lines (123 loc) 4.65 kB
"use strict"; 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 format_1 = require("../../utils/format"); const generateArns_1 = require("../../utils/generateArns"); /** * Security Group */ const all = '-1'; exports.default = ({ service: rawData, account, region, }) => { const { Tags, GroupId: id, OwnerId: owner, GroupName: name, Description: description, VpcId: vpcId, } = rawData; const arn = generateArns_1.securityGroupArn({ region, account, id }); const { ipPermissions: ingress, ipPermissionsEgress: egress } = sdk_1.toCamel(rawData); const [obr, ibr] = [ { data: egress, direction: translations_1.default.destination }, { data: ingress, direction: translations_1.default.source }, ].map(({ data, direction }) => data.map(rule => { const protocol = rule.ipProtocol === all ? translations_1.default.all : rule.ipProtocol; const [toPort, fromPort] = [rule.toPort, rule.fromPort]; let portRange = ''; if ((!fromPort && !toPort) || (toPort === -1 && fromPort === -1)) { portRange = translations_1.default.all; } else if (fromPort === toPort) { portRange = fromPort.toString(); } else { portRange = `${fromPort} - ${toPort}`; } const allRules = []; (rule.ipRanges || []).map(({ cidrIp, description: ipRangesDescription = '' }, index) => { allRules.push({ id: sdk_1.generateUniqueId({ arn, protocol, portRange, cidrIp, ipRangesDescription, ipRanges: `ipRanges_${index}`, }), [direction]: cidrIp, description: ipRangesDescription, }); }); (rule.ipv6Ranges || []).map(({ cidrIpv6, description: ipv6RangesDescription = '' }, index) => { allRules.push({ id: sdk_1.generateUniqueId({ arn, protocol, portRange, cidrIpv6, ipv6RangesDescription, ipv6Ranges: `ipv6Ranges_${index}`, }), [direction]: cidrIpv6, description: ipv6RangesDescription, }); }); (rule.prefixListIds || []).map(({ prefixListId, description: prefixListIdsDescription = '' }, index) => { allRules.push({ id: sdk_1.generateUniqueId({ arn, protocol, portRange, prefixListId, prefixListIdsDescription, prefixListIds: `prefixListIds_${index}`, }), [direction]: prefixListId, description: prefixListIdsDescription, }); }); (rule.userIdGroupPairs || []).map(({ groupId, userId = '', groupName = '', peeringStatus = '', description: descriptionUserIdGroupPairs = '', }, index) => { allRules.push({ id: sdk_1.generateUniqueId({ arn, protocol, portRange, groupId, descriptionUserIdGroupPairs, groupName, peeringStatus, userId, userIdGroupPairs: `userIdGroupPairs_${index}`, }), [direction]: groupId, description: descriptionUserIdGroupPairs, groupName, peeringStatus, userId, }); }); return allRules.flatMap(allRulesRule => ({ protocol, portRange, toPort, fromPort, ...allRulesRule, })); })); const inboundRules = ibr.flat(); const outboundRules = obr.flat(); return { id, name, vpcId, accountId: account, arn, region, description, tags: format_1.formatTagsFromMap(Tags), owner, default: name === translations_1.default.default, inboundRules, outboundRules, inboundRuleCount: inboundRules.length, outboundRuleCount: outboundRules.length, }; };