diff --git a/server/imports/internal/internal_methods.js b/server/imports/internal/internal_methods.js index 07c1c446cd30a5b673f8c17acf05268604eba309..3374ef2170ea9507d42bb9f6e5269cb2d2040d3b 100644 --- a/server/imports/internal/internal_methods.js +++ b/server/imports/internal/internal_methods.js @@ -17,6 +17,7 @@ const packageJson = require('/package.json'); const mongodbUrlParser = require('parse-mongo-url'); const checkAuthenticationOfConnection = function (connection) { + LOGGER.info('[checkAuthenticationOfConnection]', connection.authenticationType); if (connection.authenticationType !== 'scram_sha_1') delete connection.scram_sha_1; if (connection.authenticationType !== 'mongodb_cr') delete connection.mongodb_cr; if (connection.authenticationType !== 'mongodb_x509') delete connection.mongodb_x509; @@ -31,6 +32,7 @@ const checkAuthenticationOfConnection = function (connection) { export const parseUrl = function (connection) { try { + LOGGER.info('[parseUrl]', connection.url); let parsedUrl = mongodbUrlParser(connection.url); connection.options = connection.options || {}; connection.ssl = connection.ssl || {}; @@ -92,6 +94,7 @@ const checkConnection = function (connection) { }; const saveConnectionToDB = function (connection) { + LOGGER.info('[saveConnectionToDB]', JSON.stringify(connection)); if (connection._id) { Connections.remove({_id: connection._id}); } @@ -101,6 +104,7 @@ const saveConnectionToDB = function (connection) { Meteor.methods({ subscribed(){ + LOGGER.info('[subscriber]', 'setting as subscribed'); Settings.update({}, { $set: {subscribed: true} }); @@ -128,6 +132,7 @@ Meteor.methods({ checkMongoclientVersion(){ try { + LOGGER.info('[checkMongoclientVersion]'); const response = HTTP.get('https://api.github.com/repos/mongoclient/mongoclient/releases/latest', {headers: {"User-Agent": "Mongoclient"}}); if (response && response.data && response.data.name && response.data.name !== packageJson.version) { return "There's a new version of mongoclient: " + response.data.name + ", download here, if you're using docker just use pull for the " + response.data.name + " or latest tag !"; @@ -139,14 +144,17 @@ Meteor.methods({ }, removeSchemaAnalyzeResult(sessionId){ + LOGGER.info('[removeSchemaAnalyzeResult]', sessionId); SchemaAnalyzeResult.remove({sessionId: sessionId}); }, saveActions(action) { + LOGGER.info('[saveActions]', action); Actions.insert(action); }, saveQueryHistory(history) { + LOGGER.info('[saveQueryHistory]', history); const queryHistoryCount = QueryHistory.find({ connectionId: history.connectionId, collectionName: history.collectionName @@ -160,6 +168,7 @@ Meteor.methods({ }, updateDump(dump) { + LOGGER.info('[updateDump]', dump._id, dump.connectionName, dump.connectionId, dump.status); Dumps.update({_id: dump._id}, { $set: { connectionName: dump.connectionName, @@ -173,19 +182,23 @@ Meteor.methods({ }, saveDump(dump) { + LOGGER.info('[saveDump]', dump._id, dump.connectionName, dump.connectionId, dump.status); Dumps.insert(dump); }, updateSettings(settings) { + LOGGER.info('[updateSettings]', JSON.stringify(settings)); Settings.remove({}); Settings.insert(settings); }, saveConnection(connection) { + LOGGER.info('[saveConnection]', JSON.stringify(connection)); saveConnectionToDB(connection) }, checkAndSaveConnection(connection){ + LOGGER.info('[checkAndSaveConnection]', JSON.stringify(connection)); checkConnection(connection); if (!connection.databaseName) { @@ -200,6 +213,7 @@ Meteor.methods({ }, removeConnection(connectionId) { + LOGGER.info('[removeConnection]', connectionId); Connections.remove(connectionId); Dumps.remove({connectionId: connectionId}); QueryHistory.remove({connectionId: connectionId}); diff --git a/server/imports/mongodb/methods_admin.js b/server/imports/mongodb/methods_admin.js index 9bbc50c75289a86b1e53600dc2742cf1f23423b5..d3f2a65e72c972184682b1cd0dbb33f309684cdc 100644 --- a/server/imports/mongodb/methods_admin.js +++ b/server/imports/mongodb/methods_admin.js @@ -9,7 +9,7 @@ import {databasesBySessionId} from "./methods_common"; const proceedQueryExecution = function (methodArray, runOnAdminDB, sessionId) { - LOGGER.info(JSON.stringify(methodArray), runOnAdminDB); + LOGGER.info(JSON.stringify(methodArray), runOnAdminDB, sessionId); let result = Async.runSync(function (done) { try { @@ -35,7 +35,7 @@ const proceedQueryExecution = function (methodArray, runOnAdminDB, sessionId) { } } catch (ex) { - LOGGER.error(methodArray, ex); + LOGGER.error(methodArray, sessionId, ex); done(new Meteor.Error(ex.message), null); } }); @@ -45,7 +45,7 @@ const proceedQueryExecution = function (methodArray, runOnAdminDB, sessionId) { Meteor.methods({ top(sessionId){ - LOGGER.info('[top]'); + LOGGER.info('[top]', sessionId); let result = Async.runSync(function (done) { try { @@ -54,7 +54,7 @@ Meteor.methods({ }); } catch (ex) { - LOGGER.error('[top]', ex); + LOGGER.error('[top]', sessionId, ex); done(new Meteor.Error(ex.message), null); } }); @@ -63,7 +63,7 @@ Meteor.methods({ }, dbStats(sessionId) { - LOGGER.info('[stats]'); + LOGGER.info('[stats]', sessionId); let result = Async.runSync(function (done) { try { @@ -72,7 +72,7 @@ Meteor.methods({ }); } catch (ex) { - LOGGER.error('[stats]', ex); + LOGGER.error('[stats]', sessionId, ex); done(new Meteor.Error(ex.message), null); } }); diff --git a/server/imports/mongodb/methods_collection.js b/server/imports/mongodb/methods_collection.js index ce5fe68d86036729018a6b710863defd638bbae5..d46045feacb2d7af31c39633fdf227f9de084c99 100644 --- a/server/imports/mongodb/methods_collection.js +++ b/server/imports/mongodb/methods_collection.js @@ -11,7 +11,7 @@ import {databasesBySessionId} from "./methods_common"; const proceedMapReduceExecution = function (selectedCollection, map, reduce, options, sessionId) { options = Helper.convertJSONtoBSON(options); - LOGGER.info('[mapReduce]', selectedCollection, map, reduce, options); + LOGGER.info('[mapReduce]', selectedCollection, map, reduce, options, sessionId); let result = Async.runSync(function (done) { try { @@ -32,7 +32,7 @@ const proceedMapReduceExecution = function (selectedCollection, map, reduce, opt }); } catch (ex) { - LOGGER.error('[mapReduce]', ex); + LOGGER.error('[mapReduce]', sessionId, ex); done(new Meteor.Error(ex.message), null); } }); @@ -41,7 +41,7 @@ const proceedMapReduceExecution = function (selectedCollection, map, reduce, opt }; export const proceedQueryExecution = function (selectedCollection, methodArray, sessionId, removeCollectionTopology) { - LOGGER.info(JSON.stringify(methodArray), selectedCollection); + LOGGER.info(JSON.stringify(methodArray), selectedCollection, sessionId); let result = Async.runSync(function (done) { try { @@ -67,7 +67,7 @@ export const proceedQueryExecution = function (selectedCollection, methodArray, } } catch (ex) { - LOGGER.error(methodArray, ex); + LOGGER.error(methodArray, sessionId, ex); done(new Meteor.Error(ex.message), null); } }); diff --git a/server/imports/mongodb/methods_common.js b/server/imports/mongodb/methods_common.js index d62415ccec8006c2e65f3da832e3e7991cc37bf3..792f1c4446c9968ef54c5e82e79e6a3a749b9917 100644 --- a/server/imports/mongodb/methods_common.js +++ b/server/imports/mongodb/methods_common.js @@ -29,13 +29,13 @@ const connectToShell = function (connectionId, sessionId) { const connectionUrl = Helper.getConnectionUrl(connection); const mongoPath = getProperMongo(); - LOGGER.info('[shell]', mongoPath, connectionUrl); + LOGGER.info('[shell]', mongoPath, connectionUrl, sessionId); spawnedShellsBySessionId[sessionId] = spawn(mongoPath, [connectionUrl]); setEventsToShell(connectionId, sessionId); } if (spawnedShellsBySessionId[sessionId]) { - LOGGER.info('[shell]', 'executing command "use ' + connection.databaseName + '" on shell'); + LOGGER.info('[shell]', 'executing command "use ' + connection.databaseName + '" on shell', sessionId); spawnedShellsBySessionId[sessionId].stdin.write('use ' + connection.databaseName + '\n'); } else { @@ -44,7 +44,7 @@ const connectToShell = function (connectionId, sessionId) { } catch (ex) { spawnedShellsBySessionId[sessionId] = null; - LOGGER.error('[shell]', ex); + LOGGER.error('[shell]', sessionId, ex); return {err: new Meteor.Error(ex.message), result: null}; } }; @@ -101,7 +101,7 @@ const proceedConnectingMongodb = function (dbName, sessionId, connectionUrl, con mongodbApi.MongoClient.connect(connectionUrl, connectionOptions, function (mainError, db) { try { if (mainError || !db) { - LOGGER.error(mainError, db); + LOGGER.error(mainError, sessionId, db); done(mainError, db); if (db) db.close(); if (tunnelsBySessionId[sessionId]) { @@ -116,7 +116,7 @@ const proceedConnectingMongodb = function (dbName, sessionId, connectionUrl, con }); } catch (ex) { - LOGGER.error('[connect]', ex); + LOGGER.error('[connect]', sessionId, ex); done(new Meteor.Error(ex.message), null); if (db) db.close(); if (tunnelsBySessionId[sessionId]) { @@ -128,10 +128,10 @@ const proceedConnectingMongodb = function (dbName, sessionId, connectionUrl, con }; const setEventsToShell = function (connectionId, sessionId) { - LOGGER.info('[shell]', 'binding events to shell'); + LOGGER.info('[shell]', 'binding events to shell', connectionId, sessionId); spawnedShellsBySessionId[sessionId].on('error', Meteor.bindEnvironment(function (err) { - LOGGER.error('unexpected error on spawned shell: ' + err); + LOGGER.error('unexpected error on spawned shell: ' + err, sessionId); spawnedShellsBySessionId[sessionId] = null; if (err) { ShellCommands.insert({ @@ -237,7 +237,7 @@ Meteor.methods({ }, listCollectionNames(dbName, sessionId) { - LOGGER.info('[listCollectionNames]', dbName); + LOGGER.info('[listCollectionNames]', dbName, sessionId); return Async.runSync(function (done) { try { @@ -247,7 +247,7 @@ Meteor.methods({ }); } catch (ex) { - LOGGER.error('[listCollectionNames]', ex); + LOGGER.error('[listCollectionNames]', sessionId, ex); done(new Meteor.Error(ex.message), null); } }); @@ -255,7 +255,7 @@ Meteor.methods({ }, getDatabases(sessionId) { - LOGGER.info('[getDatabases]'); + LOGGER.info('[getDatabases]', sessionId); return Async.runSync(function (done) { try { @@ -269,13 +269,15 @@ Meteor.methods({ }); } catch (ex) { - LOGGER.error('[getDatabases]', ex); + LOGGER.error('[getDatabases]', sessionId, ex); done(new Meteor.Error(ex.message), null); } }); }, disconnect(sessionId) { + LOGGER.info('[disconnect]', sessionId); + if (databasesBySessionId[sessionId]) { databasesBySessionId[sessionId].close(); } @@ -292,7 +294,7 @@ Meteor.methods({ const connectionUrl = Helper.getConnectionUrl(connection); const connectionOptions = Helper.getConnectionOptions(connection); - LOGGER.info('[connect]', connectionUrl, Helper.clearConnectionOptionsForLog(connectionOptions)); + LOGGER.info('[connect]', connectionUrl, Helper.clearConnectionOptionsForLog(connectionOptions), sessionId); return Async.runSync(function (done) { try { @@ -309,7 +311,7 @@ Meteor.methods({ if (connection.ssh.passPhrase) config.passphrase = connection.ssh.passPhrase; if (connection.ssh.password) config.password = connection.ssh.password; - LOGGER.info('[connect]', '[ssh]', 'ssh is enabled, config is ' + JSON.stringify(config)); + LOGGER.info('[connect]', '[ssh]', sessionId, 'ssh is enabled, config is ' + JSON.stringify(config)); tunnelsBySessionId[sessionId] = tunnelSsh(config, Meteor.bindEnvironment(function (error) { if (error) { done(new Meteor.Error(error.message), null); @@ -333,14 +335,14 @@ Meteor.methods({ } } catch (ex) { - LOGGER.error('[connect]', ex); + LOGGER.error('[connect]', sessionId, ex); done(new Meteor.Error(ex.message), null); } }); }, dropDB(sessionId) { - LOGGER.info('[dropDatabase]'); + LOGGER.info('[dropDatabase]', sessionId); return Async.runSync(function (done) { try { @@ -349,14 +351,14 @@ Meteor.methods({ }); } catch (ex) { - LOGGER.error('[dropDatabase]', ex); + LOGGER.error('[dropDatabase]', sessionId, ex); done(new Meteor.Error(ex.message), null); } }); }, dropCollection(collectionName, sessionId) { - LOGGER.info('[dropCollection]', collectionName); + LOGGER.info('[dropCollection]', sessionId, collectionName); return Async.runSync(function (done) { try { @@ -366,13 +368,14 @@ Meteor.methods({ }); } catch (ex) { - LOGGER.error('[dropCollection]', ex); + LOGGER.error('[dropCollection]', sessionId, ex); done(new Meteor.Error(ex.message), null); } }); }, dropAllCollections(sessionId) { + LOGGER.info('[dropAllCollections]', sessionId); return Async.runSync(function (done) { try { databasesBySessionId[sessionId].collections(function (err, collections) { @@ -380,14 +383,14 @@ Meteor.methods({ }); } catch (ex) { - LOGGER.error('[dropAllCollections]', ex); + LOGGER.error('[dropAllCollections]', sessionId, ex); done(new Meteor.Error(ex.message), null); } }); }, createCollection(collectionName, options, sessionId) { - LOGGER.info('[createCollection]', collectionName, JSON.stringify(options)); + LOGGER.info('[createCollection]', collectionName, sessionId, JSON.stringify(options)); return Async.runSync(function (done) { try { @@ -396,19 +399,19 @@ Meteor.methods({ }); } catch (ex) { - LOGGER.error('[createCollection]', ex); + LOGGER.error('[createCollection]', sessionId, ex); done(new Meteor.Error(ex.message), null); } }); }, clearShell(sessionId){ - LOGGER.info('[clearShell]'); + LOGGER.info('[clearShell]', sessionId); ShellCommands.remove({'sessionId': sessionId}); }, executeShellCommand(command, connectionId, sessionId){ - LOGGER.info('[shellCommand]', command, connectionId); + LOGGER.info('[shellCommand]', sessionId, command, connectionId); if (!spawnedShellsBySessionId[sessionId]) connectToShell(connectionId, sessionId); if (spawnedShellsBySessionId[sessionId]) spawnedShellsBySessionId[sessionId].stdin.write(command + '\n'); }, @@ -423,7 +426,7 @@ Meteor.methods({ let args = [connectionUrl, '--quiet', '--eval', 'var collection =\"' + collection + '\", outputFormat=\"json\"', getMongoExternalsPath() + '/variety/variety.js_']; - LOGGER.info('[analyzeSchema]', args, collection); + LOGGER.info('[analyzeSchema]', sessionId, args, collection); try { let spawned = spawn(mongoPath, args); let message = ""; @@ -456,7 +459,7 @@ Meteor.methods({ spawned.stdin.end(); } catch (ex) { - LOGGER.error('[analyzeSchema]', ex); + LOGGER.error('[analyzeSchema]', sessionId, ex); return {err: new Meteor.Error(ex.message), result: null}; } diff --git a/server/imports/mongodb/methods_dump_restore.js b/server/imports/mongodb/methods_dump_restore.js index b677b63598679dd1207997db04f89cd57674a983..bb54728af4538e0830c839ee612699a1261130f1 100644 --- a/server/imports/mongodb/methods_dump_restore.js +++ b/server/imports/mongodb/methods_dump_restore.js @@ -17,7 +17,7 @@ Meteor.methods({ mongoimport(blob, collection, sessionId){ try { let buffer = new Buffer(blob); - LOGGER.info('[mongoimport]', collection); + LOGGER.info('[mongoimport]', sessionId, collection); const methodArray = [ { @@ -26,7 +26,7 @@ Meteor.methods({ ]; return proceedQueryExecution(collection, methodArray, sessionId); } catch (ex) { - LOGGER.error('[mongoimport]', ex); + LOGGER.error('[mongoimport]', sessionId, ex); throw new Meteor.Error(ex.message); } }, diff --git a/server/imports/mongodb/methods_gridfs.js b/server/imports/mongodb/methods_gridfs.js index d6ad19e60f9faf02fe21d1583d4b372e2eb146eb..c6a59c324bd3dcb8859a26421c3079ac5ea7265e 100644 --- a/server/imports/mongodb/methods_gridfs.js +++ b/server/imports/mongodb/methods_gridfs.js @@ -31,14 +31,14 @@ Meteor.methods({ ids.push(obj._id); } - LOGGER.info(JSON.stringify(selector) + " removing from " + bucketName + ".files"); + LOGGER.info(JSON.stringify(selector) + " removing from " + bucketName + ".files", sessionId); filesCollection.deleteMany({_id: {$in: ids}}, {}, function (err) { if (err) { done(err, null); return; } - LOGGER.info(JSON.stringify(selector) + " removing from " + bucketName + ".chunks"); + LOGGER.info(JSON.stringify(selector) + " removing from " + bucketName + ".chunks", sessionId); chunksCollection.deleteMany({files_id: {$in: ids}}, function (err) { done(err, null); }) @@ -46,7 +46,7 @@ Meteor.methods({ }); } catch (ex) { - LOGGER.error('[deleteFiles]', ex); + LOGGER.error('[deleteFiles]', sessionId, ex); done(new Meteor.Error(ex.message), null); } }); @@ -65,7 +65,7 @@ Meteor.methods({ }); } catch (ex) { - LOGGER.error('[deleteFile]', ex); + LOGGER.error('[deleteFile]', sessionId, ex); done(new Meteor.Error(ex.message), null); } }); @@ -89,7 +89,7 @@ Meteor.methods({ } catch (ex) { - LOGGER.error('[getFileInfos]', ex); + LOGGER.error('[getFileInfos]', sessionId, ex); done(new Meteor.Error(ex.message), null); } }); @@ -120,7 +120,7 @@ Meteor.methods({ }); } catch (ex) { - LOGGER.error('[uploadFile]', ex); + LOGGER.error('[uploadFile]', sessionId, ex); done(new Meteor.Error(ex.message), null); } }); @@ -141,7 +141,7 @@ Meteor.methods({ }); } catch (ex) { - LOGGER.error('[getFile]', ex); + LOGGER.error('[getFile]', sessionId, ex); done(new Meteor.Error(ex.message), null); } });