feat(opsserver): add RADIUS and VPN metrics to combined ops stats and overview dashboards, and stream live log buffer entries in follow mode

This commit is contained in:
2026-04-03 14:11:17 +00:00
parent b3296c6522
commit f6a9e344e5
10 changed files with 237 additions and 41 deletions

View File

@@ -15,6 +15,8 @@ export interface IStatsState {
emailStats: interfaces.data.IEmailStats | null;
dnsStats: interfaces.data.IDnsStats | null;
securityMetrics: interfaces.data.ISecurityMetrics | null;
radiusStats: interfaces.data.IRadiusStats | null;
vpnStats: interfaces.data.IVpnStats | null;
lastUpdated: number;
isLoading: boolean;
error: string | null;
@@ -91,6 +93,8 @@ export const statsStatePart = await appState.getStatePart<IStatsState>(
emailStats: null,
dnsStats: null,
securityMetrics: null,
radiusStats: null,
vpnStats: null,
lastUpdated: 0,
isLoading: false,
error: null,
@@ -319,6 +323,8 @@ export const fetchAllStatsAction = statsStatePart.createAction(async (statePartA
dns: true,
security: true,
network: false, // Network is fetched separately for the network view
radius: true,
vpn: true,
},
});
@@ -328,6 +334,8 @@ export const fetchAllStatsAction = statsStatePart.createAction(async (statePartA
emailStats: combinedResponse.metrics.email || currentState.emailStats,
dnsStats: combinedResponse.metrics.dns || currentState.dnsStats,
securityMetrics: combinedResponse.metrics.security || currentState.securityMetrics,
radiusStats: combinedResponse.metrics.radius || currentState.radiusStats,
vpnStats: combinedResponse.metrics.vpn || currentState.vpnStats,
lastUpdated: Date.now(),
isLoading: false,
error: null,
@@ -1781,6 +1789,8 @@ async function dispatchCombinedRefreshActionInner() {
dns: true,
security: true,
network: currentView === 'network', // Only fetch network if on network view
radius: true,
vpn: true,
},
});
@@ -1792,6 +1802,8 @@ async function dispatchCombinedRefreshActionInner() {
emailStats: combinedResponse.metrics.email || currentStatsState.emailStats,
dnsStats: combinedResponse.metrics.dns || currentStatsState.dnsStats,
securityMetrics: combinedResponse.metrics.security || currentStatsState.securityMetrics,
radiusStats: combinedResponse.metrics.radius || currentStatsState.radiusStats,
vpnStats: combinedResponse.metrics.vpn || currentStatsState.vpnStats,
lastUpdated: Date.now(),
isLoading: false,
error: null,