diff --git a/src/shadowbox/server/manager_metrics.ts b/src/shadowbox/server/manager_metrics.ts index 22414e33d..7b2b7219d 100644 --- a/src/shadowbox/server/manager_metrics.ts +++ b/src/shadowbox/server/manager_metrics.ts @@ -90,11 +90,11 @@ export class PrometheusManagerMetrics implements ManagerMetrics { asn: parseInt(entry.metric['asn']), asOrg: entry.metric['asorg'], tunnelTime: { - seconds: tunnelTimeByLocation.result.find((entry) => { + seconds: tunnelTimeByLocation.result.find((target) => { return ( - entry.metric['location'] === entry.metric['location'] && - entry.metric['asn'] === entry.metric['asn'] && - entry.metric['asorg'] === entry.metric['asorg'] + entry.metric['location'] === target.metric['location'] && + entry.metric['asn'] === target.metric['asn'] && + entry.metric['asorg'] === target.metric['asorg'] ); }), }, @@ -109,8 +109,8 @@ export class PrometheusManagerMetrics implements ManagerMetrics { accessKeys.push({ accessKeyId: parseInt(entry.metric['access_key']), tunnelTime: { - seconds: tunnelTimeByAccessKey.result.find((entry) => { - return entry.metric['access_key'] === entry.metric['access_key']; + seconds: tunnelTimeByAccessKey.result.find((target) => { + return entry.metric['access_key'] === target.metric['access_key']; }), }, dataTransferred: { diff --git a/src/shadowbox/server/manager_service.ts b/src/shadowbox/server/manager_service.ts index 28a729294..c14deb69f 100644 --- a/src/shadowbox/server/manager_service.ts +++ b/src/shadowbox/server/manager_service.ts @@ -613,7 +613,9 @@ export class ShadowsocksManagerService { logging.debug(`getServerMetrics request ${JSON.stringify(req.params)}`); if (!req.query?.since) { - throw new TypeError("Missing 'since' parameter. Must be an ISO timestamp"); + return next( + new restifyErrors.MissingParameterError({statusCode: 400}, 'Parameter `since` is missing') + ); } const timestamp = new Date(req.query.since as string); @@ -621,10 +623,15 @@ export class ShadowsocksManagerService { !isNaN(timestamp.getTime()) && timestamp.toISOString() === req.query.since; if (!isIsoTimestamp) { - throw new TypeError(`'since' parameter must be an ISO timestamp. Got ${req.query.since}`); + return next( + new restifyErrors.InvalidArgumentError( + {statusCode: 400}, + `'since' parameter must be an ISO timestamp. Got ${req.query.since}` + ) + ); } - const hours = Math.floor(new Date().getTime() - timestamp.getTime() / (1000 * 60 * 60)); + const hours = Math.floor((new Date().getTime() - timestamp.getTime()) / (1000 * 60 * 60)); const response = await this.managerMetrics.getServerMetrics({hours}); res.send(HttpSuccess.OK, response);