diff --git a/models/server/metrics.js b/models/server/metrics.js index 832f607ed..67f08d499 100644 --- a/models/server/metrics.js +++ b/models/server/metrics.js @@ -9,6 +9,31 @@ function acceptedIpAddress(ipAddress) { ); } +function accessToken(req) { + const valid_token = process.env.METRICS_ACCESS_TOKEN; + let token; + if (req.headers && req.headers.authorization) { + var parts = req.headers.authorization.split(" "); + + if (parts.length === 2) { + var scheme = parts[0]; + var credentials = parts[1]; + + if (/^Bearer$/i.test(scheme)) { + token = credentials; + } + } + } + if (!token && req.query && req.query.access_token) { + token = req.query.access_token; + } + return ( + token !== undefined && + valid_token !== undefined && + token == valid_token + ); +} + const getBoardTitleWithMostActivities = (dateWithXdaysAgo, nbLimit) => { return Promise.await( Activities.rawCollection() @@ -49,7 +74,7 @@ Meteor.startup(() => { // } // List of trusted ip adress will be found in environment variable "METRICS_ACCEPTED_IP_ADDRESS" (separeted with commas) - if (acceptedIpAddress(ipAddress)) { + if (acceptedIpAddress(ipAddress) || (accessToken(req)) { let metricsRes = ''; let resCount = 0; //connected users