Skip to content

Commit f5e121a

Browse files
authored
Revert "Fix/mongodb options"
1 parent bbc7ce4 commit f5e121a

File tree

3 files changed

+20
-102
lines changed

3 files changed

+20
-102
lines changed

api/configextender.js

+2-78
Original file line numberDiff line numberDiff line change
@@ -26,81 +26,8 @@ const OVERRIDES = {
2626
REPLSETSERVERS: 'replSetServers',
2727
REPLICANAME: 'replicaName',
2828
MAX_POOL_SIZE: 'max_pool_size',
29-
DBOPTIONS: {
30-
__name: "dbOptions",
31-
AUTHMECHANISM: 'authMechanism',
32-
AUTHMECHANISMPROPERTIES: 'authMechanismProperties',
33-
AUTHSOURCE: 'authSource',
34-
AUTOENCRYPTION: 'autoEncryption',
35-
BSONREGEXP: 'bsonRegExp',
36-
CHECKKEYS: 'checkKeys',
37-
CHECKSERVERIDENTITY: 'checkServerIdentity',
38-
CONNECTTIMEOUTMS: 'connectTimeoutMS',
39-
DIRECTCONNECTION: 'directConnection',
40-
DRIVERINFO: 'driverInfo',
41-
ECDHCURVE: 'ecdhCurve',
42-
ENABLEUTF8VALIDATION: 'enableUtf8Validation',
43-
FIELDSASRAW: 'fieldsAsRaw',
44-
FORCESERVEROBJECTID: 'forceServerObjectId',
45-
HEARTBEATFREQUENCYMS: 'heartbeatFrequencyMS',
46-
IGNOREUNDEFINED: 'ignoreUndefined',
47-
KEEPALIVE: 'keepAlive',
48-
KEEPALIVEINITIALDELAY: 'keepAliveInitialDelay',
49-
LOADBALANCED: 'loadBalanced',
50-
LOCALADDRESS: 'localAddress',
51-
LOCALPORT: 'localPort',
52-
LOCALTHRESHOLDMS: 'localThresholdMS',
53-
LOGGERLEVEL: 'loggerLevel',
54-
MAXIDLETIMEMS: 'maxIdleTimeMS',
55-
MAXPOOLSIZE: 'maxPoolSize',
56-
MAXSTALENESSSECONDS: 'maxStalenessSeconds',
57-
MINDHSIZE: 'minDHSize',
58-
MINHEARTBEATFREQUENCYMS: 'minHeartbeatFrequencyMS',
59-
MINPOOLSIZE: 'minPoolSize',
60-
MONITORCOMMANDS: 'monitorCommands',
61-
NODELAY: 'noDelay',
62-
PKFACTORY: 'pkFactory',
63-
PROMISELIBRARY: 'promiseLibrary',
64-
PROMOTEBUFFERS: 'promoteBuffers',
65-
PROMOTELONGS: 'promoteLongs',
66-
PROMOTEVALUES: 'promoteValues',
67-
PROXYHOST: 'proxyHost',
68-
PROXYPASSWORD: 'proxyPassword',
69-
PROXYPORT: 'proxyPort',
70-
PROXYUSERNAME: 'proxyUsername',
71-
READCONCERN: 'readConcern',
72-
READCONCERNLEVEL: 'readConcernLevel',
73-
READPREFERENCE: 'readPreference',
74-
READPREFERENCETAGS: 'readPreferenceTags',
75-
REJECTUNAUTHORIZED: 'rejectUnauthorized',
76-
REPLICASET: 'replicaSet',
77-
RETRYREADS: 'retryReads',
78-
RETRYWRITES: 'retryWrites',
79-
SECURECONTEXT: 'secureContext',
80-
SECUREPROTOCOL: 'secureProtocol',
81-
SERIALIZEFUNCTIONS: 'serializeFunctions',
82-
SERVERAPI: 'serverApi',
83-
SERVERSELECTIONTIMEOUTMS: 'serverSelectionTimeoutMS',
84-
SOCKETTIMEOUTMS: 'socketTimeoutMS',
85-
SRVMAXHOSTS: 'srvMaxHosts',
86-
SRVSERVICENAME: 'srvServiceName',
87-
SSLCA: 'sslCA',
88-
SSLCRL: 'sslCRL',
89-
SSLCERT: 'sslCert',
90-
SSLKEY: 'sslKey',
91-
SSLPASS: 'sslPass',
92-
SSLVALIDATE: 'sslValidate',
93-
TLSALLOWINVALIDCERTIFICATES: 'tlsAllowInvalidCertificates',
94-
TLSALLOWINVALIDHOSTNAMES: 'tlsAllowInvalidHostnames',
95-
TLSCAFILE: 'tlsCAFile',
96-
TLSCERTIFICATEFILE: 'tlsCertificateFile',
97-
TLSCERTIFICATEKEYFILE: 'tlsCertificateKeyFile',
98-
TLSCERTIFICATEKEYFILEPASSWORD: 'tlsCertificateKeyFilePassword',
99-
TLSINSECURE: 'tlsInsecure',
100-
WAITQUEUETIMEOUTMS: 'waitQueueTimeoutMS',
101-
WTIMEOUTMS: 'wtimeoutMS',
102-
ZLIBCOMPRESSIONLEVEL: 'zlibCompressionLevel',
103-
},
29+
DBOPTIONS: 'dbOptions',
30+
SERVEROPTIONS: 'serverOptions'
10431
},
10532

