diff --git a/changelog.md b/changelog.md index b6dbc85..03a49bd 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,11 @@ # Changelog +## 2026-04-13 - 13.15.0 - feat(stats) +add typed network stats response fields for bandwidth, domain activity, and protocol distribution + +- extends the network stats request interface with top IP bandwidth, domain activity, and frontend/backend protocol distribution data +- updates app state to use a typed getNetworkStats request instead of casting the response to any + ## 2026-04-13 - 13.14.0 - feat(network) add bandwidth-ranked IP and domain activity metrics to network monitoring diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 8ea8e75..3d70bd9 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@serve.zone/dcrouter', - version: '13.14.0', + version: '13.15.0', description: 'A multifaceted routing service handling mail and SMS delivery functions.' } diff --git a/ts_interfaces/requests/stats.ts b/ts_interfaces/requests/stats.ts index 6af6874..520c201 100644 --- a/ts_interfaces/requests/stats.ts +++ b/ts_interfaces/requests/stats.ts @@ -180,5 +180,9 @@ export interface IReq_GetNetworkStats extends plugins.typedrequestInterfaces.imp requestsPerSecond: number; requestsTotal: number; backends?: statsInterfaces.IBackendInfo[]; + topIPsByBandwidth: Array<{ ip: string; count: number; bwIn: number; bwOut: number }>; + domainActivity: statsInterfaces.IDomainActivity[]; + frontendProtocols?: statsInterfaces.IProtocolDistribution | null; + backendProtocols?: statsInterfaces.IProtocolDistribution | null; }; } \ No newline at end of file diff --git a/ts_web/00_commitinfo_data.ts b/ts_web/00_commitinfo_data.ts index 8ea8e75..3d70bd9 100644 --- a/ts_web/00_commitinfo_data.ts +++ b/ts_web/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@serve.zone/dcrouter', - version: '13.14.0', + version: '13.15.0', description: 'A multifaceted routing service handling mail and SMS delivery functions.' } diff --git a/ts_web/appstate.ts b/ts_web/appstate.ts index c89ed73..48927d1 100644 --- a/ts_web/appstate.ts +++ b/ts_web/appstate.ts @@ -522,14 +522,13 @@ export const fetchNetworkStatsAction = networkStatePart.createAction(async (stat }); // Get network stats for throughput and IP data - const networkStatsRequest = new plugins.domtools.plugins.typedrequest.TypedRequest( - '/typedrequest', - 'getNetworkStats' - ); - + const networkStatsRequest = new plugins.domtools.plugins.typedrequest.TypedRequest< + interfaces.requests.IReq_GetNetworkStats + >('/typedrequest', 'getNetworkStats'); + const networkStatsResponse = await networkStatsRequest.fire({ identity: context.identity, - }) as any; + }); // Use the connections data for the connection list // and network stats for throughput and IP analytics