122 lines
4.5 KiB
JavaScript
122 lines
4.5 KiB
JavaScript
// proxy/collectorHelperDpi.js
|
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
// DPI Property Telemetry collection steps for BackOne Proxy Server.
|
|
// Split from collectorHelper.js to satisfy the 256-line file size limit.
|
|
// Covers: SNI Hostnames, SSL CN, QUIC, SSH Clients/Servers, mDNS Hostnames.
|
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
const {
|
|
SniHostnameStat,
|
|
SslServerCnStat,
|
|
QuicHostnameStat,
|
|
SshClientStat,
|
|
SshServerStat,
|
|
MdnsHostnameStat,
|
|
} = require('./models/SchemasTelemetry');
|
|
|
|
async function collectDpiPropertyTelemetry(agentUuid, timestamp, SITE_UUID, netify, label) {
|
|
try {
|
|
// 2j. HTTPS SNI Hostnames
|
|
const sniHostnames = await netify.fetchSniHostnames(1440, 50, agentUuid);
|
|
if (sniHostnames && sniHostnames.length > 0) {
|
|
const docs = sniHostnames.map(d => ({
|
|
timestamp,
|
|
agent_uuid: agentUuid,
|
|
site_uuid: SITE_UUID,
|
|
sni_hostname: d.sni_hostname,
|
|
download: d.download || 0,
|
|
upload: d.upload || 0,
|
|
flows: d.flows || 0,
|
|
}));
|
|
await SniHostnameStat.insertMany(docs);
|
|
console.log(`[Collector] ✓ ${docs.length} SNI hostnames saved for ${label}`);
|
|
}
|
|
|
|
// 2k. SSL Server Common Names
|
|
const sslCns = await netify.fetchSslServerCn(1440, 50, agentUuid);
|
|
if (sslCns && sslCns.length > 0) {
|
|
const docs = sslCns.map(d => ({
|
|
timestamp,
|
|
agent_uuid: agentUuid,
|
|
site_uuid: SITE_UUID,
|
|
ssl_server_cn: d.ssl_server_cn,
|
|
download: d.download || 0,
|
|
upload: d.upload || 0,
|
|
flows: d.flows || 0,
|
|
}));
|
|
await SslServerCnStat.insertMany(docs);
|
|
console.log(`[Collector] ✓ ${docs.length} SSL Common Names saved for ${label}`);
|
|
}
|
|
|
|
// 2l. QUIC Hostnames
|
|
const quicHostnames = await netify.fetchQuicHostnames(1440, 50, agentUuid);
|
|
if (quicHostnames && quicHostnames.length > 0) {
|
|
const docs = quicHostnames.map(d => ({
|
|
timestamp,
|
|
agent_uuid: agentUuid,
|
|
site_uuid: SITE_UUID,
|
|
quic_hostname: d.quic_hostname,
|
|
download: d.download || 0,
|
|
upload: d.upload || 0,
|
|
flows: d.flows || 0,
|
|
}));
|
|
await QuicHostnameStat.insertMany(docs);
|
|
console.log(`[Collector] ✓ ${docs.length} QUIC hostnames saved for ${label}`);
|
|
}
|
|
|
|
// 2m. SSH Clients
|
|
const sshClients = await netify.fetchSshClients(1440, 50, agentUuid);
|
|
if (sshClients && sshClients.length > 0) {
|
|
const docs = sshClients.map(d => ({
|
|
timestamp,
|
|
agent_uuid: agentUuid,
|
|
site_uuid: SITE_UUID,
|
|
ssh_client: d.ssh_client,
|
|
download: d.download || 0,
|
|
upload: d.upload || 0,
|
|
flows: d.flows || 0,
|
|
}));
|
|
await SshClientStat.insertMany(docs);
|
|
console.log(`[Collector] ✓ ${docs.length} SSH clients saved for ${label}`);
|
|
}
|
|
|
|
// 2n. SSH Servers
|
|
const sshServers = await netify.fetchSshServers(1440, 50, agentUuid);
|
|
if (sshServers && sshServers.length > 0) {
|
|
const docs = sshServers.map(d => ({
|
|
timestamp,
|
|
agent_uuid: agentUuid,
|
|
site_uuid: SITE_UUID,
|
|
ssh_server: d.ssh_server,
|
|
download: d.download || 0,
|
|
upload: d.upload || 0,
|
|
flows: d.flows || 0,
|
|
}));
|
|
await SshServerStat.insertMany(docs);
|
|
console.log(`[Collector] ✓ ${docs.length} SSH servers saved for ${label}`);
|
|
}
|
|
|
|
// 2o. mDNS Hostnames
|
|
const mdnsHostnames = await netify.fetchMdnsHostnames(1440, 50, agentUuid);
|
|
if (mdnsHostnames && mdnsHostnames.length > 0) {
|
|
const docs = mdnsHostnames.map(d => ({
|
|
timestamp,
|
|
agent_uuid: agentUuid,
|
|
site_uuid: SITE_UUID,
|
|
mdns_hostname: d.mdns_hostname,
|
|
download: d.download || 0,
|
|
upload: d.upload || 0,
|
|
flows: d.flows || 0,
|
|
}));
|
|
await MdnsHostnameStat.insertMany(docs);
|
|
console.log(`[Collector] ✓ ${docs.length} mDNS hostnames saved for ${label}`);
|
|
}
|
|
} catch (err) {
|
|
console.error(`[CollectorHelperDpi] Error saving DPI property telemetry:`, err.message);
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
collectDpiPropertyTelemetry,
|
|
};
|