@webex/internal-plugin-ediscovery 2.29.3 → 2.29.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/config.js +0 -4
- package/dist/config.js.map +1 -1
- package/dist/ediscovery.js +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/transforms.js +3 -3
- package/dist/transforms.js.map +1 -1
- package/package.json +37 -29
- package/src/config.js +0 -3
- package/src/index.js +1 -0
- package/src/transforms.js +3 -3
package/README.md
CHANGED
|
@@ -37,13 +37,15 @@ webex.internal.plugin.ediscovery.WHATEVER
|
|
|
37
37
|
|
|
38
38
|
Run the ediscovery from the top level using
|
|
39
39
|
|
|
40
|
-
>
|
|
40
|
+
> yarn run test --packages @webex/internal-plugin-ediscovery
|
|
41
|
+
|
|
41
42
|
|
|
42
43
|
## Debug Tests
|
|
43
44
|
|
|
44
45
|
Run the following command
|
|
45
46
|
|
|
46
|
-
>
|
|
47
|
+
> yarn run test --packages @webex/internal-plugin-ediscovery --grep "test name" --karmaDebug --browsers=Chrome
|
|
48
|
+
|
|
47
49
|
|
|
48
50
|
## Maintainers
|
|
49
51
|
|
package/dist/config.js
CHANGED
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ediscovery","defaultOptions","offset","size","timeoutMs","types"],"sources":["config.js"],"sourcesContent":["
|
|
1
|
+
{"version":3,"names":["ediscovery","defaultOptions","offset","size","timeoutMs","types"],"sources":["config.js"],"sourcesContent":["\nexport default {\n ediscovery: {\n defaultOptions: {\n offset: 0, size: 100, timeoutMs: 30000, types: []\n }\n }\n};\n"],"mappings":";;;;;;;;;eACe;EACbA,UAAU,EAAE;IACVC,cAAc,EAAE;MACdC,MAAM,EAAE,CADM;MACHC,IAAI,EAAE,GADH;MACQC,SAAS,EAAE,KADnB;MAC0BC,KAAK,EAAE;IADjC;EADN;AADC,C"}
|
package/dist/ediscovery.js
CHANGED
|
@@ -722,7 +722,7 @@ var EDiscovery = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForVal
|
|
|
722
722
|
}, _callee10);
|
|
723
723
|
}))();
|
|
724
724
|
},
|
|
725
|
-
version: "2.29.
|
|
725
|
+
version: "2.29.5"
|
|
726
726
|
}, ((0, _applyDecoratedDescriptor2.default)(_obj, "createReport", [_dec], (0, _getOwnPropertyDescriptor.default)(_obj, "createReport"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "getReport", [_dec2], (0, _getOwnPropertyDescriptor.default)(_obj, "getReport"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "getReports", [_dec3], (0, _getOwnPropertyDescriptor.default)(_obj, "getReports"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "deleteReport", [_dec4], (0, _getOwnPropertyDescriptor.default)(_obj, "deleteReport"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "restartReport", [_dec5], (0, _getOwnPropertyDescriptor.default)(_obj, "restartReport"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "getContent", [_dec6, _dec7], (0, _getOwnPropertyDescriptor.default)(_obj, "getContent"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "getContentContainer", [_dec8, _dec9], (0, _getOwnPropertyDescriptor.default)(_obj, "getContentContainer"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "getContentContainerByContainerId", [_dec10, _dec11], (0, _getOwnPropertyDescriptor.default)(_obj, "getContentContainerByContainerId"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "getClientConfig", [_dec12], (0, _getOwnPropertyDescriptor.default)(_obj, "getClientConfig"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "postAuditLog", [_dec13], (0, _getOwnPropertyDescriptor.default)(_obj, "postAuditLog"), _obj)), _obj)));
|
|
727
727
|
|
|
728
728
|
var _default2 = EDiscovery;
|
package/dist/index.js
CHANGED
|
@@ -208,6 +208,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
208
208
|
}]
|
|
209
209
|
}
|
|
210
210
|
});
|
|
211
|
-
var _default = _ediscovery.default;
|
|
211
|
+
var _default = _ediscovery.default; // eslint-disable-next-line import/named
|
|
212
|
+
|
|
212
213
|
exports.default = _default;
|
|
213
214
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["registerInternalPlugin","EDiscovery","config","payloadTransformer","predicates","name","direction","test","ctx","object","resolve","extract","transforms","fn","Transforms","decryptReportRequest","body","all","map","item","transform","encryptReportRequest","reportId","decryptReportContent","options","uri","decryptReportContentContainer"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-encryption';\nimport '@webex/internal-plugin-conversation';\n\nimport {registerInternalPlugin} from '@webex/webex-core';\nimport {has} from 'lodash';\n\nimport EDiscovery from './ediscovery';\nimport Transforms from './transforms';\nimport config from './config';\n\nregisterInternalPlugin('ediscovery', EDiscovery, {\n config,\n payloadTransformer: {\n predicates: [\n {\n name: 'decryptReportRequest',\n direction: 'inbound',\n test(ctx, object) {\n return Promise.resolve(has(object, 'body.reportRequest'));\n },\n extract(object) {\n return Promise.resolve(object);\n }\n },\n {\n name: 'decryptReportRequestArray',\n direction: 'inbound',\n test(ctx, object) {\n return Promise.resolve(has(object, 'body[0].reportRequest'));\n },\n extract(object) {\n return Promise.resolve(object);\n }\n },\n {\n name: 'encryptReportRequest',\n direction: 'outbound',\n test(ctx, object) {\n return Promise.resolve(has(object, 'body.keywords') || has(object, 'body.spaceNames') || has(object, 'body.emails'));\n },\n extract(object) {\n return Promise.resolve(object);\n }\n },\n {\n name: 'decryptReportContent',\n direction: 'inbound',\n test(ctx, object) {\n return Promise.resolve(has(object, 'body.activityId'));\n },\n extract(object) {\n return Promise.resolve(object);\n }\n },\n {\n name: 'decryptReportContentArray',\n direction: 'inbound',\n test(ctx, object) {\n return Promise.resolve(has(object, 'body[0].activityId'));\n },\n extract(object) {\n return Promise.resolve(object);\n }\n },\n {\n name: 'decryptReportContentContainer',\n direction: 'inbound',\n test(ctx, object) {\n return Promise.resolve(has(object, 'body.containerId'));\n },\n extract(object) {\n return Promise.resolve(object);\n }\n },\n {\n name: 'decryptReportContentContainerArray',\n direction: 'inbound',\n test(ctx, object) {\n return Promise.resolve(has(object, 'body[0].containerId'));\n },\n extract(object) {\n return Promise.resolve(object);\n }\n }\n ],\n transforms: [\n {\n name: 'decryptReportRequest',\n direction: 'inbound',\n fn(ctx, object) {\n return Transforms.decryptReportRequest(ctx, object);\n }\n },\n {\n name: 'decryptReportRequestArray',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object || !object.body) {\n return Promise.resolve();\n }\n\n return Promise.all(object.body.map((item) => ctx.transform('decryptReportRequest', {body: item})));\n }\n },\n {\n name: 'encryptReportRequest',\n direction: 'outbound',\n fn(ctx, object) {\n return Transforms.encryptReportRequest(ctx, object);\n }\n },\n {\n name: 'decryptReportContent',\n direction: 'inbound',\n fn(ctx, object, reportId) {\n return Transforms.decryptReportContent(ctx, object, reportId);\n }\n },\n {\n name: 'decryptReportContentArray',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object || !object.body) {\n return Promise.resolve();\n }\n\n // Always use the report url as this'll resolve correctly for remote reports\n return Promise.all(object.body.map((item) => ctx.transform('decryptReportContent', {body: item}, object.options.uri)));\n }\n },\n {\n name: 'decryptReportContentContainer',\n direction: 'inbound',\n fn(ctx, object) {\n return Transforms.decryptReportContentContainer(ctx, object);\n }\n },\n {\n name: 'decryptReportContentContainerArray',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object || !object.body) {\n return Promise.resolve();\n }\n\n return Promise.all(object.body.map((item) => ctx.transform('decryptReportContentContainer', {body: item})));\n }\n }\n ]\n }\n});\n\nexport default EDiscovery;\n\nexport {config} from './config';\nexport {default as ReportRequest} from './report-request';\nexport {EdiscoveryError, InvalidEmailAddressError} from './ediscovery-error';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;AACA;;AAEA;;AAGA;;AACA;;AACA;;
|
|
1
|
+
{"version":3,"names":["registerInternalPlugin","EDiscovery","config","payloadTransformer","predicates","name","direction","test","ctx","object","resolve","extract","transforms","fn","Transforms","decryptReportRequest","body","all","map","item","transform","encryptReportRequest","reportId","decryptReportContent","options","uri","decryptReportContentContainer"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-encryption';\nimport '@webex/internal-plugin-conversation';\n\nimport {registerInternalPlugin} from '@webex/webex-core';\nimport {has} from 'lodash';\n\nimport EDiscovery from './ediscovery';\nimport Transforms from './transforms';\nimport config from './config';\n\nregisterInternalPlugin('ediscovery', EDiscovery, {\n config,\n payloadTransformer: {\n predicates: [\n {\n name: 'decryptReportRequest',\n direction: 'inbound',\n test(ctx, object) {\n return Promise.resolve(has(object, 'body.reportRequest'));\n },\n extract(object) {\n return Promise.resolve(object);\n }\n },\n {\n name: 'decryptReportRequestArray',\n direction: 'inbound',\n test(ctx, object) {\n return Promise.resolve(has(object, 'body[0].reportRequest'));\n },\n extract(object) {\n return Promise.resolve(object);\n }\n },\n {\n name: 'encryptReportRequest',\n direction: 'outbound',\n test(ctx, object) {\n return Promise.resolve(has(object, 'body.keywords') || has(object, 'body.spaceNames') || has(object, 'body.emails'));\n },\n extract(object) {\n return Promise.resolve(object);\n }\n },\n {\n name: 'decryptReportContent',\n direction: 'inbound',\n test(ctx, object) {\n return Promise.resolve(has(object, 'body.activityId'));\n },\n extract(object) {\n return Promise.resolve(object);\n }\n },\n {\n name: 'decryptReportContentArray',\n direction: 'inbound',\n test(ctx, object) {\n return Promise.resolve(has(object, 'body[0].activityId'));\n },\n extract(object) {\n return Promise.resolve(object);\n }\n },\n {\n name: 'decryptReportContentContainer',\n direction: 'inbound',\n test(ctx, object) {\n return Promise.resolve(has(object, 'body.containerId'));\n },\n extract(object) {\n return Promise.resolve(object);\n }\n },\n {\n name: 'decryptReportContentContainerArray',\n direction: 'inbound',\n test(ctx, object) {\n return Promise.resolve(has(object, 'body[0].containerId'));\n },\n extract(object) {\n return Promise.resolve(object);\n }\n }\n ],\n transforms: [\n {\n name: 'decryptReportRequest',\n direction: 'inbound',\n fn(ctx, object) {\n return Transforms.decryptReportRequest(ctx, object);\n }\n },\n {\n name: 'decryptReportRequestArray',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object || !object.body) {\n return Promise.resolve();\n }\n\n return Promise.all(object.body.map((item) => ctx.transform('decryptReportRequest', {body: item})));\n }\n },\n {\n name: 'encryptReportRequest',\n direction: 'outbound',\n fn(ctx, object) {\n return Transforms.encryptReportRequest(ctx, object);\n }\n },\n {\n name: 'decryptReportContent',\n direction: 'inbound',\n fn(ctx, object, reportId) {\n return Transforms.decryptReportContent(ctx, object, reportId);\n }\n },\n {\n name: 'decryptReportContentArray',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object || !object.body) {\n return Promise.resolve();\n }\n\n // Always use the report url as this'll resolve correctly for remote reports\n return Promise.all(object.body.map((item) => ctx.transform('decryptReportContent', {body: item}, object.options.uri)));\n }\n },\n {\n name: 'decryptReportContentContainer',\n direction: 'inbound',\n fn(ctx, object) {\n return Transforms.decryptReportContentContainer(ctx, object);\n }\n },\n {\n name: 'decryptReportContentContainerArray',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object || !object.body) {\n return Promise.resolve();\n }\n\n return Promise.all(object.body.map((item) => ctx.transform('decryptReportContentContainer', {body: item})));\n }\n }\n ]\n }\n});\n\nexport default EDiscovery;\n\n// eslint-disable-next-line import/named\nexport {config} from './config';\nexport {default as ReportRequest} from './report-request';\nexport {EdiscoveryError, InvalidEmailAddressError} from './ediscovery-error';\n"],"mappings":"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"}
|
package/dist/transforms.js
CHANGED
|
@@ -31,7 +31,7 @@ var Transforms = /*#__PURE__*/function () {
|
|
|
31
31
|
value:
|
|
32
32
|
/**
|
|
33
33
|
* This function is used to encrypt sensitive properties on the ReportRequest before it is sent to the eDiscovery Service createReport API
|
|
34
|
-
* @param {Object} ctx - An object
|
|
34
|
+
* @param {Object} ctx - An object containing a webex instance and a transform
|
|
35
35
|
* @param {Object} object - Generic object that you want to encrypt some property on based on the type
|
|
36
36
|
* @returns {Promise} - Returns a transform promise
|
|
37
37
|
*/
|
|
@@ -102,7 +102,7 @@ var Transforms = /*#__PURE__*/function () {
|
|
|
102
102
|
}
|
|
103
103
|
/**
|
|
104
104
|
* This function is used to decrypt encrypted properties on the ReportRequest that is returned from the eDiscovery Service getReport(s) API
|
|
105
|
-
* @param {Object} ctx - An object
|
|
105
|
+
* @param {Object} ctx - An object containing a webex instance and a transform
|
|
106
106
|
* @param {Object} object - Generic object that you want to decrypt some property on based on the type
|
|
107
107
|
* @returns {Promise} - Returns a transform promise
|
|
108
108
|
*/
|
|
@@ -175,7 +175,7 @@ var Transforms = /*#__PURE__*/function () {
|
|
|
175
175
|
}
|
|
176
176
|
/**
|
|
177
177
|
* This function is used to decrypt encrypted properties on the activities that are returned from the eDiscovery Service getContent API
|
|
178
|
-
* @param {Object} ctx - An object
|
|
178
|
+
* @param {Object} ctx - An object containing a webex instance and a transform
|
|
179
179
|
* @param {Object} object - Generic object that you want to decrypt some property on based on the type
|
|
180
180
|
* @param {String} reportId - Id of the report for which content is being retrieved
|
|
181
181
|
* @returns {Promise} - Returns a transform promise
|
package/dist/transforms.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Transforms","ctx","object","body","resolve","reportRequest","webex","internal","encryption","kms","createUnboundKeys","count","then","keys","length","encryptionKeyUrl","uri","createResource","userIds","userId","promises","name","push","encryptText","encryptedName","description","encryptedDescription","spaceNames","all","map","spaceName","encryptedSpaceNames","keywords","keyword","encryptedKeywords","emails","unencryptedEmails","email","encryptedEmails","catch","reason","logger","error","reject","reportNamePromise","decryptText","decryptedName","id","reportDescriptionPromise","decryptedDescription","spaceNamePromises","decryptedSpaceNames","keywordPromises","decryptedKeywords","emailPromises","decryptedEmails","concat","reportId","activity","ediscovery","getContentContainerByContainerId","targetId","res","container","activityId","warning","spaceWarning","containerWarning","containerName","isOneOnOne","displayNames","participants","formerParticipants","p","displayName","join","includes","verb","meeting","recording","extension","extensionType","spaceInfo","info","onBehalfOfUser","objectDisplayName","requestWithRetries","onBehalfOf","decryptedMessage","previousName","previousEncryptionKeyUrl","objectType","contentUrl","decryptedContentUrl","decryptedDisplayName","webUrl","decryptedWebUrl","previous","decryptedPreviousContentUrl","decryptedPreviousDisplayName","title","topic","shares","Array","prototype","apply","files","whiteboards","links","i","share","warn","mimeType","fileSize","url","microsoftSharedLinkInfo","driveId","decryptedDriveId","itemId","decryptedItemId","scr","sslr","decryptScr","decryptedSCR","loc","containerType","containerId","descriptionEncryptionKeyUrl","decryptedContainerDescription","decryptedContainerName"],"sources":["transforms.js"],"sourcesContent":["import {requestWithRetries} from './retry';\n\n/**\n * This class is used to encrypt/decrypt various properties on ReportRequests, Activities and Spaces as they are sent/returned to/from the eDiscovery Service\n */\nclass Transforms {\n /**\n * This function is used to encrypt sensitive properties on the ReportRequest before it is sent to the eDiscovery Service createReport API\n * @param {Object} ctx - An object containg a webex instance and a transform\n * @param {Object} object - Generic object that you want to encrypt some property on based on the type\n * @returns {Promise} - Returns a transform promise\n */\n static encryptReportRequest(ctx, object) {\n if (!object || !object.body) {\n return Promise.resolve(object);\n }\n const reportRequest = object.body;\n\n return ctx.webex.internal.encryption.kms.createUnboundKeys({count: 1})\n .then((keys) => {\n if (keys && keys.length > 0 && keys[0]) {\n reportRequest.encryptionKeyUrl = keys[0].uri;\n\n return ctx.webex.internal.encryption.kms.createResource({userIds: [keys[0].userId], keys})\n .then(() => {\n const promises = [];\n\n if (reportRequest.name) {\n promises.push(\n ctx.webex.internal.encryption.encryptText(keys[0], reportRequest.name)\n .then((encryptedName) => {\n reportRequest.name = encryptedName;\n })\n );\n }\n\n if (reportRequest.description) {\n promises.push(\n ctx.webex.internal.encryption.encryptText(keys[0], reportRequest.description)\n .then((encryptedDescription) => {\n reportRequest.description = encryptedDescription;\n })\n );\n }\n\n if (reportRequest.spaceNames) {\n promises.push(\n Promise.all(reportRequest.spaceNames.map((spaceName) => ctx.webex.internal.encryption.encryptText(keys[0], spaceName)))\n .then((encryptedSpaceNames) => {\n reportRequest.spaceNames = encryptedSpaceNames;\n })\n );\n }\n\n if (reportRequest.keywords) {\n promises.push(\n Promise.all(reportRequest.keywords.map((keyword) => ctx.webex.internal.encryption.encryptText(keys[0], keyword)))\n .then((encryptedKeywords) => {\n reportRequest.keywords = encryptedKeywords;\n })\n );\n }\n\n if (reportRequest.emails) {\n // store unencrypted emails for ediscovery service to convert to user ids\n reportRequest.unencryptedEmails = reportRequest.emails;\n promises.push(\n Promise.all(reportRequest.emails.map((email) => ctx.webex.internal.encryption.encryptText(keys[0], email)))\n .then((encryptedEmails) => {\n reportRequest.emails = encryptedEmails;\n })\n );\n }\n\n return Promise.all(promises);\n });\n }\n\n return Promise.resolve(object);\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Error while encrypting report request: ${reportRequest} : ${reason}`);\n\n return Promise.reject(reason);\n });\n }\n\n /**\n * This function is used to decrypt encrypted properties on the ReportRequest that is returned from the eDiscovery Service getReport(s) API\n * @param {Object} ctx - An object containg a webex instance and a transform\n * @param {Object} object - Generic object that you want to decrypt some property on based on the type\n * @returns {Promise} - Returns a transform promise\n */\n static decryptReportRequest(ctx, object) {\n if (!object || !object.body || !object.body.reportRequest || !object.body.reportRequest.encryptionKeyUrl) {\n return Promise.resolve(object);\n }\n const {reportRequest} = object.body;\n\n let reportNamePromise;\n\n if (reportRequest.name) {\n reportNamePromise = ctx.webex.internal.encryption.decryptText(reportRequest.encryptionKeyUrl, reportRequest.name)\n .then((decryptedName) => {\n reportRequest.name = decryptedName;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Error decrypting report name for report ${object.body.id}: ${reason}`);\n });\n }\n\n let reportDescriptionPromise;\n\n if (reportRequest.description) {\n reportDescriptionPromise = ctx.webex.internal.encryption.decryptText(reportRequest.encryptionKeyUrl, reportRequest.description)\n .then((decryptedDescription) => {\n reportRequest.description = decryptedDescription;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Error decrypting description for report ${object.body.id}: ${reason}`);\n });\n }\n\n let spaceNamePromises = [];\n\n if (reportRequest.spaceNames) {\n spaceNamePromises = Promise.all(reportRequest.spaceNames.map((spaceName) => ctx.webex.internal.encryption.decryptText(reportRequest.encryptionKeyUrl, spaceName)))\n .then((decryptedSpaceNames) => {\n reportRequest.spaceNames = decryptedSpaceNames;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Error decrypting space name for report ${object.body.id}: ${reason}`);\n });\n }\n\n let keywordPromises = [];\n\n if (reportRequest.keywords) {\n keywordPromises = Promise.all(reportRequest.keywords.map((keyword) => ctx.webex.internal.encryption.decryptText(reportRequest.encryptionKeyUrl, keyword)))\n .then((decryptedKeywords) => {\n reportRequest.keywords = decryptedKeywords;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Error decrypting keywords for report ${object.body.id}: ${reason}`);\n });\n }\n\n let emailPromises = [];\n\n if (reportRequest.emails) {\n emailPromises = Promise.all(reportRequest.emails.map((email) => ctx.webex.internal.encryption.decryptText(reportRequest.encryptionKeyUrl, email)))\n .then((decryptedEmails) => {\n reportRequest.emails = decryptedEmails;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Error decrypting emails for report ${object.body.id}: ${reason}`);\n });\n }\n\n return Promise.all([reportNamePromise, reportDescriptionPromise].concat(spaceNamePromises, keywordPromises, emailPromises));\n }\n\n /**\n * This function is used to decrypt encrypted properties on the activities that are returned from the eDiscovery Service getContent API\n * @param {Object} ctx - An object containg a webex instance and a transform\n * @param {Object} object - Generic object that you want to decrypt some property on based on the type\n * @param {String} reportId - Id of the report for which content is being retrieved\n * @returns {Promise} - Returns a transform promise\n */\n static decryptReportContent(ctx, object, reportId) {\n if (!object || !object.body || !reportId) {\n return Promise.resolve();\n }\n const activity = object.body;\n\n const promises = [];\n\n return ctx.webex.internal.ediscovery.getContentContainerByContainerId(reportId, activity.targetId)\n .then((res) => {\n const container = res.body;\n\n if (!container) {\n const reason = `Container ${activity.targetId} not found - unable to decrypt activity ${activity.activityId}`;\n\n activity.error = reason;\n ctx.webex.logger.error(reason);\n\n return Promise.resolve(object);\n }\n\n // add warning properties to the activity - these will be recorded in the downloader\n if (container.warning) {\n activity.spaceWarning = container.warning; // Remove this property once all clients are using the content container model\n activity.containerWarning = container.warning;\n }\n\n // set space name and participants on activity\n if (container.containerName) {\n activity.spaceName = container.containerName; // Remove this property once all clients are using the content container model\n activity.containerName = container.containerName;\n }\n else if (container.isOneOnOne) {\n const displayNames = (container.participants || []).concat(container.formerParticipants || []).map((p) => p.displayName).join(' & ');\n\n // One to One spaces have no space name, use participant names as 'Subject' instead\n activity.spaceName = displayNames; // Remove this property once all clients are using the content container model\n activity.containerName = displayNames;\n }\n else {\n activity.spaceName = ''; // Remove this property once all clients are using the content container model\n activity.containerName = '';\n }\n\n // post and share activities have content which needs to be decrypted\n // as do meeting, recording activities, customApp extensions, and space information updates\n if (!['post', 'share'].includes(activity.verb) && !activity.meeting && !activity.recording && !(activity.extension && activity.extension.extensionType === 'customApp') &&\n !activity.spaceInfo?.name && !activity.spaceInfo?.description) {\n return Promise.resolve(object);\n }\n\n if (!activity.encryptionKeyUrl) {\n // If the encryptionKeyUrl is empty we assume the activity is unencrypted\n ctx.webex.logger.info(`Activity ${activity.activityId} cannot be decrypted due to a missing encryption key url`);\n\n return Promise.resolve(object);\n }\n\n if (!container.onBehalfOfUser) {\n const reason = `No user available with which to decrypt activity ${activity.activityId} in container ${activity.targetId}`;\n\n ctx.webex.logger.error(reason);\n activity.error = reason;\n\n return Promise.resolve(object);\n }\n\n // Decrypt activity message if present\n if (activity.objectDisplayName) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.objectDisplayName, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedMessage) => {\n activity.objectDisplayName = decryptedMessage;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt message error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n // add error property to activity - this error will be recorded in the downloader and the activity omitted from the report\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n\n // If the activity is a space information update, decrypt the name and description if present\n if (activity.spaceInfo?.name) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.spaceInfo.name, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedMessage) => {\n activity.spaceInfo.name = decryptedMessage;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.spaceInfo.name error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n if (activity.spaceInfo?.description) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.spaceInfo.description, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedMessage) => {\n activity.spaceInfo.description = decryptedMessage;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.spaceInfo.description error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n if (activity.spaceInfo?.previousName && activity.spaceInfo.previousEncryptionKeyUrl) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.spaceInfo.previousEncryptionKeyUrl, activity.spaceInfo.previousName, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedMessage) => {\n activity.spaceInfo.previousName = decryptedMessage;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.spaceInfo.previousName error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n\n // Decrypt content url and display name if extension is present\n if (activity.extension && activity.extension.objectType === 'extension' && activity.extension.extensionType === 'customApp') {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.extension.contentUrl, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedContentUrl) => {\n activity.extension.contentUrl = decryptedContentUrl;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.extension.contentUrl error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.extension.displayName, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedDisplayName) => {\n activity.extension.displayName = decryptedDisplayName;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.extension.displayName error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n\n // Decrypt webUrl.\n if (activity.extension.webUrl) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.extension.webUrl, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedWebUrl) => {\n activity.extension.webUrl = decryptedWebUrl;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.extension.webUrl error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n if (activity.verb === 'update' && activity.extension.previous) {\n if (activity.extension.previous.contentUrl) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.extension.previous.contentUrl, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedPreviousContentUrl) => {\n activity.extension.previous.contentUrl = decryptedPreviousContentUrl;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.extension.previous.contentUrl error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n if (activity.extension.previous.displayName) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.extension.previous.displayName, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedPreviousDisplayName) => {\n activity.extension.previous.displayName = decryptedPreviousDisplayName;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.extension.previous.displayName error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n }\n }\n\n // Decrypt meeting title if present\n if (activity?.meeting?.title) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.meeting.title, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedMessage) => {\n activity.meeting.title = decryptedMessage;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.meeting.title error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n\n // Decrypt meeting recording topic if present\n if (activity?.recording?.topic) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.recording.topic, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedMessage) => {\n activity.recording.topic = decryptedMessage;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.recording.topic error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n\n // Decrypt shares (files, whiteboards, shared links)\n // Array.prototype.concat.apply ignores undefined\n let shares = Array.prototype.concat.apply([], activity.files);\n\n shares = Array.prototype.concat.apply(shares, activity.whiteboards);\n shares = Array.prototype.concat.apply(shares, activity.links);\n for (let i = 0; i < shares.length; i += 1) {\n const share = shares[i];\n\n // Decrypt the share's display name\n // Ignore display names for whiteboards which are unencrypted\n if (share.displayName && (!activity.whiteboards || !activity.whiteboards.includes(share))) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, share.displayName, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedDisplayName) => {\n share.displayName = decryptedDisplayName;\n })\n .catch((reason) => {\n ctx.webex.logger.warn(`Decrypt DisplayName error for activity ${activity.activityId} in container ${activity.targetId} for share type: ${share.mimeType}, size: ${share.fileSize}, and url: ${share.url} due to error: ${reason}`);\n // add warning property to activity - this will present an indication that there was data loss on the downloader\n activity.warning = reason;\n }));\n }\n\n // Shared Links can have additional decryption fields\n if (share.microsoftSharedLinkInfo) {\n if (share.microsoftSharedLinkInfo.driveId) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, share.microsoftSharedLinkInfo.driveId, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedDriveId) => {\n share.microsoftSharedLinkInfo.driveId = decryptedDriveId;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt share.microsoftSharedLinkInfo.driveId error for activity ${activity.activityId} in container ${activity.targetId} for share type: ${share.mimeType}, size: ${share.fileSize}, and url: ${share.url} due to error: ${reason}`);\n // add error property to activity - this error will be recorded in the downloader and the activity omitted from the report\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n\n if (share.microsoftSharedLinkInfo.itemId) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, share.microsoftSharedLinkInfo.itemId, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedItemId) => {\n share.microsoftSharedLinkInfo.itemId = decryptedItemId;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt share.microsoftSharedLinkInfo.itemId error for activity ${activity.activityId} in container ${activity.targetId} for share type: ${share.mimeType}, size: ${share.fileSize}, and url: ${share.url} due to error: ${reason}`);\n // add error property to activity - this error will be recorded in the downloader and the activity omitted from the report\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n }\n\n // Decrypt the scr (Secure Content Reference) or sslr (Secure Shared Link Reference)\n // Unlike a scr the sslr contains only a loc. But decryptScr(...) is flexible and\n // leaves the tag, auth, IV, etc fields on the SCR object as undefined.\n if (share.scr || share.sslr) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptScr,\n // A share will have an encryptionKeyUrl when it's activity uses a different encryptionKeyUrl. This can happen when old activities are edited\n // and key rotation is turn on.\n [share.encryptionKeyUrl || activity.encryptionKeyUrl, share.scr || share.sslr, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedSCR) => {\n if (share.scr) {\n share.scr = decryptedSCR;\n }\n else {\n share.sslr = decryptedSCR.loc;\n }\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt file scr or sslr error for activity ${activity.activityId} in container ${activity.targetId} for share type: ${share.mimeType}, size: ${share.fileSize}, and url: ${share.url} due to error: ${reason}`);\n // add error property to activity - this error will be recorded in the downloader and the activity omitted from the report\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n }\n\n return Promise.all(promises);\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Error retrieving content container for: ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n // add error property to activity - this error will be recorded in the downloader and the activity omitted from the report\n activity.error = reason;\n\n return Promise.resolve(object);\n });\n }\n\n /**\n * This function is used to decrypt encrypted properties on the containers that are returned from the eDiscovery Service getContentContainer API\n * @param {Object} ctx - An object containing a webex instance and a transform\n * @param {Object} object - Generic object that you want to decrypt some property on based on the type\n * @returns {Promise} - Returns a transform promise\n */\n static decryptReportContentContainer(ctx, object) {\n if (!object || !object.body) {\n return Promise.resolve();\n }\n const container = object.body;\n\n if (!container.containerName) {\n return Promise.resolve(object);\n }\n\n if (!container.encryptionKeyUrl) {\n // If the encryptionKeyUrl is empty we assume the container name is unencrypted\n ctx.webex.logger.info(`${container.containerType} container ${container.containerId} cannot be decrypted due to a missing encryption key url`);\n\n return Promise.resolve(object);\n }\n\n if (!container.onBehalfOfUser) {\n const reason = `No user available with which to decrypt ${container.containerType} container ${container.containerId}`;\n\n ctx.webex.logger.error(reason);\n container.error = reason;\n\n return Promise.resolve(object);\n }\n\n // decrypt description if present with a descriptionEncryptionKeyUrl\n if (container.description && container.descriptionEncryptionKeyUrl) {\n requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [container.descriptionEncryptionKeyUrl, container.description, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedContainerDescription) => {\n container.description = decryptedContainerDescription;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt container description error for ${container.containerType} container ${container.containerId}: ${reason}`);\n // add warn property to container info - this warning will be recorded in the downloader\n container.warning = reason;\n // don't return, attempt to decrypt the name first\n });\n }\n\n return requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [container.encryptionKeyUrl, container.containerName, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedContainerName) => {\n container.containerName = decryptedContainerName;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt container name error for ${container.containerType} container ${container.containerId}: ${reason}`);\n // add warn property to container info - this warning will be recorded in the downloader\n container.warning = reason;\n\n return Promise.resolve(object);\n });\n }\n}\n\nexport default Transforms;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Transforms","ctx","object","body","resolve","reportRequest","webex","internal","encryption","kms","createUnboundKeys","count","then","keys","length","encryptionKeyUrl","uri","createResource","userIds","userId","promises","name","push","encryptText","encryptedName","description","encryptedDescription","spaceNames","all","map","spaceName","encryptedSpaceNames","keywords","keyword","encryptedKeywords","emails","unencryptedEmails","email","encryptedEmails","catch","reason","logger","error","reject","reportNamePromise","decryptText","decryptedName","id","reportDescriptionPromise","decryptedDescription","spaceNamePromises","decryptedSpaceNames","keywordPromises","decryptedKeywords","emailPromises","decryptedEmails","concat","reportId","activity","ediscovery","getContentContainerByContainerId","targetId","res","container","activityId","warning","spaceWarning","containerWarning","containerName","isOneOnOne","displayNames","participants","formerParticipants","p","displayName","join","includes","verb","meeting","recording","extension","extensionType","spaceInfo","info","onBehalfOfUser","objectDisplayName","requestWithRetries","onBehalfOf","decryptedMessage","previousName","previousEncryptionKeyUrl","objectType","contentUrl","decryptedContentUrl","decryptedDisplayName","webUrl","decryptedWebUrl","previous","decryptedPreviousContentUrl","decryptedPreviousDisplayName","title","topic","shares","Array","prototype","apply","files","whiteboards","links","i","share","warn","mimeType","fileSize","url","microsoftSharedLinkInfo","driveId","decryptedDriveId","itemId","decryptedItemId","scr","sslr","decryptScr","decryptedSCR","loc","containerType","containerId","descriptionEncryptionKeyUrl","decryptedContainerDescription","decryptedContainerName"],"sources":["transforms.js"],"sourcesContent":["import {requestWithRetries} from './retry';\n\n/**\n * This class is used to encrypt/decrypt various properties on ReportRequests, Activities and Spaces as they are sent/returned to/from the eDiscovery Service\n */\nclass Transforms {\n /**\n * This function is used to encrypt sensitive properties on the ReportRequest before it is sent to the eDiscovery Service createReport API\n * @param {Object} ctx - An object containing a webex instance and a transform\n * @param {Object} object - Generic object that you want to encrypt some property on based on the type\n * @returns {Promise} - Returns a transform promise\n */\n static encryptReportRequest(ctx, object) {\n if (!object || !object.body) {\n return Promise.resolve(object);\n }\n const reportRequest = object.body;\n\n return ctx.webex.internal.encryption.kms.createUnboundKeys({count: 1})\n .then((keys) => {\n if (keys && keys.length > 0 && keys[0]) {\n reportRequest.encryptionKeyUrl = keys[0].uri;\n\n return ctx.webex.internal.encryption.kms.createResource({userIds: [keys[0].userId], keys})\n .then(() => {\n const promises = [];\n\n if (reportRequest.name) {\n promises.push(\n ctx.webex.internal.encryption.encryptText(keys[0], reportRequest.name)\n .then((encryptedName) => {\n reportRequest.name = encryptedName;\n })\n );\n }\n\n if (reportRequest.description) {\n promises.push(\n ctx.webex.internal.encryption.encryptText(keys[0], reportRequest.description)\n .then((encryptedDescription) => {\n reportRequest.description = encryptedDescription;\n })\n );\n }\n\n if (reportRequest.spaceNames) {\n promises.push(\n Promise.all(reportRequest.spaceNames.map((spaceName) => ctx.webex.internal.encryption.encryptText(keys[0], spaceName)))\n .then((encryptedSpaceNames) => {\n reportRequest.spaceNames = encryptedSpaceNames;\n })\n );\n }\n\n if (reportRequest.keywords) {\n promises.push(\n Promise.all(reportRequest.keywords.map((keyword) => ctx.webex.internal.encryption.encryptText(keys[0], keyword)))\n .then((encryptedKeywords) => {\n reportRequest.keywords = encryptedKeywords;\n })\n );\n }\n\n if (reportRequest.emails) {\n // store unencrypted emails for ediscovery service to convert to user ids\n reportRequest.unencryptedEmails = reportRequest.emails;\n promises.push(\n Promise.all(reportRequest.emails.map((email) => ctx.webex.internal.encryption.encryptText(keys[0], email)))\n .then((encryptedEmails) => {\n reportRequest.emails = encryptedEmails;\n })\n );\n }\n\n return Promise.all(promises);\n });\n }\n\n return Promise.resolve(object);\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Error while encrypting report request: ${reportRequest} : ${reason}`);\n\n return Promise.reject(reason);\n });\n }\n\n /**\n * This function is used to decrypt encrypted properties on the ReportRequest that is returned from the eDiscovery Service getReport(s) API\n * @param {Object} ctx - An object containing a webex instance and a transform\n * @param {Object} object - Generic object that you want to decrypt some property on based on the type\n * @returns {Promise} - Returns a transform promise\n */\n static decryptReportRequest(ctx, object) {\n if (!object || !object.body || !object.body.reportRequest || !object.body.reportRequest.encryptionKeyUrl) {\n return Promise.resolve(object);\n }\n const {reportRequest} = object.body;\n\n let reportNamePromise;\n\n if (reportRequest.name) {\n reportNamePromise = ctx.webex.internal.encryption.decryptText(reportRequest.encryptionKeyUrl, reportRequest.name)\n .then((decryptedName) => {\n reportRequest.name = decryptedName;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Error decrypting report name for report ${object.body.id}: ${reason}`);\n });\n }\n\n let reportDescriptionPromise;\n\n if (reportRequest.description) {\n reportDescriptionPromise = ctx.webex.internal.encryption.decryptText(reportRequest.encryptionKeyUrl, reportRequest.description)\n .then((decryptedDescription) => {\n reportRequest.description = decryptedDescription;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Error decrypting description for report ${object.body.id}: ${reason}`);\n });\n }\n\n let spaceNamePromises = [];\n\n if (reportRequest.spaceNames) {\n spaceNamePromises = Promise.all(reportRequest.spaceNames.map((spaceName) => ctx.webex.internal.encryption.decryptText(reportRequest.encryptionKeyUrl, spaceName)))\n .then((decryptedSpaceNames) => {\n reportRequest.spaceNames = decryptedSpaceNames;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Error decrypting space name for report ${object.body.id}: ${reason}`);\n });\n }\n\n let keywordPromises = [];\n\n if (reportRequest.keywords) {\n keywordPromises = Promise.all(reportRequest.keywords.map((keyword) => ctx.webex.internal.encryption.decryptText(reportRequest.encryptionKeyUrl, keyword)))\n .then((decryptedKeywords) => {\n reportRequest.keywords = decryptedKeywords;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Error decrypting keywords for report ${object.body.id}: ${reason}`);\n });\n }\n\n let emailPromises = [];\n\n if (reportRequest.emails) {\n emailPromises = Promise.all(reportRequest.emails.map((email) => ctx.webex.internal.encryption.decryptText(reportRequest.encryptionKeyUrl, email)))\n .then((decryptedEmails) => {\n reportRequest.emails = decryptedEmails;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Error decrypting emails for report ${object.body.id}: ${reason}`);\n });\n }\n\n return Promise.all([reportNamePromise, reportDescriptionPromise].concat(spaceNamePromises, keywordPromises, emailPromises));\n }\n\n /**\n * This function is used to decrypt encrypted properties on the activities that are returned from the eDiscovery Service getContent API\n * @param {Object} ctx - An object containing a webex instance and a transform\n * @param {Object} object - Generic object that you want to decrypt some property on based on the type\n * @param {String} reportId - Id of the report for which content is being retrieved\n * @returns {Promise} - Returns a transform promise\n */\n static decryptReportContent(ctx, object, reportId) {\n if (!object || !object.body || !reportId) {\n return Promise.resolve();\n }\n const activity = object.body;\n\n const promises = [];\n\n return ctx.webex.internal.ediscovery.getContentContainerByContainerId(reportId, activity.targetId)\n .then((res) => {\n const container = res.body;\n\n if (!container) {\n const reason = `Container ${activity.targetId} not found - unable to decrypt activity ${activity.activityId}`;\n\n activity.error = reason;\n ctx.webex.logger.error(reason);\n\n return Promise.resolve(object);\n }\n\n // add warning properties to the activity - these will be recorded in the downloader\n if (container.warning) {\n activity.spaceWarning = container.warning; // Remove this property once all clients are using the content container model\n activity.containerWarning = container.warning;\n }\n\n // set space name and participants on activity\n if (container.containerName) {\n activity.spaceName = container.containerName; // Remove this property once all clients are using the content container model\n activity.containerName = container.containerName;\n }\n else if (container.isOneOnOne) {\n const displayNames = (container.participants || []).concat(container.formerParticipants || []).map((p) => p.displayName).join(' & ');\n\n // One to One spaces have no space name, use participant names as 'Subject' instead\n activity.spaceName = displayNames; // Remove this property once all clients are using the content container model\n activity.containerName = displayNames;\n }\n else {\n activity.spaceName = ''; // Remove this property once all clients are using the content container model\n activity.containerName = '';\n }\n\n // post and share activities have content which needs to be decrypted\n // as do meeting, recording activities, customApp extensions, and space information updates\n if (!['post', 'share'].includes(activity.verb) && !activity.meeting && !activity.recording && !(activity.extension && activity.extension.extensionType === 'customApp') &&\n !activity.spaceInfo?.name && !activity.spaceInfo?.description) {\n return Promise.resolve(object);\n }\n\n if (!activity.encryptionKeyUrl) {\n // If the encryptionKeyUrl is empty we assume the activity is unencrypted\n ctx.webex.logger.info(`Activity ${activity.activityId} cannot be decrypted due to a missing encryption key url`);\n\n return Promise.resolve(object);\n }\n\n if (!container.onBehalfOfUser) {\n const reason = `No user available with which to decrypt activity ${activity.activityId} in container ${activity.targetId}`;\n\n ctx.webex.logger.error(reason);\n activity.error = reason;\n\n return Promise.resolve(object);\n }\n\n // Decrypt activity message if present\n if (activity.objectDisplayName) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.objectDisplayName, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedMessage) => {\n activity.objectDisplayName = decryptedMessage;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt message error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n // add error property to activity - this error will be recorded in the downloader and the activity omitted from the report\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n\n // If the activity is a space information update, decrypt the name and description if present\n if (activity.spaceInfo?.name) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.spaceInfo.name, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedMessage) => {\n activity.spaceInfo.name = decryptedMessage;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.spaceInfo.name error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n if (activity.spaceInfo?.description) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.spaceInfo.description, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedMessage) => {\n activity.spaceInfo.description = decryptedMessage;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.spaceInfo.description error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n if (activity.spaceInfo?.previousName && activity.spaceInfo.previousEncryptionKeyUrl) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.spaceInfo.previousEncryptionKeyUrl, activity.spaceInfo.previousName, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedMessage) => {\n activity.spaceInfo.previousName = decryptedMessage;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.spaceInfo.previousName error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n\n // Decrypt content url and display name if extension is present\n if (activity.extension && activity.extension.objectType === 'extension' && activity.extension.extensionType === 'customApp') {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.extension.contentUrl, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedContentUrl) => {\n activity.extension.contentUrl = decryptedContentUrl;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.extension.contentUrl error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.extension.displayName, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedDisplayName) => {\n activity.extension.displayName = decryptedDisplayName;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.extension.displayName error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n\n // Decrypt webUrl.\n if (activity.extension.webUrl) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.extension.webUrl, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedWebUrl) => {\n activity.extension.webUrl = decryptedWebUrl;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.extension.webUrl error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n if (activity.verb === 'update' && activity.extension.previous) {\n if (activity.extension.previous.contentUrl) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.extension.previous.contentUrl, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedPreviousContentUrl) => {\n activity.extension.previous.contentUrl = decryptedPreviousContentUrl;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.extension.previous.contentUrl error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n if (activity.extension.previous.displayName) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.extension.previous.displayName, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedPreviousDisplayName) => {\n activity.extension.previous.displayName = decryptedPreviousDisplayName;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.extension.previous.displayName error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n }\n }\n\n // Decrypt meeting title if present\n if (activity?.meeting?.title) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.meeting.title, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedMessage) => {\n activity.meeting.title = decryptedMessage;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.meeting.title error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n\n // Decrypt meeting recording topic if present\n if (activity?.recording?.topic) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, activity.recording.topic, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedMessage) => {\n activity.recording.topic = decryptedMessage;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt activity.recording.topic error for activity ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n\n // Decrypt shares (files, whiteboards, shared links)\n // Array.prototype.concat.apply ignores undefined\n let shares = Array.prototype.concat.apply([], activity.files);\n\n shares = Array.prototype.concat.apply(shares, activity.whiteboards);\n shares = Array.prototype.concat.apply(shares, activity.links);\n for (let i = 0; i < shares.length; i += 1) {\n const share = shares[i];\n\n // Decrypt the share's display name\n // Ignore display names for whiteboards which are unencrypted\n if (share.displayName && (!activity.whiteboards || !activity.whiteboards.includes(share))) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, share.displayName, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedDisplayName) => {\n share.displayName = decryptedDisplayName;\n })\n .catch((reason) => {\n ctx.webex.logger.warn(`Decrypt DisplayName error for activity ${activity.activityId} in container ${activity.targetId} for share type: ${share.mimeType}, size: ${share.fileSize}, and url: ${share.url} due to error: ${reason}`);\n // add warning property to activity - this will present an indication that there was data loss on the downloader\n activity.warning = reason;\n }));\n }\n\n // Shared Links can have additional decryption fields\n if (share.microsoftSharedLinkInfo) {\n if (share.microsoftSharedLinkInfo.driveId) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, share.microsoftSharedLinkInfo.driveId, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedDriveId) => {\n share.microsoftSharedLinkInfo.driveId = decryptedDriveId;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt share.microsoftSharedLinkInfo.driveId error for activity ${activity.activityId} in container ${activity.targetId} for share type: ${share.mimeType}, size: ${share.fileSize}, and url: ${share.url} due to error: ${reason}`);\n // add error property to activity - this error will be recorded in the downloader and the activity omitted from the report\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n\n if (share.microsoftSharedLinkInfo.itemId) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [activity.encryptionKeyUrl, share.microsoftSharedLinkInfo.itemId, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedItemId) => {\n share.microsoftSharedLinkInfo.itemId = decryptedItemId;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt share.microsoftSharedLinkInfo.itemId error for activity ${activity.activityId} in container ${activity.targetId} for share type: ${share.mimeType}, size: ${share.fileSize}, and url: ${share.url} due to error: ${reason}`);\n // add error property to activity - this error will be recorded in the downloader and the activity omitted from the report\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n }\n\n // Decrypt the scr (Secure Content Reference) or sslr (Secure Shared Link Reference)\n // Unlike a scr the sslr contains only a loc. But decryptScr(...) is flexible and\n // leaves the tag, auth, IV, etc fields on the SCR object as undefined.\n if (share.scr || share.sslr) {\n promises.push(requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptScr,\n // A share will have an encryptionKeyUrl when it's activity uses a different encryptionKeyUrl. This can happen when old activities are edited\n // and key rotation is turn on.\n [share.encryptionKeyUrl || activity.encryptionKeyUrl, share.scr || share.sslr, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedSCR) => {\n if (share.scr) {\n share.scr = decryptedSCR;\n }\n else {\n share.sslr = decryptedSCR.loc;\n }\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt file scr or sslr error for activity ${activity.activityId} in container ${activity.targetId} for share type: ${share.mimeType}, size: ${share.fileSize}, and url: ${share.url} due to error: ${reason}`);\n // add error property to activity - this error will be recorded in the downloader and the activity omitted from the report\n activity.error = reason;\n\n return Promise.resolve(object);\n }));\n }\n }\n\n return Promise.all(promises);\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Error retrieving content container for: ${activity.activityId} in container ${activity.targetId}: ${reason}`);\n // add error property to activity - this error will be recorded in the downloader and the activity omitted from the report\n activity.error = reason;\n\n return Promise.resolve(object);\n });\n }\n\n /**\n * This function is used to decrypt encrypted properties on the containers that are returned from the eDiscovery Service getContentContainer API\n * @param {Object} ctx - An object containing a webex instance and a transform\n * @param {Object} object - Generic object that you want to decrypt some property on based on the type\n * @returns {Promise} - Returns a transform promise\n */\n static decryptReportContentContainer(ctx, object) {\n if (!object || !object.body) {\n return Promise.resolve();\n }\n const container = object.body;\n\n if (!container.containerName) {\n return Promise.resolve(object);\n }\n\n if (!container.encryptionKeyUrl) {\n // If the encryptionKeyUrl is empty we assume the container name is unencrypted\n ctx.webex.logger.info(`${container.containerType} container ${container.containerId} cannot be decrypted due to a missing encryption key url`);\n\n return Promise.resolve(object);\n }\n\n if (!container.onBehalfOfUser) {\n const reason = `No user available with which to decrypt ${container.containerType} container ${container.containerId}`;\n\n ctx.webex.logger.error(reason);\n container.error = reason;\n\n return Promise.resolve(object);\n }\n\n // decrypt description if present with a descriptionEncryptionKeyUrl\n if (container.description && container.descriptionEncryptionKeyUrl) {\n requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [container.descriptionEncryptionKeyUrl, container.description, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedContainerDescription) => {\n container.description = decryptedContainerDescription;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt container description error for ${container.containerType} container ${container.containerId}: ${reason}`);\n // add warn property to container info - this warning will be recorded in the downloader\n container.warning = reason;\n // don't return, attempt to decrypt the name first\n });\n }\n\n return requestWithRetries(ctx.webex.internal.encryption, ctx.webex.internal.encryption.decryptText,\n [container.encryptionKeyUrl, container.containerName, {onBehalfOf: container.onBehalfOfUser}])\n .then((decryptedContainerName) => {\n container.containerName = decryptedContainerName;\n })\n .catch((reason) => {\n ctx.webex.logger.error(`Decrypt container name error for ${container.containerType} container ${container.containerId}: ${reason}`);\n // add warn property to container info - this warning will be recorded in the downloader\n container.warning = reason;\n\n return Promise.resolve(object);\n });\n }\n}\n\nexport default Transforms;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,31 +1,39 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
"
|
|
30
|
-
|
|
2
|
+
"name": "@webex/internal-plugin-ediscovery",
|
|
3
|
+
"version": "2.29.5",
|
|
4
|
+
"description": "",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"contributors": [
|
|
7
|
+
"Declan Ryan <decryan@cisco.com>",
|
|
8
|
+
"Shane Gannon <gannons@cisco.com>",
|
|
9
|
+
"Vincent Canning <vcanning@cisco.com>"
|
|
10
|
+
],
|
|
11
|
+
"main": "dist/index.js",
|
|
12
|
+
"devMain": "src/index.js",
|
|
13
|
+
"repository": "https://github.com/webex/webex-js-sdk/tree/master/packages/@webex/ediscovery",
|
|
14
|
+
"engines": {
|
|
15
|
+
"node": ">=14"
|
|
16
|
+
},
|
|
17
|
+
"browserify": {
|
|
18
|
+
"transform": [
|
|
19
|
+
"babelify",
|
|
20
|
+
"envify"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@webex/test-helper-chai": "workspace:^",
|
|
25
|
+
"@webex/test-helper-mock-webex": "workspace:^",
|
|
26
|
+
"@webex/test-helper-test-users": "workspace:^",
|
|
27
|
+
"sinon": "^9.2.4"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@webex/common": "workspace:^",
|
|
31
|
+
"@webex/internal-plugin-conversation": "workspace:^",
|
|
32
|
+
"@webex/internal-plugin-ediscovery": "workspace:^",
|
|
33
|
+
"@webex/internal-plugin-encryption": "workspace:^",
|
|
34
|
+
"@webex/internal-plugin-mercury": "workspace:^",
|
|
35
|
+
"@webex/webex-core": "workspace:^",
|
|
36
|
+
"lodash": "^4.17.21",
|
|
37
|
+
"uuid": "^3.3.2"
|
|
38
|
+
}
|
|
31
39
|
}
|
package/src/config.js
CHANGED
package/src/index.js
CHANGED
|
@@ -156,6 +156,7 @@ registerInternalPlugin('ediscovery', EDiscovery, {
|
|
|
156
156
|
|
|
157
157
|
export default EDiscovery;
|
|
158
158
|
|
|
159
|
+
// eslint-disable-next-line import/named
|
|
159
160
|
export {config} from './config';
|
|
160
161
|
export {default as ReportRequest} from './report-request';
|
|
161
162
|
export {EdiscoveryError, InvalidEmailAddressError} from './ediscovery-error';
|
package/src/transforms.js
CHANGED
|
@@ -6,7 +6,7 @@ import {requestWithRetries} from './retry';
|
|
|
6
6
|
class Transforms {
|
|
7
7
|
/**
|
|
8
8
|
* This function is used to encrypt sensitive properties on the ReportRequest before it is sent to the eDiscovery Service createReport API
|
|
9
|
-
* @param {Object} ctx - An object
|
|
9
|
+
* @param {Object} ctx - An object containing a webex instance and a transform
|
|
10
10
|
* @param {Object} object - Generic object that you want to encrypt some property on based on the type
|
|
11
11
|
* @returns {Promise} - Returns a transform promise
|
|
12
12
|
*/
|
|
@@ -87,7 +87,7 @@ class Transforms {
|
|
|
87
87
|
|
|
88
88
|
/**
|
|
89
89
|
* This function is used to decrypt encrypted properties on the ReportRequest that is returned from the eDiscovery Service getReport(s) API
|
|
90
|
-
* @param {Object} ctx - An object
|
|
90
|
+
* @param {Object} ctx - An object containing a webex instance and a transform
|
|
91
91
|
* @param {Object} object - Generic object that you want to decrypt some property on based on the type
|
|
92
92
|
* @returns {Promise} - Returns a transform promise
|
|
93
93
|
*/
|
|
@@ -162,7 +162,7 @@ class Transforms {
|
|
|
162
162
|
|
|
163
163
|
/**
|
|
164
164
|
* This function is used to decrypt encrypted properties on the activities that are returned from the eDiscovery Service getContent API
|
|
165
|
-
* @param {Object} ctx - An object
|
|
165
|
+
* @param {Object} ctx - An object containing a webex instance and a transform
|
|
166
166
|
* @param {Object} object - Generic object that you want to decrypt some property on based on the type
|
|
167
167
|
* @param {String} reportId - Id of the report for which content is being retrieved
|
|
168
168
|
* @returns {Promise} - Returns a transform promise
|