|  | @@ -1,9 +1,13 @@
 | 
	
		
			
				|  |  | +import { MongoInternals } from 'meteor/mongo';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  Meteor.methods({
 | 
	
		
			
				|  |  |    getStatistics() {
 | 
	
		
			
				|  |  |      const os = require('os');
 | 
	
		
			
				|  |  |      const pjson = require('/package.json');
 | 
	
		
			
				|  |  |      const statistics = {};
 | 
	
		
			
				|  |  | -    statistics.version = pjson.version;
 | 
	
		
			
				|  |  | +    let wekanVersion = pjson.version;
 | 
	
		
			
				|  |  | +    wekanVersion = wekanVersion.replace('v', '');
 | 
	
		
			
				|  |  | +    statistics.version = wekanVersion;
 | 
	
		
			
				|  |  |      statistics.os = {
 | 
	
		
			
				|  |  |        type: os.type(),
 | 
	
		
			
				|  |  |        platform: os.platform(),
 | 
	
	
		
			
				|  | @@ -15,12 +19,50 @@ Meteor.methods({
 | 
	
		
			
				|  |  |        freemem: os.freemem(),
 | 
	
		
			
				|  |  |        cpus: os.cpus(),
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  | +    let nodeVersion = process.version;
 | 
	
		
			
				|  |  | +    nodeVersion = nodeVersion.replace('v', '');
 | 
	
		
			
				|  |  |      statistics.process = {
 | 
	
		
			
				|  |  | -      nodeVersion: process.version,
 | 
	
		
			
				|  |  | +      nodeVersion: nodeVersion,
 | 
	
		
			
				|  |  |        pid: process.pid,
 | 
	
		
			
				|  |  |        uptime: process.uptime(),
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    // Remove beginning of Meteor release text METEOR@
 | 
	
		
			
				|  |  | +    let meteorVersion = Meteor.release;
 | 
	
		
			
				|  |  | +    meteorVersion = meteorVersion.replace('METEOR@', '');
 | 
	
		
			
				|  |  | +    statistics.meteor = {
 | 
	
		
			
				|  |  | +      meteorVersion: meteorVersion,
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    // Thanks to RocketChat for MongoDB version detection !
 | 
	
		
			
				|  |  | +    // https://github.com/RocketChat/Rocket.Chat/blob/develop/app/utils/server/functions/getMongoInfo.js
 | 
	
		
			
				|  |  | +    let mongoVersion;
 | 
	
		
			
				|  |  | +    let mongoStorageEngine;
 | 
	
		
			
				|  |  | +    let mongoOplogEnabled;
 | 
	
		
			
				|  |  | +    try {
 | 
	
		
			
				|  |  | +      const { mongo } = MongoInternals.defaultRemoteCollectionDriver();
 | 
	
		
			
				|  |  | +      oplogEnabled = Boolean(
 | 
	
		
			
				|  |  | +        mongo._oplogHandle && mongo._oplogHandle.onOplogEntry,
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +      const { version, storageEngine } = Promise.await(
 | 
	
		
			
				|  |  | +        mongo.db.command({ serverStatus: 1 }),
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +      mongoVersion = version;
 | 
	
		
			
				|  |  | +      mongoStorageEngine = storageEngine.name;
 | 
	
		
			
				|  |  | +      mongoOplogEnabled = oplogEnabled;
 | 
	
		
			
				|  |  | +    } catch (e) {
 | 
	
		
			
				|  |  | +      try {
 | 
	
		
			
				|  |  | +        const { version } = Promise.await(mongo.db.command({ buildinfo: 1 }));
 | 
	
		
			
				|  |  | +        mongoVersion = version;
 | 
	
		
			
				|  |  | +        mongoStorageEngine = 'unknown';
 | 
	
		
			
				|  |  | +      } catch (e) {
 | 
	
		
			
				|  |  | +        mongoVersion = 'unknown';
 | 
	
		
			
				|  |  | +        mongoStorageEngine = 'unknown';
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    statistics.mongo = {
 | 
	
		
			
				|  |  | +      mongoVersion: mongoVersion,
 | 
	
		
			
				|  |  | +      mongoStorageEngine: mongoStorageEngine,
 | 
	
		
			
				|  |  | +      mongoOplogEnabled: mongoOplogEnabled,
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  |      return statistics;
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |  });
 |