Added DB record encryption support for SSH/RDP credentials, #3960
Ylian Saint-Hilaire committed
May 10, 2022 at 11:57 UTC
b0c2bcd71501a61668e7a48b543d3a94c891194c
1 file changed
+18
-5
db.js
+18
-5
@@ -504,9 +504,10 @@ module.exports.CreateDB = function (parent, func) {
504
if (data[i] == null) continue;
505
if (data[i].type == 'user') {
506
data[i] = performPartialRecordDecrypt(data[i]);
507
- } else if ((data[i].type == 'node') && (data[i].intelamt != null)) {
508
- data[i].intelamt = performPartialRecordDecrypt(data[i].intelamt);
509
- } else if ((data[i].type == 'mesh') && (data[i].amt != null)) {
507
+ } else if (data[i].type == 'node') {
508
+ data[i] = performPartialRecordDecrypt(data[i]);
509
+ if (data[i].intelamt) { data[i].intelamt = performPartialRecordDecrypt(data[i].intelamt); }
510
+ } else if ((data[i].type == 'mesh') && (data[i].amt)) {
511
data[i].amt = performPartialRecordDecrypt(data[i].amt);
512
}
513
}
@@ -517,7 +518,12 @@ module.exports.CreateDB = function (parent, func) {
518
function performTypedRecordEncrypt(data) {
519
if (obj.dbRecordsEncryptKey == null) return data;
520
if (data.type == 'user') { return performPartialRecordEncrypt(Clone(data), ['otpkeys', 'otphkeys', 'otpsecret', 'salt', 'hash', 'oldpasswords']); }
520
- else if ((data.type == 'node') && (data.intelamt != null)) { var xdata = Clone(data); xdata.intelamt = performPartialRecordEncrypt(xdata.intelamt, ['user', 'pass', 'mpspass']); return xdata; }
521
+ else if ((data.type == 'node') && (data.ssh || data.rdp || data.intelamt)) {
522
+ var xdata = Clone(data);
523
+ if (data.ssh || data.rdp) { xdata = performPartialRecordEncrypt(xdata, ['ssh', 'rdp']); }
524
+ if (data.intelamt) { xdata.intelamt = performPartialRecordEncrypt(xdata.intelamt, ['user', 'pass', 'mpspass']); }
525
+ return xdata;
526
+ }
527
else if ((data.type == 'mesh') && (data.amt != null)) { var xdata = Clone(data); xdata.amt = performPartialRecordEncrypt(xdata.amt, ['password']); return xdata; }
528
return data;
529
}
@@ -526,7 +532,14 @@ module.exports.CreateDB = function (parent, func) {
532
function performPartialRecordEncrypt(plainobj, encryptNames) {
533
if (typeof plainobj != 'object') return plainobj;
534
var enc = {}, enclen = 0;
529
- for (var i in encryptNames) { if (plainobj[encryptNames[i]] != null) { enclen++; enc[encryptNames[i]] = plainobj[encryptNames[i]]; delete plainobj[encryptNames[i]]; } }
535
+ for (var i in encryptNames) {
536
+ if (plainobj[encryptNames[i]] != null) {
537
+ console.log('ENCRYPT', encryptNames[i]);
538
+ enclen++;
539
+ enc[encryptNames[i]] = plainobj[encryptNames[i]];
540
+ delete plainobj[encryptNames[i]];
541
+ }
542
+ }
543
if (enclen > 0) { plainobj._CRYPT = performRecordEncrypt(enc); } else { delete plainobj._CRYPT; }
544
return plainobj;
545
}