Docker images / prepare-release (push) Successful in 11s
Docker images / backend-image (push) Successful in 2m12s
Docker images / frontend-image (push) Successful in 4m3s
Docker images / notify-webhook (push) Skipped
Docker images / updater-image (push) Successful in 48s
Docker images / publish-release (push) Successful in 12s
- Introduced `pickInternetPeer` function to improve IP classification by selecting the appropriate public IP from source and destination. - Updated `buildFlowAnalytics` and related functions to utilize the new peer selection logic, enhancing accuracy in flow analytics. - Added tests for new classifications and ensured existing tests cover new scenarios for Google and Cloudflare. - Refactored traffic flow brand mappings to include additional CIDR ranges for Google and Cloudflare. Co-authored-by: Cursor <cursoragent@cursor.com>
65 lines
2.4 KiB
TypeScript
65 lines
2.4 KiB
TypeScript
import assert from "node:assert/strict"
|
|
import { applicationName } from "./traffic-flow-apps.js"
|
|
import { classifyFlowDst, disableCatalogFetchForTests, resetFlowCatalogForTests, seedFlowCatalogForTests } from "./traffic-flow-classify.js"
|
|
|
|
disableCatalogFetchForTests()
|
|
resetFlowCatalogForTests()
|
|
seedFlowCatalogForTests({
|
|
cidrs: [{ cidr: "192.0.2.0/24", purpose: "steam-gaming" }],
|
|
})
|
|
|
|
const hit = classifyFlowDst("192.0.2.10", 6, 443, 50000, null)
|
|
assert.equal(hit.category, "Игры")
|
|
assert.equal(hit.service, "steam-gaming")
|
|
|
|
const miss = classifyFlowDst("203.0.113.9", 17, 53, 53000, null)
|
|
assert.equal(miss.category, "DNS")
|
|
|
|
const cdn = classifyFlowDst("203.0.113.9", 6, 443, 1, { prefix: "203.0.113.0/24", asn: 13335, country: "US", lat: null, lng: null, holder: "CLOUDFLARENET", ok: true, fetchedAt: Date.now() })
|
|
assert.equal(cdn.category, "CDN")
|
|
assert.equal(cdn.service, "Cloudflare")
|
|
|
|
const amazonHolder = classifyFlowDst("203.0.113.50", 6, 443, 1, { prefix: "203.0.113.0/24", asn: 64500, country: "RU", lat: null, lng: null, holder: "AMAZON-AES - Amazon.com, Inc.", ok: true, fetchedAt: Date.now() })
|
|
assert.equal(amazonHolder.service, "Прочее")
|
|
assert.notEqual(amazonHolder.service, "AMAZON-AES - Amazon.com, Inc.")
|
|
|
|
const google = classifyFlowDst("173.194.160.163", 6, 443, 1, {
|
|
prefix: "173.194.0.0/16",
|
|
asn: 15169,
|
|
country: "US",
|
|
lat: null,
|
|
lng: null,
|
|
holder: "GOOGLE",
|
|
ok: true,
|
|
fetchedAt: Date.now(),
|
|
})
|
|
assert.equal(google.service, "Google")
|
|
assert.equal(google.category, "Веб")
|
|
|
|
const googleCidr = classifyFlowDst("173.194.151.65", 6, 57182, 443, null)
|
|
assert.equal(googleCidr.service, "Google")
|
|
assert.equal(googleCidr.category, "Веб")
|
|
|
|
const youtube = classifyFlowDst("173.194.160.163", 6, 443, 1, {
|
|
prefix: "173.194.0.0/16",
|
|
asn: 15169,
|
|
country: "US",
|
|
lat: null,
|
|
lng: null,
|
|
holder: "YouTube LLC",
|
|
ok: true,
|
|
fetchedAt: Date.now(),
|
|
})
|
|
assert.equal(youtube.service, "YouTube")
|
|
assert.equal(youtube.category, "Видео / стриминг")
|
|
|
|
const gre = classifyFlowDst("198.51.100.1", 47, 0, 0, null)
|
|
assert.equal(gre.service, "GRE")
|
|
assert.equal(gre.category, "Туннель")
|
|
const esp = classifyFlowDst("198.51.100.1", 50, 0, 0, null)
|
|
assert.equal(esp.category, "Туннель")
|
|
assert.equal(applicationName(17, 443, 50000), "QUIC")
|
|
assert.equal(applicationName(17, 853, 50000), "DNS")
|
|
|
|
console.log("traffic-flow-classify.test.ts: ok")
|