23 lines
1.3 KiB
JavaScript
23 lines
1.3 KiB
JavaScript
// backend/routes/dashboard/telemetryHelper.js
|
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
// Aggregation helpers for Telemetry routes (SNI, SSL, QUIC fallbacks)
|
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
const SYSTEM_DOMAINS = ['agents.backone.ai', 'agents.backonedpi.ai'];
|
|
|
|
async function getSniFallbackData(Flow, matchBase, fieldName) {
|
|
const flowBase = { ...matchBase, domain: { $exists: true, $ne: null, $ne: '', $nin: SYSTEM_DOMAINS } };
|
|
const flowRaw = await Flow.aggregate([
|
|
{ $match: flowBase },
|
|
{ $group: { _id: '$domain', download: { $sum: '$download' }, upload: { $sum: '$upload' }, flows: { $sum: 1 } } },
|
|
{ $project: { [fieldName]: '$_id', total: { $add: ['$download', '$upload'] }, download: 1, upload: 1, flows: 1, _id: 0 } },
|
|
{ $sort: { total: -1 } }
|
|
]);
|
|
return flowRaw.filter(r => r[fieldName] && !String(r[fieldName]).startsWith('Port '));
|
|
}
|
|
|
|
module.exports = {
|
|
SYSTEM_DOMAINS,
|
|
getSniFallbackData
|
|
};
|