| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | 
							- import { MongoInternals } from 'meteor/mongo';
 
- if (Meteor.isServer) {
 
-   Meteor.methods({
 
-     getStatistics() {
 
-       if (Meteor.user() && Meteor.user().isAdmin) {
 
-         const os = require('os');
 
-         const pjson = require('/package.json');
 
-         const statistics = {};
 
-         let wekanVersion = pjson.version;
 
-         wekanVersion = wekanVersion.replace('v', '');
 
-         statistics.version = wekanVersion;
 
-         statistics.os = {
 
-           type: os.type(),
 
-           platform: os.platform(),
 
-           arch: os.arch(),
 
-           release: os.release(),
 
-           uptime: os.uptime(),
 
-           loadavg: os.loadavg(),
 
-           totalmem: os.totalmem(),
 
-           freemem: os.freemem(),
 
-           cpus: os.cpus(),
 
-         };
 
-         let nodeVersion = process.version;
 
-         nodeVersion = nodeVersion.replace('v', '');
 
-         statistics.process = {
 
-           nodeVersion,
 
-           pid: process.pid,
 
-           uptime: process.uptime(),
 
-         };
 
-         const v8 = require('v8'); // Import the v8 module
 
-         statistics.nodeHeapStats = {
 
-           totalHeapSize: v8.getHeapStatistics().total_heap_size,
 
-           totalHeapSizeExecutable: v8.getHeapStatistics().total_heap_size_executable,
 
-           totalPhysicalSize: v8.getHeapStatistics().total_physical_size,
 
-           totalAvailableSize: v8.getHeapStatistics().total_available_size,
 
-           usedHeapSize: v8.getHeapStatistics().used_heap_size,
 
-           heapSizeLimit: v8.getHeapStatistics().heap_size_limit,
 
-           mallocedMemory: v8.getHeapStatistics().malloced_memory,
 
-           peakMallocedMemory: v8.getHeapStatistics().peak_malloced_memory,
 
-           doesZapGarbage: v8.getHeapStatistics().does_zap_garbage,
 
-           numberOfNativeContexts: v8.getHeapStatistics().number_of_native_contexts,
 
-           numberOfDetachedContexts: v8.getHeapStatistics().number_of_detached_contexts,
 
-         };
 
-         let memoryUsage = process.memoryUsage();
 
-         statistics.nodeMemoryUsage = {
 
-           rss: memoryUsage.rss,
 
-           heapTotal: memoryUsage.heapTotal,
 
-           heapUsed: memoryUsage.heapUsed,
 
-           external: memoryUsage.external,
 
-         };
 
-         // Remove beginning of Meteor release text METEOR@
 
-         let meteorVersion = Meteor.release;
 
-         meteorVersion = meteorVersion.replace('METEOR@', '');
 
-         statistics.meteor = {
 
-           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,
 
-           mongoStorageEngine,
 
-           mongoOplogEnabled,
 
-         };
 
-         return statistics;
 
-       } else {
 
-         return false;
 
-       }
 
-     },
 
-   });
 
- }
 
 
  |