From 96b8ce71b62fbacb4d37de3176eaaf726910d0ad Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Tue, 11 May 2021 19:01:44 +0200 Subject: [PATCH 1/3] feat(service-provider-server): use OS DNS for SRV records MONGOSH-733 --- package-lock.json | 10 ++- .../build/src/compile/signable-compiler.ts | 7 +- packages/connectivity-tests/test/atlas.sh | 13 ++++ .../service-provider-server/package-lock.json | 65 ++++++++++++++++++- packages/service-provider-server/package.json | 2 + .../src/cli-service-provider.ts | 6 ++ testing/disable-dns-srv.js | 26 ++++++++ 7 files changed, 124 insertions(+), 5 deletions(-) create mode 100644 testing/disable-dns-srv.js diff --git a/package-lock.json b/package-lock.json index 92783108a9..a0386cc751 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4606,7 +4606,8 @@ "dev": true, "optional": true, "requires": { - "bindings": "^1.5.0" + "bindings": "^1.5.0", + "nan": "^2.12.1" } }, "glob-parent": { @@ -15854,6 +15855,13 @@ "thenify-all": "^1.0.0" } }, + "nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "dev": true, + "optional": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", diff --git a/packages/build/src/compile/signable-compiler.ts b/packages/build/src/compile/signable-compiler.ts index a42dd49ae4..19aa276e53 100644 --- a/packages/build/src/compile/signable-compiler.ts +++ b/packages/build/src/compile/signable-compiler.ts @@ -66,6 +66,10 @@ export class SignableCompiler { path: await findModulePath('service-provider-server', 'mongodb-client-encryption'), requireRegexp: /\bmongocrypt\.node$/ }; + const osDnsAddon = { + path: await findModulePath('service-provider-server', 'os-dns-native'), + requireRegexp: /\bos_dns_native\.node$/ + }; const winCAAddon = process.platform === 'win32' ? { path: await findModulePath('cli-repl', 'win-export-certificate-and-key'), requireRegexp: /\bwin_export_cert\.node$/ @@ -93,7 +97,8 @@ export class SignableCompiler { AWS_SECRET_ACCESS_KEY: process.env.DEVTOOLS_CI_AWS_SECRET }, addons: [ - fleAddon + fleAddon, + osDnsAddon ].concat(winCAAddon ? [ winCAAddon ] : []).concat(macKeychainAddon ? [ diff --git a/packages/connectivity-tests/test/atlas.sh b/packages/connectivity-tests/test/atlas.sh index 064cb7b4ef..da31a3b9f0 100644 --- a/packages/connectivity-tests/test/atlas.sh +++ b/packages/connectivity-tests/test/atlas.sh @@ -129,11 +129,24 @@ function test_data_lake() { check_failed } +function test_srv_without_nodejs_dns() { + printf "test_srv_without_nodejs_dns ... " + + CONNECTION_STRING="mongodb+srv://${ATLAS_USERNAME}:${ATLAS_PASSWORD}@${ATLAS_HOSTNAME}/admin" + + echo "${CONNECTION_STATUS_COMMAND}" | NODE_OPTIONS="-r ${MONGOSH_ROOT_DIR}/testing/disable-dns-srv.js" mongosh "${CONNECTION_STRING}" | + grep -Fq "${CONNECTION_STATUS_CHECK_STRING}" || + FAILED="Can't connect to Atlas using connection string without Node.js SRV/TXT DNS support" + + check_failed +} + test_connection_string test_atlas_in_logs test_credentials_masking test_cli_args test_password_prompt test_data_lake +test_srv_without_nodejs_dns echo "All Atlas tests are passing" diff --git a/packages/service-provider-server/package-lock.json b/packages/service-provider-server/package-lock.json index ff494d0753..b0ab4367d0 100644 --- a/packages/service-provider-server/package-lock.json +++ b/packages/service-provider-server/package-lock.json @@ -74,7 +74,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, "requires": { "file-uri-to-path": "1.0.0" } @@ -180,8 +179,7 @@ "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, "fs-constants": { "version": "1.0.0", @@ -234,6 +232,11 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "optional": true }, + "ipv6-normalize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ipv6-normalize/-/ipv6-normalize-1.0.1.tgz", + "integrity": "sha1-GzJYKQ02X6gyOeiZB93kWS52IKg=" + }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -249,6 +252,11 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "optional": true }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, "memory-pager": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", @@ -315,6 +323,11 @@ "semver": "^5.4.1" } }, + "node-addon-api": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", + "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==" + }, "noop-logger": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", @@ -354,6 +367,16 @@ "wrappy": "1" } }, + "os-dns-native": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-dns-native/-/os-dns-native-1.0.2.tgz", + "integrity": "sha512-8G9i25l5xN7isqMJ91kXTgC2/kndlogazNz+Ems0AhzzgkLAQcsA0/JOKvONkcSa0qY3XRt3gkNxGAcXLBNPpw==", + "requires": { + "bindings": "^1.5.0", + "ipv6-normalize": "^1.0.1", + "node-addon-api": "^3.1.0" + } + }, "prebuild-install": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.0.1.tgz", @@ -393,6 +416,11 @@ "once": "^1.3.1" } }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -428,6 +456,14 @@ } } }, + "resolve-mongodb-srv": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-mongodb-srv/-/resolve-mongodb-srv-1.0.1.tgz", + "integrity": "sha512-ZJCe1E7LMyxDvKtg/sRkVIK/X+tJrPvoP6tHd8oxDYx/xlBybruto4L+G/rQ4u/fdAgrBEk+dk8/yr5Lv6cXXw==", + "requires": { + "whatwg-url": "^8.5.0" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -576,6 +612,14 @@ } } }, + "tr46": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", + "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "requires": { + "punycode": "^2.1.1" + } + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -591,6 +635,21 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "optional": true }, + "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.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.5.0.tgz", + "integrity": "sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg==", + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.0.2", + "webidl-conversions": "^6.1.0" + } + }, "which-pm-runs": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", diff --git a/packages/service-provider-server/package.json b/packages/service-provider-server/package.json index 1a97e14756..6aa466dbf9 100644 --- a/packages/service-provider-server/package.json +++ b/packages/service-provider-server/package.json @@ -44,6 +44,8 @@ "@types/sinon-chai": "^3.2.3", "aws4": "^1.11.0", "mongodb": "4.0.0-beta.3", + "os-dns-native": "^1.0.2", + "resolve-mongodb-srv": "^1.0.1", "saslprep": "mongodb-js/saslprep#v1.0.4" }, "devDependencies": { diff --git a/packages/service-provider-server/src/cli-service-provider.ts b/packages/service-provider-server/src/cli-service-provider.ts index dea27b1adc..91a18e5b7c 100644 --- a/packages/service-provider-server/src/cli-service-provider.ts +++ b/packages/service-provider-server/src/cli-service-provider.ts @@ -80,6 +80,9 @@ import { isFastFailureConnectionError } from '@mongosh/service-provider-core'; +import resolveMongodbSrv from 'resolve-mongodb-srv'; +import osDns from 'os-dns-native'; + import { MongoshCommandFailed, MongoshInternalError, MongoshRuntimeError } from '@mongosh/errors'; const bsonlib = { @@ -182,6 +185,9 @@ export async function connectMongoClient(uri: string, clientOptions: MongoClient } await client.close(); } + if (uri.startsWith('mongodb+srv://')) { + uri = await resolveMongodbSrv(uri, { dns: osDns.withNodeFallback }); + } const client = new MClient(uri, clientOptions); await connectWithFailFast(client); return client; diff --git a/testing/disable-dns-srv.js b/testing/disable-dns-srv.js new file mode 100644 index 0000000000..7f75a0cef1 --- /dev/null +++ b/testing/disable-dns-srv.js @@ -0,0 +1,26 @@ +'use strict'; +const dns = require('dns'); +console.log('!!! Disabling SRV and TXT DNS queries through the Node.js API !!!'); + +const origResolve = dns.resolve; +const origPromiseResolve = dns.promises.resolve; +const err = Object.assign(new Error('SRV and TXT not available'), { code: 'ENODATA' }); + +dns.resolve = (hostname, type, cb) => { + if (type === 'SRV' || type === 'TXT') + return process.nextTick(cb, err); + return origResolve(hostname, type, cb); +}; +dns.resolveSrv = (hostname, cb) => { + return process.nextTick(cb, err); +}; +dns.resolveTxt = (hostname, cb) => { + return process.nextTick(cb, err); +}; +dns.promises.resolve = async(hostname, type) => { + if (type === 'SRV' || type === 'TXT') + throw err; + await origPromiseResolve; +}; +dns.promises.resolveSrv = () => Promise.reject(err); +dns.promises.resolveTxt = () => Promise.reject(err); From afdd2a26b961f3e8663f70cf2bcd3befd8a2cd81 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Tue, 11 May 2021 20:20:36 +0200 Subject: [PATCH 2/3] fixup: addon is optional dependency --- packages/service-provider-server/package.json | 6 ++-- .../src/cli-service-provider.ts | 29 +++++++++++++++---- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/packages/service-provider-server/package.json b/packages/service-provider-server/package.json index 6aa466dbf9..56132a03a8 100644 --- a/packages/service-provider-server/package.json +++ b/packages/service-provider-server/package.json @@ -44,14 +44,14 @@ "@types/sinon-chai": "^3.2.3", "aws4": "^1.11.0", "mongodb": "4.0.0-beta.3", - "os-dns-native": "^1.0.2", - "resolve-mongodb-srv": "^1.0.1", "saslprep": "mongodb-js/saslprep#v1.0.4" }, "devDependencies": { "@types/bl": "^2.1.0" }, "optionalDependencies": { - "mongodb-client-encryption": "^1.2.3" + "mongodb-client-encryption": "^1.2.3", + "os-dns-native": "^1.0.2", + "resolve-mongodb-srv": "^1.0.1" } } diff --git a/packages/service-provider-server/src/cli-service-provider.ts b/packages/service-provider-server/src/cli-service-provider.ts index 91a18e5b7c..39d19a15f8 100644 --- a/packages/service-provider-server/src/cli-service-provider.ts +++ b/packages/service-provider-server/src/cli-service-provider.ts @@ -80,9 +80,6 @@ import { isFastFailureConnectionError } from '@mongosh/service-provider-core'; -import resolveMongodbSrv from 'resolve-mongodb-srv'; -import osDns from 'os-dns-native'; - import { MongoshCommandFailed, MongoshInternalError, MongoshRuntimeError } from '@mongosh/errors'; const bsonlib = { @@ -159,6 +156,28 @@ async function connectWithFailFast(client: MongoClient): Promise { } } +let resolveDnsHelpers: { + resolve: typeof import('resolve-mongodb-srv'), + osDns: typeof import('os-dns-native') +} | undefined = undefined; + +async function resolveMongodbSrv(uri: string): Promise { + if (uri.startsWith('mongodb+srv://')) { + try { + resolveDnsHelpers ??= { + resolve: require('resolve-mongodb-srv'), + osDns: require('os-dns-native') + }; + } catch { /* ignore */ } + if (resolveDnsHelpers !== undefined) { + return await resolveDnsHelpers.resolve(uri, { + dns: resolveDnsHelpers.osDns.withNodeFallback + }); + } + } + return uri; +} + /** * Connect a MongoClient. If AutoEncryption is requested, first connect without the encryption options and verify that * the connection is to an enterprise cluster. If not, then error, otherwise close the connection and reconnect with the @@ -185,9 +204,7 @@ export async function connectMongoClient(uri: string, clientOptions: MongoClient } await client.close(); } - if (uri.startsWith('mongodb+srv://')) { - uri = await resolveMongodbSrv(uri, { dns: osDns.withNodeFallback }); - } + uri = await resolveMongodbSrv(uri); const client = new MClient(uri, clientOptions); await connectWithFailFast(client); return client; From 026a39ff57732b2fde19a2e25362b48ecd75e902 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Tue, 11 May 2021 21:45:43 +0200 Subject: [PATCH 3/3] fixup: work around node-addon-api bug --- .../service-provider-server/package-lock.json | 29 +++++++++++++------ packages/service-provider-server/package.json | 2 +- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/packages/service-provider-server/package-lock.json b/packages/service-provider-server/package-lock.json index b0ab4367d0..0965664d87 100644 --- a/packages/service-provider-server/package-lock.json +++ b/packages/service-provider-server/package-lock.json @@ -74,6 +74,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, "requires": { "file-uri-to-path": "1.0.0" } @@ -179,7 +180,8 @@ "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true }, "fs-constants": { "version": "1.0.0", @@ -235,7 +237,8 @@ "ipv6-normalize": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ipv6-normalize/-/ipv6-normalize-1.0.1.tgz", - "integrity": "sha1-GzJYKQ02X6gyOeiZB93kWS52IKg=" + "integrity": "sha1-GzJYKQ02X6gyOeiZB93kWS52IKg=", + "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", @@ -255,7 +258,8 @@ "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "optional": true }, "memory-pager": { "version": "1.5.0", @@ -326,7 +330,8 @@ "node-addon-api": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", - "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==" + "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==", + "optional": true }, "noop-logger": { "version": "0.1.1", @@ -368,9 +373,10 @@ } }, "os-dns-native": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-dns-native/-/os-dns-native-1.0.2.tgz", - "integrity": "sha512-8G9i25l5xN7isqMJ91kXTgC2/kndlogazNz+Ems0AhzzgkLAQcsA0/JOKvONkcSa0qY3XRt3gkNxGAcXLBNPpw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/os-dns-native/-/os-dns-native-1.0.3.tgz", + "integrity": "sha512-mAkA8SmvbaHqAfScwqZ0bg0W88oe2os/gYWRhleU8ZakjGigeEZEv/HgwRx/tFyc6+O8b6SZ2yaoPrZPdrX6Fg==", + "optional": true, "requires": { "bindings": "^1.5.0", "ipv6-normalize": "^1.0.1", @@ -419,7 +425,8 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "optional": true }, "rc": { "version": "1.2.8", @@ -460,6 +467,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-mongodb-srv/-/resolve-mongodb-srv-1.0.1.tgz", "integrity": "sha512-ZJCe1E7LMyxDvKtg/sRkVIK/X+tJrPvoP6tHd8oxDYx/xlBybruto4L+G/rQ4u/fdAgrBEk+dk8/yr5Lv6cXXw==", + "optional": true, "requires": { "whatwg-url": "^8.5.0" } @@ -616,6 +624,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "optional": true, "requires": { "punycode": "^2.1.1" } @@ -638,12 +647,14 @@ "webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "optional": true }, "whatwg-url": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.5.0.tgz", "integrity": "sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg==", + "optional": true, "requires": { "lodash": "^4.7.0", "tr46": "^2.0.2", diff --git a/packages/service-provider-server/package.json b/packages/service-provider-server/package.json index 56132a03a8..9d27c1b7e8 100644 --- a/packages/service-provider-server/package.json +++ b/packages/service-provider-server/package.json @@ -51,7 +51,7 @@ }, "optionalDependencies": { "mongodb-client-encryption": "^1.2.3", - "os-dns-native": "^1.0.2", + "os-dns-native": "^1.0.3", "resolve-mongodb-srv": "^1.0.1" } }