From 6158236a8bd793b4fda4eb0ec852267f04278d64 Mon Sep 17 00:00:00 2001 From: Cassiano Vailati Date: Sun, 11 Apr 2021 19:26:23 +0200 Subject: [PATCH 1/2] added SSL support to MySQL.credentials and MySQL.node --- .../credentials/MySql.credentials.ts | 56 ++++++++++++++++++- packages/nodes-base/nodes/MySql/MySql.node.ts | 25 ++++++++- 2 files changed, 79 insertions(+), 2 deletions(-) diff --git a/packages/nodes-base/credentials/MySql.credentials.ts b/packages/nodes-base/credentials/MySql.credentials.ts index 7d2e05ed9ebb2..5e9181bc36e8d 100644 --- a/packages/nodes-base/credentials/MySql.credentials.ts +++ b/packages/nodes-base/credentials/MySql.credentials.ts @@ -48,6 +48,60 @@ export class MySql implements ICredentialType { type: 'number' as NodePropertyTypes, default: 10000, description: 'The milliseconds before a timeout occurs during the initial connection to the MySQL server.', - }, + }, + { + displayName: 'SSL', + name: 'ssl', + type: 'boolean' as NodePropertyTypes, + default: false, + }, + { + displayName: 'Server Certificate', + name: 'serverCertificate', + typeOptions: { + alwaysOpenEditWindow: true, + }, + displayOptions: { + show: { + ssl: [ + true, + ], + }, + }, + type: 'string' as NodePropertyTypes, + default: '', + }, + { + displayName: 'Client Private Key', + name: 'clientPrivateKey', + typeOptions: { + alwaysOpenEditWindow: true, + }, + displayOptions: { + show: { + ssl: [ + true, + ], + }, + }, + type: 'string' as NodePropertyTypes, + default: '', + }, + { + displayName: 'Client Certificate', + name: 'clientCertificate', + typeOptions: { + alwaysOpenEditWindow: true, + }, + displayOptions: { + show: { + ssl: [ + true, + ], + }, + }, + type: 'string' as NodePropertyTypes, + default: '', + }, ]; } diff --git a/packages/nodes-base/nodes/MySql/MySql.node.ts b/packages/nodes-base/nodes/MySql/MySql.node.ts index 5015954d98668..687bd0d70c553 100644 --- a/packages/nodes-base/nodes/MySql/MySql.node.ts +++ b/packages/nodes-base/nodes/MySql/MySql.node.ts @@ -175,7 +175,30 @@ export class MySql implements INodeType { throw new Error('No credentials got returned!'); } - const connection = await mysql2.createConnection(credentials); + // Destructuring SSL configuration + const { + ssl, + serverCertificate, + clientCertificate, + clientPrivateKey, + ...baseCredentials + } = credentials; + + if (ssl) { + baseCredentials.ssl = {}; + + if (serverCertificate) { + baseCredentials.ssl.ca = serverCertificate; + } + + // client certificates might not be required + if (clientCertificate || clientPrivateKey) { + baseCredentials.ssl.cert = clientCertificate; + baseCredentials.ssl.key = clientPrivateKey; + } + } + + const connection = await mysql2.createConnection(baseCredentials); const items = this.getInputData(); const operation = this.getNodeParameter('operation', 0) as string; let returnItems = []; From c0557d500ad325ee43194eed7a6e208bfb1e5a35 Mon Sep 17 00:00:00 2001 From: ahsan-virani Date: Wed, 14 Apr 2021 10:35:18 +0200 Subject: [PATCH 2/2] :zap: hide certificate field data, change CA name --- packages/nodes-base/credentials/MySql.credentials.ts | 7 +++++-- packages/nodes-base/nodes/MySql/MySql.node.ts | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/nodes-base/credentials/MySql.credentials.ts b/packages/nodes-base/credentials/MySql.credentials.ts index 5e9181bc36e8d..083fa240fb6bd 100644 --- a/packages/nodes-base/credentials/MySql.credentials.ts +++ b/packages/nodes-base/credentials/MySql.credentials.ts @@ -56,10 +56,11 @@ export class MySql implements ICredentialType { default: false, }, { - displayName: 'Server Certificate', - name: 'serverCertificate', + displayName: 'CA Certificate', + name: 'caCertificate', typeOptions: { alwaysOpenEditWindow: true, + password: true, }, displayOptions: { show: { @@ -76,6 +77,7 @@ export class MySql implements ICredentialType { name: 'clientPrivateKey', typeOptions: { alwaysOpenEditWindow: true, + password: true, }, displayOptions: { show: { @@ -92,6 +94,7 @@ export class MySql implements ICredentialType { name: 'clientCertificate', typeOptions: { alwaysOpenEditWindow: true, + password: true, }, displayOptions: { show: { diff --git a/packages/nodes-base/nodes/MySql/MySql.node.ts b/packages/nodes-base/nodes/MySql/MySql.node.ts index 687bd0d70c553..ac08c6650852a 100644 --- a/packages/nodes-base/nodes/MySql/MySql.node.ts +++ b/packages/nodes-base/nodes/MySql/MySql.node.ts @@ -178,7 +178,7 @@ export class MySql implements INodeType { // Destructuring SSL configuration const { ssl, - serverCertificate, + caCertificate, clientCertificate, clientPrivateKey, ...baseCredentials @@ -187,8 +187,8 @@ export class MySql implements INodeType { if (ssl) { baseCredentials.ssl = {}; - if (serverCertificate) { - baseCredentials.ssl.ca = serverCertificate; + if (caCertificate) { + baseCredentials.ssl.ca = caCertificate; } // client certificates might not be required