UNPKG

n8n-nodes-base

Version:

Base nodes of n8n

296 lines 18.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VenafiTlsProtectCloud = void 0; const n8n_workflow_1 = require("n8n-workflow"); const CertificateDescription_1 = require("./CertificateDescription"); const CertificateRequestDescription_1 = require("./CertificateRequestDescription"); const GenericFunctions_1 = require("./GenericFunctions"); class VenafiTlsProtectCloud { description = { displayName: 'Venafi TLS Protect Cloud', name: 'venafiTlsProtectCloud', icon: 'file:../venafi.svg', group: ['input'], version: 1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Consume Venafi TLS Protect Cloud API', defaults: { name: 'Venafi TLS Protect Cloud', }, usableAsTool: true, inputs: [n8n_workflow_1.NodeConnectionTypes.Main], outputs: [n8n_workflow_1.NodeConnectionTypes.Main], credentials: [ { name: 'venafiTlsProtectCloudApi', required: true, }, ], properties: [ { displayName: 'Resource', name: 'resource', noDataExpression: true, type: 'options', options: [ { name: 'Certificate', value: 'certificate', }, { name: 'Certificate Request', value: 'certificateRequest', }, ], default: 'certificateRequest', }, ...CertificateDescription_1.certificateOperations, ...CertificateDescription_1.certificateFields, ...CertificateRequestDescription_1.certificateRequestOperations, ...CertificateRequestDescription_1.certificateRequestFields, ], }; methods = { loadOptions: { async getApplications() { const returnData = []; const { applications } = await GenericFunctions_1.venafiApiRequest.call(this, 'GET', '/outagedetection/v1/applications'); for (const application of applications) { returnData.push({ name: application.name, value: application.id, }); } return returnData; }, async getCertificateIssuingTemplates() { const returnData = []; const currentApplication = this.getCurrentNodeParameter('applicationId'); const { certificateIssuingTemplateAliasIdMap } = (await GenericFunctions_1.venafiApiRequest.call(this, 'GET', `/outagedetection/v1/applications/${currentApplication}`)); for (const [templateName, templateId] of Object.entries(certificateIssuingTemplateAliasIdMap)) { returnData.push({ name: templateName, value: templateId, }); } return returnData; }, }, }; async execute() { const items = this.getInputData(); const returnData = []; const length = items.length; const qs = {}; let responseData; const resource = this.getNodeParameter('resource', 0); const operation = this.getNodeParameter('operation', 0); for (let i = 0; i < length; i++) { try { if (resource === 'certificateRequest') { //https://api.venafi.cloud/webjars/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config&urls.primaryName=outagedetection-service#//v1/certificaterequests_create if (operation === 'create') { const applicationId = this.getNodeParameter('applicationId', i); const certificateIssuingTemplateId = this.getNodeParameter('certificateIssuingTemplateId', i); const options = this.getNodeParameter('options', i); const generateCsr = this.getNodeParameter('generateCsr', i); const body = { applicationId, certificateIssuingTemplateId, }; if (generateCsr) { const commonName = this.getNodeParameter('commonName', i); const additionalFields = this.getNodeParameter('additionalFields', i); const keyTypeDetails = {}; const csrAttributes = {}; const subjectAltNamesByType = {}; body.isVaaSGenerated = true; csrAttributes.commonName = commonName; // Csr Generation if (additionalFields.organization) { csrAttributes.organization = additionalFields.organization; } if (additionalFields.organizationalUnits) { csrAttributes.organizationalUnits = additionalFields.organizationalUnits; } if (additionalFields.locality) { csrAttributes.locality = additionalFields.locality; } if (additionalFields.state) { csrAttributes.state = additionalFields.state; } if (additionalFields.country) { csrAttributes.country = additionalFields.country; } body.csrAttributes = csrAttributes; // Key type if (additionalFields.keyType) { keyTypeDetails.keyType = additionalFields.keyType; } if (additionalFields.keyCurve) { keyTypeDetails.keyCurve = additionalFields.keyCurve; } if (additionalFields.keyLength) { keyTypeDetails.keyLength = additionalFields.keyLength; } if (Object.keys(keyTypeDetails).length !== 0) { body.csrAttributes.keyTypeParameters = keyTypeDetails; } // SAN if (additionalFields.SubjectAltNamesUi) { for (const key of additionalFields.SubjectAltNamesUi .SubjectAltNamesValues) { if (key.Typename === 'dnsNames') { subjectAltNamesByType.dnsNames ? subjectAltNamesByType.dnsNames.push(key.name) : (subjectAltNamesByType.dnsNames = [key.name]); } /*if (key.Typename === 'ipAddresses') { subjectAltNamesByType.ipAddresses ? subjectAltNamesByType.ipAddresses.push(key.name as string) : subjectAltNamesByType.ipAddresses = [key.name as string]; } if (key.Typename === 'rfc822Names') { subjectAltNamesByType.rfc822Names ? subjectAltNamesByType.rfc822Names.push(key.name as string) : subjectAltNamesByType.rfc822Names = [key.name as string]; } if (key.Typename === 'uniformResourceIdentifiers') { subjectAltNamesByType.uniformResourceIdentifiers ? subjectAltNamesByType.uniformResourceIdentifiers.push(key.name as string) : subjectAltNamesByType.uniformResourceIdentifiers = [key.name as string]; }*/ } } if (Object.keys(subjectAltNamesByType).length !== 0) { body.csrAttributes.subjectAlternativeNamesByType = subjectAltNamesByType; } } else { const certificateSigningRequest = this.getNodeParameter('certificateSigningRequest', i); body.isVaaSGenerated = false; body.certificateSigningRequest = certificateSigningRequest; } Object.assign(body, options); responseData = await GenericFunctions_1.venafiApiRequest.call(this, 'POST', '/outagedetection/v1/certificaterequests', body, qs); responseData = responseData.certificateRequests; } //https://api.venafi.cloud/webjars/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config&urls.primaryName=outagedetection-service#//v1/certificaterequests_getById if (operation === 'get') { const certificateId = this.getNodeParameter('certificateRequestId', i); responseData = await GenericFunctions_1.venafiApiRequest.call(this, 'GET', `/outagedetection/v1/certificaterequests/${certificateId}`, {}, qs); } //https://api.venafi.cloud/webjars/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config&urls.primaryName=outagedetection-service#//v1/certificaterequests_getAll if (operation === 'getMany') { const returnAll = this.getNodeParameter('returnAll', i); if (returnAll) { responseData = await GenericFunctions_1.venafiApiRequestAllItems.call(this, 'certificateRequests', 'GET', '/outagedetection/v1/certificaterequests', {}, qs); } else { const limit = this.getNodeParameter('limit', i); responseData = await GenericFunctions_1.venafiApiRequest.call(this, 'GET', '/outagedetection/v1/certificaterequests', {}, qs); responseData = responseData.certificateRequests.splice(0, limit); } } } if (resource === 'certificate') { //https://api.venafi.cloud/webjars/swagger-ui/index.html?configUrl=%2Fv3%2Fapi-docs%2Fswagger-config&urls.primaryName=outagedetection-service#/%2Fv1/certificateretirement_deleteCertificates if (operation === 'delete') { const certificateId = this.getNodeParameter('certificateId', i); responseData = await GenericFunctions_1.venafiApiRequest.call(this, 'POST', '/outagedetection/v1/certificates/deletion', { certificateIds: [certificateId] }); responseData = responseData.certificates; } //https://api.venafi.cloud/webjars/swagger-ui/index.html?configUrl=%2Fv3%2Fapi-docs%2Fswagger-config&urls.primaryName=outagedetection-service#/ if (operation === 'download') { const certificateId = this.getNodeParameter('certificateId', i); const binaryProperty = this.getNodeParameter('binaryProperty', i); const downloadItem = this.getNodeParameter('downloadItem', i); const options = this.getNodeParameter('options', i); // Cert Download if (downloadItem === 'certificate') { Object.assign(qs, options); responseData = await GenericFunctions_1.venafiApiRequest.call(this, 'GET', `/outagedetection/v1/certificates/${certificateId}/contents`, {}, qs, { encoding: null, json: false, resolveWithFullResponse: true, cert: true }); } else { const exportFormat = this.getNodeParameter('keystoreType', i); const body = { exportFormat, }; const privateKeyPassphrase = this.getNodeParameter('privateKeyPassphrase', i); const certificateLabel = this.getNodeParameter('certificateLabel', i); body.certificateLabel = certificateLabel; let keystorePassphrase = ''; if (exportFormat === 'JKS') { keystorePassphrase = this.getNodeParameter('keystorePassphrase', i); } const encryptedValues = (await GenericFunctions_1.encryptPassphrase.call(this, certificateId, privateKeyPassphrase, keystorePassphrase)); body.encryptedPrivateKeyPassphrase = encryptedValues[0]; if (exportFormat === 'JKS') { body.encryptedKeystorePassphrase = encryptedValues[1]; } responseData = await GenericFunctions_1.venafiApiRequest.call(this, 'POST', `/outagedetection/v1/certificates/${certificateId}/keystore`, body, {}, { encoding: null, json: false, resolveWithFullResponse: true }); } const contentDisposition = responseData.headers['content-disposition']; const fileNameRegex = /(?<=filename=").*\b/; const match = fileNameRegex.exec(contentDisposition); let fileName = ''; if (match !== null) { fileName = match[0]; } const binaryData = await this.helpers.prepareBinaryData(Buffer.from(responseData.body), fileName); responseData = { json: {}, binary: { [binaryProperty]: binaryData, }, }; } //https://api.venafi.cloud/webjars/swagger-ui/index.html?configUrl=%2Fv3%2Fapi-docs%2Fswagger-config&urls.primaryName=outagedetection-service#/%2Fv1/certificates_getById if (operation === 'get') { const certificateId = this.getNodeParameter('certificateId', i); responseData = await GenericFunctions_1.venafiApiRequest.call(this, 'GET', `/outagedetection/v1/certificates/${certificateId}`, {}, qs); } //https://api.venafi.cloud/webjars/swagger-ui/index.html?configUrl=%2Fv3%2Fapi-docs%2Fswagger-config&urls.primaryName=outagedetection-service#/%2Fv1/certificates_getAllAsCsv if (operation === 'getMany') { const returnAll = this.getNodeParameter('returnAll', i); const filters = this.getNodeParameter('filters', i); Object.assign(qs, filters); if (returnAll) { responseData = await GenericFunctions_1.venafiApiRequestAllItems.call(this, 'certificates', 'GET', '/outagedetection/v1/certificates', {}, qs); } else { qs.limit = this.getNodeParameter('limit', i); responseData = await GenericFunctions_1.venafiApiRequest.call(this, 'GET', '/outagedetection/v1/certificates', {}, qs); responseData = responseData.certificates; } } //https://docs.venafi.cloud/api/t-cloud-api-renew-cert/ if (operation === 'renew') { const applicationId = this.getNodeParameter('applicationId', i); const certificateIssuingTemplateId = this.getNodeParameter('certificateIssuingTemplateId', i); const certificateSigningRequest = this.getNodeParameter('certificateSigningRequest', i); const existingCertificateId = this.getNodeParameter('existingCertificateId', i); const options = this.getNodeParameter('options', i); const body = { certificateSigningRequest, certificateIssuingTemplateId, applicationId, existingCertificateId, }; Object.assign(body, options); responseData = await GenericFunctions_1.venafiApiRequest.call(this, 'POST', '/outagedetection/v1/certificaterequests', body, qs); responseData = responseData.certificateRequests; } } returnData.push(...this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i }, })); } catch (error) { if (this.continueOnFail()) { returnData.push({ json: { error: error.message } }); continue; } throw error; } } return [returnData]; } } exports.VenafiTlsProtectCloud = VenafiTlsProtectCloud; //# sourceMappingURL=VenafiTlsProtectCloud.node.js.map