10633
API: {
@@ -139,9 +66,6 @@ function dig(config, over, name, value) {
13966
sub = over[n];
14067
over[n] = {};
14168
}
142-
else if (over[n] && over[n].__name) {
143-
sub = over[n].__name;
144-
}
14569
else {
14670
sub = Object.keys(config).filter(k => k.toUpperCase() === n)[0];
14771
}

plugins/pluginManager.js

+9-24
Original file line numberDiff line numberDiff line change
@@ -1078,12 +1078,8 @@ var pluginManager = function pluginManager() {
10781078
config = config || JSON.parse(JSON.stringify(countlyConfig));
10791079
}
10801080

1081-
if (config && typeof config.mongodb === "string") {
1082-
config.mongodb = {uri: config.mongodb};
1083-
}
1084-
1085-
if (config.mongodb.uri) {
1086-
var dbName = this.replaceDatabaseString(config.mongodb.uri, db);
1081+
if (typeof config.mongodb === 'string') {
1082+
var dbName = this.replaceDatabaseString(config.mongodb, db);
10871083
//remove protocol
10881084
dbName = dbName.split("://").pop();
10891085
if (dbName.indexOf("@") !== -1) {
@@ -1156,13 +1152,12 @@ var pluginManager = function pluginManager() {
11561152
* @returns {string} modified connection string
11571153
**/
11581154
this.replaceDatabaseString = function(str, db) {
1159-
var parts = str.split("?");
1160-
var i = parts[0].lastIndexOf('/countly');
1161-
var k = parts[0].lastIndexOf('/' + db);
1155+
var i = str.lastIndexOf('/countly');
1156+
var k = str.lastIndexOf('/' + db);
11621157
if (i !== k && i !== -1 && db) {
1163-
return parts[0].substr(0, i) + "/" + db + parts[0].substr(i + ('/countly').length);
1158+
return str.substr(0, i) + "/" + db + str.substr(i + ('/countly').length);
11641159
}
1165-
return parts.join("?");
1160+
return str;
11661161
};
11671162

11681163
this.connectToAllDatabases = async() => {
@@ -1222,11 +1217,7 @@ var pluginManager = function pluginManager() {
12221217
}
12231218

12241219
if (config && typeof config.mongodb === "string") {
1225-
config.mongodb = {uri: config.mongodb};
1226-
}
1227-
1228-
if (config.mongodb.uri) {
1229-
var urlParts = url.parse(config.mongodb.uri, true);
1220+
var urlParts = url.parse(config.mongodb, true);
12301221
if (urlParts && urlParts.query && urlParts.query.maxPoolSize) {
12311222
maxPoolSize = urlParts.query.maxPoolSize;
12321223
}
@@ -1249,8 +1240,8 @@ var pluginManager = function pluginManager() {
12491240
useNewUrlParser: true,
12501241
useUnifiedTopology: true
12511242
};
1252-
if (config.mongodb.uri) {
1253-
dbName = this.replaceDatabaseString(config.mongodb.uri, db);
1243+
if (typeof config.mongodb === 'string') {
1244+
dbName = this.replaceDatabaseString(config.mongodb, db);
12541245
}
12551246
else {
12561247
config.mongodb.db = db || config.mongodb.db || 'countly';
@@ -1275,15 +1266,9 @@ var pluginManager = function pluginManager() {
12751266
}
12761267

12771268
if (config.mongodb.username && config.mongodb.password) {
1278-
dbName = dbName.replace('mongodb://', '').replace('mongodb+srv://', '');
12791269
dbName = encodeURIComponent(config.mongodb.username) + ":" + encodeURIComponent(utils.decrypt(config.mongodb.password)) + "@" + dbName;
12801270
}
12811271

1282-
if (config.mongodb.username) {
1283-
dbName = dbName.replace('mongodb://', '').replace('mongodb+srv://', '');
1284-
dbName = encodeURIComponent(config.mongodb.username) + "@" + dbName;
1285-
}
1286-
12871272
if (dbName.indexOf('mongodb://') !== 0 && dbName.indexOf('mongodb+srv://') !== 0) {
12881273
dbName = 'mongodb://' + dbName;
12891274
}

test/2.api/00.read.config.js

+9
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,15 @@ describe('Reading config with ENV extensions', function() {
6464
config.mongodb.should.equal(VALUE);
6565
});
6666

67+
it('should support camel case with JSON object', () => {
68+
let VALUE = '{"ssl": false}',
69+
config = configExtender('API', JSON.parse(JSON.stringify(testConfig)), {COUNTLY_CONFIG_API_MONGODB_SERVEROPTIONS: VALUE});
70+
should.exist(config.mongodb);
71+
should.exist(config.mongodb.serverOptions);
72+
should.exist(config.mongodb.serverOptions.ssl);
73+
config.mongodb.serverOptions.ssl.should.equal(false);
74+
});
75+
6776
it('should support create intermediary object in camelCase', () => {
6877
let VALUE = 'something',
6978
config = configExtender('API', JSON.parse(JSON.stringify(testConfig)), {COUNTLY_CONFIG_API_MONGODB_DBOPTIONS_DEEP_KEY: VALUE});

0 commit comments

Comments
 (0)