~/Projects/flow
git clone https://code.lsong.org/flow
Commit
- Commit
- 122b5ba468df473d4534f5539bf405fafc562646
- Author
- Nick O'Leary <[email protected]>
- Date
- 2021-08-23 12:25:56 +0100 +0100
- Diffstat
packages/node_modules/node-red/red.js | 7 ++++++-
Merge pull request #3115 from bartbutenaers/https-settings-as-string Key and certificate as string or buffer
diff --git a/packages/node_modules/node-red/red.js b/packages/node_modules/node-red/red.js index 2b934fb56ee32e4dda8d208352caf8935988a009..5c40d7794ff93a965d86e620139781486ec4e497 100755 --- a/packages/node_modules/node-red/red.js +++ b/packages/node_modules/node-red/red.js @@ -234,8 +234,13 @@ try { // Get the result of the function, because createServer doesn't accept functions as input Promise.resolve(settings.https()).then(function(refreshedHttps) { if (refreshedHttps) { + // The key/cert needs to be updated in the NodeJs http(s) server, when no key/cert is yet available or when the key/cert has changed. + // Note that the refreshed key/cert can be supplied as a string or a buffer. + var updateKey = (server.key == undefined || (Buffer.isBuffer(server.key) && !server.key.equals(refreshedHttps.key)) || (typeof server.key == "string" && server.key != refreshedHttps.key)); + var updateCert = (server.cert == undefined || (Buffer.isBuffer(server.cert) && !server.cert.equals(refreshedHttps.cert)) || (typeof server.cert == "string" && server.cert != refreshedHttps.cert)); + // Only update the credentials in the server when key or cert has changed - if(!server.key || !server.cert || !server.key.equals(refreshedHttps.key) || !server.cert.equals(refreshedHttps.cert)) { + if(updateKey || updateCert) { server.setSecureContext(refreshedHttps); RED.log.info(RED.log._("server.https.settings-refreshed")); }