Add support to connect to third-party mongodb instance via tls
This commit is contained in:
parent
c7a117fd31
commit
2a075877a8
|
@ -0,0 +1,32 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIFgjCCA2qgAwIBAgIRAKLlzz8ks03ehk6VrsxTbjQwDQYJKoZIhvcNAQELBQAw
|
||||
WTEVMBMGA1UEChMMRGlnaXRhbE9jZWFuMUAwPgYDVQQDEzdtb25nb2RiIENsdXN0
|
||||
ZXIgQ0E6YTJlNWNmM2YtMjRiMy00ZGRlLTg2NGUtOTVhZWNjNTM2ZTM0MB4XDTIx
|
||||
MDgwNzEyMDQzN1oXDTQxMDgwNzEyMDQzN1owWTEVMBMGA1UEChMMRGlnaXRhbE9j
|
||||
ZWFuMUAwPgYDVQQDEzdtb25nb2RiIENsdXN0ZXIgQ0E6YTJlNWNmM2YtMjRiMy00
|
||||
ZGRlLTg2NGUtOTVhZWNjNTM2ZTM0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
|
||||
CgKCAgEAw4BpmDYtsVfy82bp+/AoW/3wYGAUOMItI/U0ZTMTqf/D8+B/7WHEcLf/
|
||||
xYTFcvNnrBL8f2Q+rlfTMK0TIFYtI9rs7ptGKSmhi59PdHdFMjrMlEitCmF6qmlr
|
||||
TlG4+6mh27N2eEX8oDnQSsudSEzNePGbEXXUdg+uf7JSo5yP1T3QIr4kOgQ6yMQ9
|
||||
ScS7PCj/hgIsurG6vqoUt0wrYxfg+XiCpTqfN6Q1HO+nOzATNM5ayyixX3z0Azx3
|
||||
4wwTv96yIhyrjpgHuZNlP8rkh/NA0Cu0HmVPt8J66uLBp/Qu0DAK0fBtKh2knNDW
|
||||
WeYAtSvnGoRNxz4oJGE1J1KAgCkfu9jj76LkJ3iH9uIgO3D1mDrz9fjZvxRNps7V
|
||||
AJQjJt7EHKNn49z0putiJW4pUtreTIONYymYMLf7eYf7ts/hYN5S6XmIQ0fffWgY
|
||||
FpjP+qX1M/3GbRcbJaJUh6zgfDOYmPgt/7/1BGMc/QG1wjvxEkxrEfNg/lzzJ9cY
|
||||
IfgNANbEV8nnkfcjZKdHT2AIucN68FiohLPISpNjvSlcEeSa+rmzvSKMgM42gcoS
|
||||
Nty3l/D1dk3TFsrEAMye2OwrzgYG5Da3sl5r9RUInmRMDfWkUjyukqsUyKbuJ8aZ
|
||||
seSjFYRCS+WWgOVYhawFK7MdI5cSsD28CbptKr3nK4fertnGI+cCAwEAAaNFMEMw
|
||||
DgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFARj
|
||||
0ZGTveARlnErOXv15Y0822YlMA0GCSqGSIb3DQEBCwUAA4ICAQAfNU3sPE3gCplN
|
||||
iioXGnphcBagtw21ncaksGXwdoo+xB36S1iNRd0H3yhvp3AguAF7SuoFTPKfHbGZ
|
||||
vYu53B9gZ7FZtGl/noiyPHPpzbP+qvTOldYStuQaLL8p1SIBFE/fyTsBBA7TuZPx
|
||||
FT9GHP8zmKeFsQ8UqJQYh2KhjyxJGyXIhFj6uxx92DnAI25AL/9HM0pz1j8rYObV
|
||||
aMlxMc9fEtrklZdkKZb47L4RjeG8MvmNW9Wb9xWtau5gtQmmmFdql2VTaFPlkEG0
|
||||
+ptg1ccmO0Y0OTWBGyyo5Apf1X84YK1oJ43rFVuS7KF1QxPGvITia2GA1l4TT+eQ
|
||||
H2z4TVGGaTxUYjFTLtTXMaGCbu0wIoUxgzX3aZ1gW0f3XoPMM5f79+EMAwvu9ZS3
|
||||
2ZaK8lV73TDl6e319gJzlqlFAQa90KTjRpxSa0mGkliC97gyzXA5HXSd0pGhQaur
|
||||
5hqKHNPn/cnAtimOk67Uw71LXyfxKQencR8vL0pcXNbMCTazswvfUooA2djoY0hd
|
||||
rqbFiVgYpXf14O9GISrFQxGF9TFU3xRSek/nhG2Pndrp2XoBavy9TXRrGJYuJBnA
|
||||
RXdTYwn2bELaN57U6HC5g58hVOUoBLQrcB99Uy62Z4Jt2dK5TBz4cXf3wYhEkWLd
|
||||
D8KMqxTOSuI8hcfo7uOrohMHEciL5A==
|
||||
-----END CERTIFICATE-----
|
|
@ -20,6 +20,7 @@
|
|||
"date-fns": "^2.22.1",
|
||||
"fs-extra": "^10.0.0",
|
||||
"level": "^7.0.0",
|
||||
"mongodb": "^4.1.0",
|
||||
"nodemailer": "^6.6.1",
|
||||
"stripe": "^8.150.0",
|
||||
"ts-node": "^10.0.0",
|
||||
|
@ -1207,6 +1208,20 @@
|
|||
"stripe": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/webidl-conversions": {
|
||||
"version": "6.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz",
|
||||
"integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q=="
|
||||
},
|
||||
"node_modules/@types/whatwg-url": {
|
||||
"version": "8.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz",
|
||||
"integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==",
|
||||
"dependencies": {
|
||||
"@types/node": "*",
|
||||
"@types/webidl-conversions": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@ungap/promise-all-settled": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
|
||||
|
@ -1416,6 +1431,40 @@
|
|||
"integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/bson": {
|
||||
"version": "4.4.1",
|
||||
"resolved": "https://registry.npmjs.org/bson/-/bson-4.4.1.tgz",
|
||||
"integrity": "sha512-Uu4OCZa0jouQJCKOk1EmmyqtdWAP5HVLru4lQxTwzJzxT+sJ13lVpEZU/MATDxtHiekWMAL84oQY3Xn1LpJVSg==",
|
||||
"dependencies": {
|
||||
"buffer": "^5.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bson/node_modules/buffer": {
|
||||
"version": "5.7.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
|
||||
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"base64-js": "^1.3.1",
|
||||
"ieee754": "^1.1.13"
|
||||
}
|
||||
},
|
||||
"node_modules/buffer": {
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
|
||||
|
@ -1718,6 +1767,14 @@
|
|||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/denque": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz",
|
||||
"integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==",
|
||||
"engines": {
|
||||
"node": ">=0.10"
|
||||
}
|
||||
},
|
||||
"node_modules/diff": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
|
||||
|
@ -2351,6 +2408,11 @@
|
|||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/lodash": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||
},
|
||||
"node_modules/log-symbols": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz",
|
||||
|
@ -2373,6 +2435,12 @@
|
|||
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
|
||||
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
|
||||
},
|
||||
"node_modules/memory-pager": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
|
||||
"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/minimalistic-assert": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
|
||||
|
@ -2457,6 +2525,31 @@
|
|||
"url": "https://opencollective.com/mochajs"
|
||||
}
|
||||
},
|
||||
"node_modules/mongodb": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.1.0.tgz",
|
||||
"integrity": "sha512-Gx9U9MsFWgJ3E0v4oHAdWvYTGBznNYPCkhmD/3i/kPTY/URnPfHD5/6VoKUFrdgQTK3icFiM9976hVbqCRBO9Q==",
|
||||
"dependencies": {
|
||||
"bson": "^4.4.0",
|
||||
"denque": "^1.5.0",
|
||||
"mongodb-connection-string-url": "^1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.9.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"saslprep": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/mongodb-connection-string-url": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-1.1.2.tgz",
|
||||
"integrity": "sha512-mp5lv4guWuykOpkwNNqQ0tKKytuJUjL/aC/bu/DqoJVWL5NSh4j/u+gJ+EiOdweLujHyq6JZZqcTVipHhL5xRg==",
|
||||
"dependencies": {
|
||||
"@types/whatwg-url": "^8.0.0",
|
||||
"whatwg-url": "^8.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/ms": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||
|
@ -2628,6 +2721,14 @@
|
|||
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
|
||||
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY="
|
||||
},
|
||||
"node_modules/punycode": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
||||
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/pvtsutils": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.2.0.tgz",
|
||||
|
@ -2769,6 +2870,18 @@
|
|||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"node_modules/saslprep": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
|
||||
"integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"sparse-bitfield": "^3.0.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/serialize-javascript": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
|
||||
|
@ -2808,6 +2921,15 @@
|
|||
"source-map": "^0.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/sparse-bitfield": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
|
||||
"integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"memory-pager": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/string_decoder": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
|
||||
|
@ -2901,6 +3023,17 @@
|
|||
"node": ">=8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/tr46": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
|
||||
"integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
|
||||
"dependencies": {
|
||||
"punycode": "^2.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/tree-kill": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
|
||||
|
@ -3096,6 +3229,27 @@
|
|||
"uuid": "dist/bin/uuid"
|
||||
}
|
||||
},
|
||||
"node_modules/webidl-conversions": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
|
||||
"integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
|
||||
"engines": {
|
||||
"node": ">=10.4"
|
||||
}
|
||||
},
|
||||
"node_modules/whatwg-url": {
|
||||
"version": "8.7.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
|
||||
"integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
|
||||
"dependencies": {
|
||||
"lodash": "^4.7.0",
|
||||
"tr46": "^2.1.0",
|
||||
"webidl-conversions": "^6.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/which": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||
|
@ -4325,6 +4479,20 @@
|
|||
"stripe": "*"
|
||||
}
|
||||
},
|
||||
"@types/webidl-conversions": {
|
||||
"version": "6.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz",
|
||||
"integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q=="
|
||||
},
|
||||
"@types/whatwg-url": {
|
||||
"version": "8.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz",
|
||||
"integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==",
|
||||
"requires": {
|
||||
"@types/node": "*",
|
||||
"@types/webidl-conversions": "*"
|
||||
}
|
||||
},
|
||||
"@ungap/promise-all-settled": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
|
||||
|
@ -4484,6 +4652,25 @@
|
|||
"integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
|
||||
"dev": true
|
||||
},
|
||||
"bson": {
|
||||
"version": "4.4.1",
|
||||
"resolved": "https://registry.npmjs.org/bson/-/bson-4.4.1.tgz",
|
||||
"integrity": "sha512-Uu4OCZa0jouQJCKOk1EmmyqtdWAP5HVLru4lQxTwzJzxT+sJ13lVpEZU/MATDxtHiekWMAL84oQY3Xn1LpJVSg==",
|
||||
"requires": {
|
||||
"buffer": "^5.6.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"buffer": {
|
||||
"version": "5.7.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
|
||||
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
|
||||
"requires": {
|
||||
"base64-js": "^1.3.1",
|
||||
"ieee754": "^1.1.13"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
|
||||
|
@ -4701,6 +4888,11 @@
|
|||
"inherits": "^2.0.3"
|
||||
}
|
||||
},
|
||||
"denque": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz",
|
||||
"integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ=="
|
||||
},
|
||||
"diff": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
|
||||
|
@ -5147,6 +5339,11 @@
|
|||
"p-locate": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||
},
|
||||
"log-symbols": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz",
|
||||
|
@ -5166,6 +5363,12 @@
|
|||
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
|
||||
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
|
||||
},
|
||||
"memory-pager": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
|
||||
"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
|
||||
"optional": true
|
||||
},
|
||||
"minimalistic-assert": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
|
||||
|
@ -5230,6 +5433,26 @@
|
|||
"yargs-unparser": "2.0.0"
|
||||
}
|
||||
},
|
||||
"mongodb": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.1.0.tgz",
|
||||
"integrity": "sha512-Gx9U9MsFWgJ3E0v4oHAdWvYTGBznNYPCkhmD/3i/kPTY/URnPfHD5/6VoKUFrdgQTK3icFiM9976hVbqCRBO9Q==",
|
||||
"requires": {
|
||||
"bson": "^4.4.0",
|
||||
"denque": "^1.5.0",
|
||||
"mongodb-connection-string-url": "^1.0.1",
|
||||
"saslprep": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"mongodb-connection-string-url": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-1.1.2.tgz",
|
||||
"integrity": "sha512-mp5lv4guWuykOpkwNNqQ0tKKytuJUjL/aC/bu/DqoJVWL5NSh4j/u+gJ+EiOdweLujHyq6JZZqcTVipHhL5xRg==",
|
||||
"requires": {
|
||||
"@types/whatwg-url": "^8.0.0",
|
||||
"whatwg-url": "^8.4.0"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||
|
@ -5348,6 +5571,11 @@
|
|||
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
|
||||
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY="
|
||||
},
|
||||
"punycode": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
||||
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
|
||||
},
|
||||
"pvtsutils": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.2.0.tgz",
|
||||
|
@ -5437,6 +5665,15 @@
|
|||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"saslprep": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
|
||||
"integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"sparse-bitfield": "^3.0.3"
|
||||
}
|
||||
},
|
||||
"serialize-javascript": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
|
||||
|
@ -5470,6 +5707,15 @@
|
|||
"source-map": "^0.6.0"
|
||||
}
|
||||
},
|
||||
"sparse-bitfield": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
|
||||
"integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"memory-pager": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
|
||||
|
@ -5536,6 +5782,14 @@
|
|||
"is-number": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"tr46": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
|
||||
"integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
|
||||
"requires": {
|
||||
"punycode": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"tree-kill": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
|
||||
|
@ -5657,6 +5911,21 @@
|
|||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
|
||||
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
|
||||
},
|
||||
"webidl-conversions": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
|
||||
"integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w=="
|
||||
},
|
||||
"whatwg-url": {
|
||||
"version": "8.7.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
|
||||
"integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
|
||||
"requires": {
|
||||
"lodash": "^4.7.0",
|
||||
"tr46": "^2.1.0",
|
||||
"webidl-conversions": "^6.1.0"
|
||||
}
|
||||
},
|
||||
"which": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
"date-fns": "^2.22.1",
|
||||
"fs-extra": "^10.0.0",
|
||||
"level": "^7.0.0",
|
||||
"mongodb": "^4.1.0",
|
||||
"nodemailer": "^6.6.1",
|
||||
"stripe": "^8.150.0",
|
||||
"ts-node": "^10.0.0",
|
||||
|
|
|
@ -5,7 +5,7 @@ import { NodePlatform } from "./platform";
|
|||
import { HTTPReceiver } from "./http";
|
||||
import { LevelDBStorage } from "./storage";
|
||||
// import { EmailMessenger } from "./messenger";
|
||||
import { FileSystemStorage } from "./attachment";
|
||||
import { S3Storage } from "./attachment";
|
||||
import { StripeBillingProvider } from "./billing";
|
||||
import { ReplServer } from "./repl";
|
||||
import { NodeLegacyServer } from "./legacy";
|
||||
|
@ -13,6 +13,7 @@ import { MessengerMFAProvider } from "@padloc/core/src/mfa";
|
|||
import { WebAuthnServer } from "./mfa";
|
||||
// import { ConsoleMessenger } from "@padloc/core/src/messenger";
|
||||
import { EmailMessenger } from "./messenger";
|
||||
import { MongoDBStorage } from "./mongodb";
|
||||
|
||||
async function init() {
|
||||
setPlatform(new NodePlatform());
|
||||
|
@ -43,12 +44,30 @@ async function init() {
|
|||
from: process.env.PL_EMAIL_FROM || "",
|
||||
});
|
||||
// const messenger = new ConsoleMessenger();
|
||||
const storage = new LevelDBStorage(process.env.PL_DB_PATH || process.env.PL_DATA_DIR || "data");
|
||||
// const storage = new LevelDBStorage(process.env.PL_DB_PATH || process.env.PL_DATA_DIR || "data");
|
||||
const storage = new MongoDBStorage({
|
||||
host: process.env.PL_DATA_STORAGE_HOST!,
|
||||
tls: process.env.PL_DATA_STORAGE_TLS?.toLocaleLowerCase() === "true",
|
||||
tlsCAFile: process.env.PL_DATA_STORAGE_TLS_CA_FILE,
|
||||
port: process.env.PL_DATA_STORAGE_PORT,
|
||||
protocol: process.env.PL_DATA_STORAGE_PROTOCOL,
|
||||
database: process.env.PL_DATA_STORAGE_DATABASE,
|
||||
username: process.env.PL_DATA_STORAGE_USERNAME!,
|
||||
password: process.env.PL_DATA_STORAGE_PASSWORD!,
|
||||
});
|
||||
await storage.init();
|
||||
|
||||
const logger = new Logger(new LevelDBStorage(process.env.PL_LOG_DIR || "logs"));
|
||||
|
||||
const attachmentStorage = new FileSystemStorage({
|
||||
path: process.env.PL_ATTACHMENTS_PATH || process.env.PL_ATTACHMENTS_DIR || "attachments",
|
||||
// const attachmentStorage = new FileSystemStorage({
|
||||
// path: process.env.PL_ATTACHMENTS_PATH || process.env.PL_ATTACHMENTS_DIR || "attachments",
|
||||
// });
|
||||
const attachmentStorage = new S3Storage({
|
||||
region: process.env.PL_ATTACHMENT_STORAGE_REGION!,
|
||||
endpoint: process.env.PL_ATTACHMENT_STORAGE_ENDPOINT!,
|
||||
accessKeyId: process.env.PL_ATTACHMENT_STORAGE_ACCESS_KEY_ID!,
|
||||
secretAccessKey: process.env.PL_ATTACHMENT_STORAGE_SECRET_ACCESS_KEY!,
|
||||
bucket: process.env.PL_ATTACHMENT_STORAGE_BUCKET!,
|
||||
});
|
||||
// const billingProvider = new StubBillingProvider();
|
||||
|
||||
|
|
|
@ -1,13 +1,41 @@
|
|||
import { MongoClient, Db } from "mongodb";
|
||||
import { Storage, Storable, StorableConstructor, StorageListOptions } from "@padloc/core/src/storage";
|
||||
import { Err, ErrorCode } from "@padloc/core/src/error";
|
||||
import path from "path";
|
||||
|
||||
export interface MongoDBStorageConfig {
|
||||
host: string;
|
||||
port?: string;
|
||||
username: string;
|
||||
password: string;
|
||||
database?: string;
|
||||
protocol?: string;
|
||||
tls?: boolean;
|
||||
tlsCAFile?: string;
|
||||
}
|
||||
|
||||
export class MongoDBStorage implements Storage {
|
||||
readonly config: MongoDBStorageConfig;
|
||||
|
||||
private _client: MongoClient;
|
||||
private _db!: Db;
|
||||
|
||||
constructor() {
|
||||
this._client = new MongoClient("mongodb://localhost:27017");
|
||||
constructor(config: MongoDBStorageConfig) {
|
||||
this.config = config;
|
||||
let { username, password, host, port, protocol = "mongodb", database, tls, tlsCAFile } = config;
|
||||
tlsCAFile = tlsCAFile && path.resolve(process.cwd(), tlsCAFile);
|
||||
console.log(config);
|
||||
this._client = new MongoClient(
|
||||
`${protocol}://${host}${database ? `/${database}` : ""}${port ? `:${port}` : ""}`,
|
||||
{
|
||||
auth: {
|
||||
username,
|
||||
password,
|
||||
},
|
||||
tls,
|
||||
tlsCAFile,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
async init() {
|
||||
|
@ -27,9 +55,7 @@ export class MongoDBStorage implements Storage {
|
|||
|
||||
async save<T extends Storable>(obj: T) {
|
||||
const collection = this._db.collection(obj.kind);
|
||||
console.log("saving data to collection: ", collection);
|
||||
await collection.replaceOne({ _id: obj.id }, { ...obj.toRaw(), _id: obj.id }, { upsert: true });
|
||||
console.log("done saving", await collection.find().toArray());
|
||||
}
|
||||
|
||||
async delete<T extends Storable>(obj: T) {
|
||||
|
|
Loading…
Reference in New Issue