diff --git a/packages/cli-repl/package-lock.json b/packages/cli-repl/package-lock.json index b89f5a3206..da294593f9 100644 --- a/packages/cli-repl/package-lock.json +++ b/packages/cli-repl/package-lock.json @@ -482,9 +482,9 @@ "dev": true }, "mongodb-connection-string-url": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.2.0.tgz", - "integrity": "sha512-U0cDxLUrQrl7DZA828CA+o69EuWPWEJTwdMPozyd7cy/dbtncUZczMw7wRHcwMD7oKOn0NM2tF9jdf5FFVW9CA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.3.2.tgz", + "integrity": "sha512-2LkmS0ny7LamAyhEs2Q+zuFFxeGNSc2DaGHBevjqkoPt7bgh+67mg1sFU6awnMsdLKpdEt7zUy466K9x7RsYcQ==", "requires": { "@types/whatwg-url": "^8.2.1", "whatwg-url": "^11.0.0" diff --git a/packages/cli-repl/package.json b/packages/cli-repl/package.json index 04bdd6dc43..cfc29dddd8 100644 --- a/packages/cli-repl/package.json +++ b/packages/cli-repl/package.json @@ -58,7 +58,7 @@ "askpassword": "^1.2.4", "is-recoverable-error": "^1.0.2", "lodash.set": "^4.3.2", - "mongodb-connection-string-url": "^2.2.0", + "mongodb-connection-string-url": "^2.3.2", "mongodb-log-writer": "^1.0.3", "nanobus": "^4.4.0", "pretty-bytes": "^5.3.0", diff --git a/packages/cli-repl/src/smoke-tests.ts b/packages/cli-repl/src/smoke-tests.ts index 52d8f33e8b..28298fa0f3 100644 --- a/packages/cli-repl/src/smoke-tests.ts +++ b/packages/cli-repl/src/smoke-tests.ts @@ -63,9 +63,9 @@ async function runSmokeTest(executable: string, args: string[], input: string, o await once(proc.stdout, 'end'); try { assert.match(stdout, output); - console.error({ status: 'success', input, output, stdout, executable, args: args.map(redactURICredentials) }); + console.error({ status: 'success', input, output, stdout, executable, args: args.map(arg => redactURICredentials(arg)) }); } catch (err) { - console.error({ status: 'failure', input, output, stdout, executable, args: args.map(redactURICredentials) }); + console.error({ status: 'failure', input, output, stdout, executable, args: args.map(arg => redactURICredentials(arg)) }); throw err; } } diff --git a/packages/history/package-lock.json b/packages/history/package-lock.json index 331b89d82e..adc5f2ac4a 100644 --- a/packages/history/package-lock.json +++ b/packages/history/package-lock.json @@ -4,11 +4,39 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/node": { + "version": "16.11.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", + "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==" + }, + "@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": "*" + } + }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "mongodb-connection-string-url": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.3.2.tgz", + "integrity": "sha512-2LkmS0ny7LamAyhEs2Q+zuFFxeGNSc2DaGHBevjqkoPt7bgh+67mg1sFU6awnMsdLKpdEt7zUy466K9x7RsYcQ==", + "requires": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, "mongodb-redact": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/mongodb-redact/-/mongodb-redact-0.2.2.tgz", @@ -16,6 +44,33 @@ "requires": { "lodash": "^4.17.15" } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "requires": { + "punycode": "^2.1.1" + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + }, + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } } } } diff --git a/packages/history/package.json b/packages/history/package.json index a4cbc4a248..5a1b51a899 100644 --- a/packages/history/package.json +++ b/packages/history/package.json @@ -29,6 +29,7 @@ "unitTestsOnly": true }, "dependencies": { - "mongodb-redact": "^0.2.2" + "mongodb-redact": "^0.2.2", + "mongodb-connection-string-url": "^2.3.2" } } diff --git a/packages/history/src/index.ts b/packages/history/src/index.ts index ab89b948e5..c2e5c24f07 100644 --- a/packages/history/src/index.ts +++ b/packages/history/src/index.ts @@ -1,2 +1,2 @@ export { changeHistory, redactSensitiveData, HIDDEN_COMMANDS } from './history'; -export { redactURICredentials } from './redact-credentials'; +export { redactConnectionString as redactURICredentials } from 'mongodb-connection-string-url'; diff --git a/packages/history/src/redact-credentials.spec.ts b/packages/history/src/redact-credentials.spec.ts deleted file mode 100644 index 1831a308a9..0000000000 --- a/packages/history/src/redact-credentials.spec.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { redactURICredentials } from './redact-credentials'; -import { expect } from 'chai'; - -describe('redact credentials', () => { - context('when url contains credentials', () => { - it('returns the in output instead of password', () => { - expect(redactURICredentials('mongodb+srv://admin:catsc@tscat3ca1s@cats-data-sets-e08dy.mongodb.net/admin')) - .to.equal('mongodb+srv://@cats-data-sets-e08dy.mongodb.net/admin'); - }); - - it('returns the in output instead of IAM session token', () => { - expect(redactURICredentials('mongodb+srv://cats-data-sets-e08dy.mongodb.net/admin?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN%3Asampletoken,else%3Amiau¶m=true')) - .to.equal('mongodb+srv://cats-data-sets-e08dy.mongodb.net/admin?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN%3A,else%3Amiau¶m=true'); - expect(redactURICredentials('mongodb+srv://cats-data-sets-e08dy.mongodb.net/admin?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN%3Asampletoken¶m=true')) - .to.equal('mongodb+srv://cats-data-sets-e08dy.mongodb.net/admin?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN%3A¶m=true'); - expect(redactURICredentials('mongodb+srv://cats-data-sets-e08dy.mongodb.net/admin?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN%3Asampletoken')) - .to.equal('mongodb+srv://cats-data-sets-e08dy.mongodb.net/admin?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN%3A'); - }); - - it('returns the in output instead of password and IAM session token', () => { - expect(redactURICredentials('mongodb+srv://admin:tscat3ca1s@cats-data-sets-e08dy.mongodb.net/admin?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN%3Asampletoken¶m=true')) - .to.equal('mongodb+srv://@cats-data-sets-e08dy.mongodb.net/admin?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN%3A¶m=true'); - }); - }); - - context('when url contains no credentials', () => { - it('does not alter input', () => { - expect(redactURICredentials('mongodb://127.0.0.1:27017')).to.equal('mongodb://127.0.0.1:27017'); - }); - }); -}); diff --git a/packages/history/src/redact-credentials.ts b/packages/history/src/redact-credentials.ts deleted file mode 100644 index 3956ca8ebe..0000000000 --- a/packages/history/src/redact-credentials.ts +++ /dev/null @@ -1,12 +0,0 @@ -export function redactURICredentials(uri: string): string { - const regexes = [ - // Username and password - /(?<=\/\/)(.*)(?=\@)/g, - // AWS IAM Session Token as part of query parameter - /(?<=AWS_SESSION_TOKEN(:|%3A))([^,&]+)/ - ]; - regexes.forEach(r => { - uri = uri.replace(r, ''); - }); - return uri; -} diff --git a/packages/service-provider-core/package-lock.json b/packages/service-provider-core/package-lock.json index 2409ec0c0c..e53fd933a9 100644 --- a/packages/service-provider-core/package-lock.json +++ b/packages/service-provider-core/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@types/node": { - "version": "16.4.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.11.tgz", - "integrity": "sha512-nWSFUbuNiPKJEe1IViuodSI+9cM+vpM8SWF/O6dJK7wmGRNq55U7XavJHrlRrPkSMuUZUFzg1xaZ1B+ZZCrRWw==" + "version": "16.11.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", + "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==" }, "@types/webidl-conversions": { "version": "6.1.1", @@ -282,36 +282,12 @@ } }, "mongodb-connection-string-url": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.2.0.tgz", - "integrity": "sha512-U0cDxLUrQrl7DZA828CA+o69EuWPWEJTwdMPozyd7cy/dbtncUZczMw7wRHcwMD7oKOn0NM2tF9jdf5FFVW9CA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.3.2.tgz", + "integrity": "sha512-2LkmS0ny7LamAyhEs2Q+zuFFxeGNSc2DaGHBevjqkoPt7bgh+67mg1sFU6awnMsdLKpdEt7zUy466K9x7RsYcQ==", "requires": { "@types/whatwg-url": "^8.2.1", "whatwg-url": "^11.0.0" - }, - "dependencies": { - "tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" - }, - "whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "requires": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - } - } } }, "napi-build-utils": { @@ -603,6 +579,14 @@ } } }, + "tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "requires": { + "punycode": "^2.1.1" + } + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -618,6 +602,20 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "optional": true }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + }, + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", diff --git a/packages/service-provider-core/package.json b/packages/service-provider-core/package.json index 77fc9edf55..33b747c2d8 100644 --- a/packages/service-provider-core/package.json +++ b/packages/service-provider-core/package.json @@ -35,7 +35,7 @@ "bson": "^4.6.0", "mongodb": "^4.2.1", "mongodb-build-info": "^1.2.0", - "mongodb-connection-string-url": "^2.2.0" + "mongodb-connection-string-url": "^2.3.2" }, "optionalDependencies": { "mongodb-client-encryption": "^2.0.0-beta.0" diff --git a/packages/service-provider-server/package-lock.json b/packages/service-provider-server/package-lock.json index 8e3262b1e9..892bb7ccc1 100644 --- a/packages/service-provider-server/package-lock.json +++ b/packages/service-provider-server/package-lock.json @@ -10,9 +10,9 @@ "integrity": "sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw==" }, "@types/node": { - "version": "16.4.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.11.tgz", - "integrity": "sha512-nWSFUbuNiPKJEe1IViuodSI+9cM+vpM8SWF/O6dJK7wmGRNq55U7XavJHrlRrPkSMuUZUFzg1xaZ1B+ZZCrRWw==" + "version": "16.11.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", + "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==" }, "@types/sinon": { "version": "7.5.2", @@ -374,9 +374,9 @@ } }, "mongodb-connection-string-url": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.2.0.tgz", - "integrity": "sha512-U0cDxLUrQrl7DZA828CA+o69EuWPWEJTwdMPozyd7cy/dbtncUZczMw7wRHcwMD7oKOn0NM2tF9jdf5FFVW9CA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.3.2.tgz", + "integrity": "sha512-2LkmS0ny7LamAyhEs2Q+zuFFxeGNSc2DaGHBevjqkoPt7bgh+67mg1sFU6awnMsdLKpdEt7zUy466K9x7RsYcQ==", "requires": { "@types/whatwg-url": "^8.2.1", "whatwg-url": "^11.0.0" diff --git a/packages/service-provider-server/package.json b/packages/service-provider-server/package.json index 8fbc964c43..1a5db5887e 100644 --- a/packages/service-provider-server/package.json +++ b/packages/service-provider-server/package.json @@ -44,7 +44,7 @@ "@types/sinon-chai": "^3.2.3", "aws4": "^1.11.0", "mongodb": "^4.2.1", - "mongodb-connection-string-url": "^2.2.0", + "mongodb-connection-string-url": "^2.3.2", "saslprep": "mongodb-js/saslprep#v1.0.4" }, "optionalDependencies": {