@serve.zone/dcrouter 13.16.1 → 13.17.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_serve/bundle.js +729 -721
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/monitoring/classes.metricsmanager.d.ts +2 -0
- package/dist_ts/monitoring/classes.metricsmanager.js +38 -60
- package/dist_ts_interfaces/data/stats.d.ts +1 -0
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/elements/network/ops-view-network-activity.js +3 -2
- package/dist_ts_web/elements/network/ops-view-routes.d.ts +1 -0
- package/dist_ts_web/elements/network/ops-view-routes.js +30 -11
- package/package.json +2 -2
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/monitoring/classes.metricsmanager.ts +41 -57
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/network/ops-view-network-activity.ts +2 -1
- package/ts_web/elements/network/ops-view-routes.ts +24 -8
|
@@ -78,6 +78,9 @@ let OpsViewRoutes = (() => {
|
|
|
78
78
|
let _classExtraInitializers = [];
|
|
79
79
|
let _classThis;
|
|
80
80
|
let _classSuper = DeesElement;
|
|
81
|
+
let _routeFilter_decorators;
|
|
82
|
+
let _routeFilter_initializers = [];
|
|
83
|
+
let _routeFilter_extraInitializers = [];
|
|
81
84
|
let _routeState_decorators;
|
|
82
85
|
let _routeState_initializers = [];
|
|
83
86
|
let _routeState_extraInitializers = [];
|
|
@@ -88,22 +91,27 @@ let OpsViewRoutes = (() => {
|
|
|
88
91
|
static { _classThis = this; }
|
|
89
92
|
static {
|
|
90
93
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
94
|
+
_routeFilter_decorators = [state()];
|
|
91
95
|
_routeState_decorators = [state()];
|
|
92
96
|
_profilesTargetsState_decorators = [state()];
|
|
97
|
+
__esDecorate(this, null, _routeFilter_decorators, { kind: "accessor", name: "routeFilter", static: false, private: false, access: { has: obj => "routeFilter" in obj, get: obj => obj.routeFilter, set: (obj, value) => { obj.routeFilter = value; } }, metadata: _metadata }, _routeFilter_initializers, _routeFilter_extraInitializers);
|
|
93
98
|
__esDecorate(this, null, _routeState_decorators, { kind: "accessor", name: "routeState", static: false, private: false, access: { has: obj => "routeState" in obj, get: obj => obj.routeState, set: (obj, value) => { obj.routeState = value; } }, metadata: _metadata }, _routeState_initializers, _routeState_extraInitializers);
|
|
94
99
|
__esDecorate(this, null, _profilesTargetsState_decorators, { kind: "accessor", name: "profilesTargetsState", static: false, private: false, access: { has: obj => "profilesTargetsState" in obj, get: obj => obj.profilesTargetsState, set: (obj, value) => { obj.profilesTargetsState = value; } }, metadata: _metadata }, _profilesTargetsState_initializers, _profilesTargetsState_extraInitializers);
|
|
95
100
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
96
101
|
OpsViewRoutes = _classThis = _classDescriptor.value;
|
|
97
102
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
98
103
|
}
|
|
99
|
-
#
|
|
104
|
+
#routeFilter_accessor_storage = __runInitializers(this, _routeFilter_initializers, 'User Routes');
|
|
105
|
+
get routeFilter() { return this.#routeFilter_accessor_storage; }
|
|
106
|
+
set routeFilter(value) { this.#routeFilter_accessor_storage = value; }
|
|
107
|
+
#routeState_accessor_storage = (__runInitializers(this, _routeFilter_extraInitializers), __runInitializers(this, _routeState_initializers, {
|
|
100
108
|
mergedRoutes: [],
|
|
101
109
|
warnings: [],
|
|
102
110
|
apiTokens: [],
|
|
103
111
|
isLoading: false,
|
|
104
112
|
error: null,
|
|
105
113
|
lastUpdated: 0,
|
|
106
|
-
});
|
|
114
|
+
}));
|
|
107
115
|
get routeState() { return this.#routeState_accessor_storage; }
|
|
108
116
|
set routeState(value) { this.#routeState_accessor_storage = value; }
|
|
109
117
|
#profilesTargetsState_accessor_storage = (__runInitializers(this, _routeState_extraInitializers), __runInitializers(this, _profilesTargetsState_initializers, {
|
|
@@ -200,20 +208,20 @@ let OpsViewRoutes = (() => {
|
|
|
200
208
|
},
|
|
201
209
|
{
|
|
202
210
|
id: 'configRoutes',
|
|
203
|
-
title: '
|
|
211
|
+
title: 'System Routes',
|
|
204
212
|
type: 'number',
|
|
205
213
|
value: configCount,
|
|
206
214
|
icon: 'lucide:settings',
|
|
207
|
-
description: '
|
|
215
|
+
description: 'From config, email, and DNS',
|
|
208
216
|
color: '#8b5cf6',
|
|
209
217
|
},
|
|
210
218
|
{
|
|
211
219
|
id: 'apiRoutes',
|
|
212
|
-
title: '
|
|
220
|
+
title: 'User Routes',
|
|
213
221
|
type: 'number',
|
|
214
222
|
value: apiCount,
|
|
215
223
|
icon: 'lucide:code',
|
|
216
|
-
description: '
|
|
224
|
+
description: 'Created via API',
|
|
217
225
|
color: '#0ea5e9',
|
|
218
226
|
},
|
|
219
227
|
{
|
|
@@ -226,8 +234,11 @@ let OpsViewRoutes = (() => {
|
|
|
226
234
|
color: disabledCount > 0 ? '#ef4444' : '#6b7280',
|
|
227
235
|
},
|
|
228
236
|
];
|
|
229
|
-
//
|
|
230
|
-
const
|
|
237
|
+
// Filter routes based on selected tab
|
|
238
|
+
const isUserRoutes = this.routeFilter === 'User Routes';
|
|
239
|
+
const filteredRoutes = mergedRoutes.filter((mr) => isUserRoutes ? mr.origin === 'api' : mr.origin !== 'api');
|
|
240
|
+
// Map filtered routes to sz-route-list-view format
|
|
241
|
+
const szRoutes = filteredRoutes.map((mr) => {
|
|
231
242
|
const tags = [...(mr.route.tags || [])];
|
|
232
243
|
tags.push(mr.origin);
|
|
233
244
|
if (!mr.enabled)
|
|
@@ -260,6 +271,13 @@ let OpsViewRoutes = (() => {
|
|
|
260
271
|
]}
|
|
261
272
|
></dees-statsgrid>
|
|
262
273
|
|
|
274
|
+
<dees-input-multitoggle
|
|
275
|
+
.type=${'single'}
|
|
276
|
+
.options=${['User Routes', 'System Routes']}
|
|
277
|
+
.selectedOption=${this.routeFilter}
|
|
278
|
+
@change=${(e) => { this.routeFilter = e.target.value || e.target.selectedOption; }}
|
|
279
|
+
></dees-input-multitoggle>
|
|
280
|
+
|
|
263
281
|
${warnings.length > 0
|
|
264
282
|
? html `
|
|
265
283
|
<div class="warnings-bar">
|
|
@@ -277,6 +295,7 @@ let OpsViewRoutes = (() => {
|
|
|
277
295
|
? html `
|
|
278
296
|
<sz-route-list-view
|
|
279
297
|
.routes=${szRoutes}
|
|
298
|
+
.showActionsFilter=${isUserRoutes ? () => true : () => false}
|
|
280
299
|
@route-click=${(e) => this.handleRouteClick(e)}
|
|
281
300
|
@route-edit=${(e) => this.handleRouteEdit(e)}
|
|
282
301
|
@route-delete=${(e) => this.handleRouteDelete(e)}
|
|
@@ -284,8 +303,8 @@ let OpsViewRoutes = (() => {
|
|
|
284
303
|
`
|
|
285
304
|
: html `
|
|
286
305
|
<div class="empty-state">
|
|
287
|
-
<p>No routes
|
|
288
|
-
<p
|
|
306
|
+
<p>No ${isUserRoutes ? 'user' : 'system'} routes</p>
|
|
307
|
+
<p>${isUserRoutes ? 'Add a route to get started.' : 'System routes are generated from config, email, and DNS settings.'}</p>
|
|
289
308
|
</div>
|
|
290
309
|
`}
|
|
291
310
|
</div>
|
|
@@ -671,4 +690,4 @@ let OpsViewRoutes = (() => {
|
|
|
671
690
|
return OpsViewRoutes = _classThis;
|
|
672
691
|
})();
|
|
673
692
|
export { OpsViewRoutes };
|
|
674
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BzLXZpZXctcm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzL25ldHdvcmsvb3BzLXZpZXctcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBbUIsTUFBTSw2QkFBNkIsQ0FBQztBQUU5RCxPQUFPLEVBQ0wsV0FBVyxFQUNYLEdBQUcsRUFDSCxVQUFVLEVBQ1YsYUFBYSxFQUNiLElBQUksRUFDSixLQUFLLEdBRU4sTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyx5REFBeUQ7QUFDekQsTUFBTSxjQUFjLEdBQUc7SUFDckIsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRTtJQUMxQyxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRTtJQUM3QyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRTtJQUN6QyxFQUFFLEdBQUcsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLEVBQUUsd0JBQXdCLEVBQUU7Q0FDckUsQ0FBQztBQUNGLE1BQU0sY0FBYyxHQUFHO0lBQ3JCLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsNEJBQTRCLEVBQUU7SUFDckQsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxvQkFBb0IsRUFBRTtDQUNoRCxDQUFDO0FBRUY7O0dBRUc7QUFDSCxTQUFTLGtCQUFrQixDQUFDLE1BQVc7SUFDckMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLElBQUksRUFBRTtRQUNs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
|
|
693
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BzLXZpZXctcm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzL25ldHdvcmsvb3BzLXZpZXctcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBbUIsTUFBTSw2QkFBNkIsQ0FBQztBQUU5RCxPQUFPLEVBQ0wsV0FBVyxFQUNYLEdBQUcsRUFDSCxVQUFVLEVBQ1YsYUFBYSxFQUNiLElBQUksRUFDSixLQUFLLEdBRU4sTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyx5REFBeUQ7QUFDekQsTUFBTSxjQUFjLEdBQUc7SUFDckIsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRTtJQUMxQyxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRTtJQUM3QyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRTtJQUN6QyxFQUFFLEdBQUcsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLEVBQUUsd0JBQXdCLEVBQUU7Q0FDckUsQ0FBQztBQUNGLE1BQU0sY0FBYyxHQUFHO0lBQ3JCLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsNEJBQTRCLEVBQUU7SUFDckQsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxvQkFBb0IsRUFBRTtDQUNoRCxDQUFDO0FBRUY7O0dBRUc7QUFDSCxTQUFTLGtCQUFrQixDQUFDLE1BQVc7SUFDckMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLElBQUksRUFBRTtRQUNs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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serve.zone/dcrouter",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "13.
|
|
4
|
+
"version": "13.17.2",
|
|
5
5
|
"description": "A multifaceted routing service handling mail and SMS delivery functions.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"exports": {
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"@push.rocks/smartnetwork": "^4.5.2",
|
|
55
55
|
"@push.rocks/smartpath": "^6.0.0",
|
|
56
56
|
"@push.rocks/smartpromise": "^4.2.3",
|
|
57
|
-
"@push.rocks/smartproxy": "^27.
|
|
57
|
+
"@push.rocks/smartproxy": "^27.6.0",
|
|
58
58
|
"@push.rocks/smartradius": "^1.1.1",
|
|
59
59
|
"@push.rocks/smartrequest": "^5.0.1",
|
|
60
60
|
"@push.rocks/smartrx": "^3.0.10",
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -560,7 +560,7 @@ export class MetricsManager {
|
|
|
560
560
|
requestsPerSecond: 0,
|
|
561
561
|
requestsTotal: 0,
|
|
562
562
|
backends: [] as Array<any>,
|
|
563
|
-
domainActivity: [] as Array<{ domain: string; bytesInPerSecond: number; bytesOutPerSecond: number; activeConnections: number; routeCount: number }>,
|
|
563
|
+
domainActivity: [] as Array<{ domain: string; bytesInPerSecond: number; bytesOutPerSecond: number; activeConnections: number; routeCount: number; requestCount: number }>,
|
|
564
564
|
};
|
|
565
565
|
}
|
|
566
566
|
|
|
@@ -720,11 +720,20 @@ export class MetricsManager {
|
|
|
720
720
|
.slice(0, 10)
|
|
721
721
|
.map(([ip, data]) => ({ ip, count: data.count, bwIn: data.bwIn, bwOut: data.bwOut }));
|
|
722
722
|
|
|
723
|
-
// Build domain activity
|
|
723
|
+
// Build domain activity using per-IP domain request counts from Rust engine
|
|
724
724
|
const connectionsByRoute = proxyMetrics.connections.byRoute();
|
|
725
725
|
const throughputByRoute = proxyMetrics.throughput.byRoute();
|
|
726
726
|
|
|
727
|
-
//
|
|
727
|
+
// Aggregate per-IP domain request counts into per-domain totals
|
|
728
|
+
const domainRequestTotals = new Map<string, number>();
|
|
729
|
+
const domainRequestsByIP = proxyMetrics.connections.domainRequestsByIP();
|
|
730
|
+
for (const [, domainMap] of domainRequestsByIP) {
|
|
731
|
+
for (const [domain, count] of domainMap) {
|
|
732
|
+
domainRequestTotals.set(domain, (domainRequestTotals.get(domain) || 0) + count);
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
// Map route name → domains from route config
|
|
728
737
|
const routeDomains = new Map<string, string[]>();
|
|
729
738
|
if (this.dcRouter.smartProxy) {
|
|
730
739
|
for (const route of this.dcRouter.smartProxy.routeManager.getRoutes()) {
|
|
@@ -738,34 +747,26 @@ export class MetricsManager {
|
|
|
738
747
|
}
|
|
739
748
|
}
|
|
740
749
|
|
|
741
|
-
//
|
|
742
|
-
const
|
|
743
|
-
const domainToBackend = new Map<string, string>(); // domain → host:port
|
|
750
|
+
// Resolve wildcards using domains seen in request metrics
|
|
751
|
+
const allKnownDomains = new Set<string>(domainRequestTotals.keys());
|
|
744
752
|
for (const entry of protocolCache) {
|
|
745
|
-
if (entry.domain)
|
|
746
|
-
activeDomains.add(entry.domain);
|
|
747
|
-
domainToBackend.set(entry.domain, `${entry.host}:${entry.port}`);
|
|
748
|
-
}
|
|
753
|
+
if (entry.domain) allKnownDomains.add(entry.domain);
|
|
749
754
|
}
|
|
750
755
|
|
|
751
|
-
// Build reverse map: domain → route name(s)
|
|
752
|
-
// For concrete domains: direct lookup from route config
|
|
753
|
-
// For wildcard patterns: match active domains from protocol cache
|
|
756
|
+
// Build reverse map: concrete domain → route name(s)
|
|
754
757
|
const domainToRoutes = new Map<string, string[]>();
|
|
755
758
|
for (const [routeName, domains] of routeDomains) {
|
|
756
759
|
for (const pattern of domains) {
|
|
757
760
|
if (pattern.includes('*')) {
|
|
758
|
-
// Wildcard pattern — match against active domains from protocol cache
|
|
759
761
|
const regex = new RegExp('^' + pattern.replace(/\./g, '\\.').replace(/\*/g, '[^.]+') + '$');
|
|
760
|
-
for (const
|
|
761
|
-
if (regex.test(
|
|
762
|
-
const existing = domainToRoutes.get(
|
|
762
|
+
for (const knownDomain of allKnownDomains) {
|
|
763
|
+
if (regex.test(knownDomain)) {
|
|
764
|
+
const existing = domainToRoutes.get(knownDomain);
|
|
763
765
|
if (existing) { existing.push(routeName); }
|
|
764
|
-
else { domainToRoutes.set(
|
|
766
|
+
else { domainToRoutes.set(knownDomain, [routeName]); }
|
|
765
767
|
}
|
|
766
768
|
}
|
|
767
769
|
} else {
|
|
768
|
-
// Concrete domain
|
|
769
770
|
const existing = domainToRoutes.get(pattern);
|
|
770
771
|
if (existing) { existing.push(routeName); }
|
|
771
772
|
else { domainToRoutes.set(pattern, [routeName]); }
|
|
@@ -773,37 +774,40 @@ export class MetricsManager {
|
|
|
773
774
|
}
|
|
774
775
|
}
|
|
775
776
|
|
|
776
|
-
//
|
|
777
|
-
//
|
|
778
|
-
|
|
777
|
+
// For each route, compute the total request count across all its resolved domains
|
|
778
|
+
// so we can distribute throughput/connections proportionally
|
|
779
|
+
const routeTotalRequests = new Map<string, number>();
|
|
780
|
+
for (const [domain, routeNames] of domainToRoutes) {
|
|
781
|
+
const reqs = domainRequestTotals.get(domain) || 0;
|
|
782
|
+
for (const routeName of routeNames) {
|
|
783
|
+
routeTotalRequests.set(routeName, (routeTotalRequests.get(routeName) || 0) + reqs);
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
// Aggregate metrics per domain using request-count-proportional splitting
|
|
779
788
|
const domainAgg = new Map<string, {
|
|
780
789
|
activeConnections: number;
|
|
781
790
|
bytesInPerSec: number;
|
|
782
791
|
bytesOutPerSec: number;
|
|
783
792
|
routeCount: number;
|
|
793
|
+
requestCount: number;
|
|
784
794
|
}>();
|
|
785
795
|
|
|
786
|
-
// Track which routes are accounted for
|
|
787
|
-
const accountedRoutes = new Set<string>();
|
|
788
|
-
|
|
789
796
|
for (const [domain, routeNames] of domainToRoutes) {
|
|
797
|
+
const domainReqs = domainRequestTotals.get(domain) || 0;
|
|
790
798
|
let totalConns = 0;
|
|
791
799
|
let totalIn = 0;
|
|
792
800
|
let totalOut = 0;
|
|
793
801
|
|
|
794
802
|
for (const routeName of routeNames) {
|
|
795
|
-
accountedRoutes.add(routeName);
|
|
796
803
|
const conns = connectionsByRoute.get(routeName) || 0;
|
|
797
804
|
const tp = throughputByRoute.get(routeName) || { in: 0, out: 0 };
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
totalConns += conns / share;
|
|
805
|
-
totalIn += tp.in / share;
|
|
806
|
-
totalOut += tp.out / share;
|
|
805
|
+
const routeTotal = routeTotalRequests.get(routeName) || 0;
|
|
806
|
+
|
|
807
|
+
const share = routeTotal > 0 ? domainReqs / routeTotal : 0;
|
|
808
|
+
totalConns += conns * share;
|
|
809
|
+
totalIn += tp.in * share;
|
|
810
|
+
totalOut += tp.out * share;
|
|
807
811
|
}
|
|
808
812
|
|
|
809
813
|
domainAgg.set(domain, {
|
|
@@ -811,31 +815,10 @@ export class MetricsManager {
|
|
|
811
815
|
bytesInPerSec: totalIn,
|
|
812
816
|
bytesOutPerSec: totalOut,
|
|
813
817
|
routeCount: routeNames.length,
|
|
818
|
+
requestCount: domainReqs,
|
|
814
819
|
});
|
|
815
820
|
}
|
|
816
821
|
|
|
817
|
-
// Include routes with no domain config (fallback: use route name)
|
|
818
|
-
for (const [routeName, activeConns] of connectionsByRoute) {
|
|
819
|
-
if (accountedRoutes.has(routeName)) continue;
|
|
820
|
-
if (routeDomains.has(routeName)) continue; // has domains but no traffic matched
|
|
821
|
-
const tp = throughputByRoute.get(routeName) || { in: 0, out: 0 };
|
|
822
|
-
if (activeConns === 0 && tp.in === 0 && tp.out === 0) continue;
|
|
823
|
-
const existing = domainAgg.get(routeName);
|
|
824
|
-
if (existing) {
|
|
825
|
-
existing.activeConnections += activeConns;
|
|
826
|
-
existing.bytesInPerSec += tp.in;
|
|
827
|
-
existing.bytesOutPerSec += tp.out;
|
|
828
|
-
existing.routeCount++;
|
|
829
|
-
} else {
|
|
830
|
-
domainAgg.set(routeName, {
|
|
831
|
-
activeConnections: activeConns,
|
|
832
|
-
bytesInPerSec: tp.in,
|
|
833
|
-
bytesOutPerSec: tp.out,
|
|
834
|
-
routeCount: 1,
|
|
835
|
-
});
|
|
836
|
-
}
|
|
837
|
-
}
|
|
838
|
-
|
|
839
822
|
const domainActivity = Array.from(domainAgg.entries())
|
|
840
823
|
.map(([domain, data]) => ({
|
|
841
824
|
domain,
|
|
@@ -843,6 +826,7 @@ export class MetricsManager {
|
|
|
843
826
|
bytesOutPerSecond: data.bytesOutPerSec,
|
|
844
827
|
activeConnections: data.activeConnections,
|
|
845
828
|
routeCount: data.routeCount,
|
|
829
|
+
requestCount: data.requestCount,
|
|
846
830
|
}))
|
|
847
831
|
.sort((a, b) => (b.bytesInPerSecond + b.bytesOutPerSecond) - (a.bytesInPerSecond + a.bytesOutPerSecond));
|
|
848
832
|
|
|
@@ -560,11 +560,12 @@ export class OpsViewNetworkActivity extends DeesElement {
|
|
|
560
560
|
'Throughput Out': this.formatBitsPerSecond(item.bytesOutPerSecond),
|
|
561
561
|
'Transferred / min': this.formatBytes(totalBytesPerMin),
|
|
562
562
|
'Connections': item.activeConnections,
|
|
563
|
+
'Requests': item.requestCount?.toLocaleString() ?? '0',
|
|
563
564
|
'Routes': item.routeCount,
|
|
564
565
|
};
|
|
565
566
|
}}
|
|
566
567
|
heading1="Domain Activity"
|
|
567
|
-
heading2="Per-domain network activity
|
|
568
|
+
heading2="Per-domain network activity from request-level metrics"
|
|
568
569
|
searchable
|
|
569
570
|
.showColumnFilters=${true}
|
|
570
571
|
.pagination=${false}
|
|
@@ -49,6 +49,8 @@ function setupTlsVisibility(formEl: any) {
|
|
|
49
49
|
|
|
50
50
|
@customElement('ops-view-routes')
|
|
51
51
|
export class OpsViewRoutes extends DeesElement {
|
|
52
|
+
@state() accessor routeFilter: 'User Routes' | 'System Routes' = 'User Routes';
|
|
53
|
+
|
|
52
54
|
@state() accessor routeState: appstate.IRouteManagementState = {
|
|
53
55
|
mergedRoutes: [],
|
|
54
56
|
warnings: [],
|
|
@@ -156,20 +158,20 @@ export class OpsViewRoutes extends DeesElement {
|
|
|
156
158
|
},
|
|
157
159
|
{
|
|
158
160
|
id: 'configRoutes',
|
|
159
|
-
title: '
|
|
161
|
+
title: 'System Routes',
|
|
160
162
|
type: 'number',
|
|
161
163
|
value: configCount,
|
|
162
164
|
icon: 'lucide:settings',
|
|
163
|
-
description: '
|
|
165
|
+
description: 'From config, email, and DNS',
|
|
164
166
|
color: '#8b5cf6',
|
|
165
167
|
},
|
|
166
168
|
{
|
|
167
169
|
id: 'apiRoutes',
|
|
168
|
-
title: '
|
|
170
|
+
title: 'User Routes',
|
|
169
171
|
type: 'number',
|
|
170
172
|
value: apiCount,
|
|
171
173
|
icon: 'lucide:code',
|
|
172
|
-
description: '
|
|
174
|
+
description: 'Created via API',
|
|
173
175
|
color: '#0ea5e9',
|
|
174
176
|
},
|
|
175
177
|
{
|
|
@@ -183,8 +185,14 @@ export class OpsViewRoutes extends DeesElement {
|
|
|
183
185
|
},
|
|
184
186
|
];
|
|
185
187
|
|
|
186
|
-
//
|
|
187
|
-
const
|
|
188
|
+
// Filter routes based on selected tab
|
|
189
|
+
const isUserRoutes = this.routeFilter === 'User Routes';
|
|
190
|
+
const filteredRoutes = mergedRoutes.filter((mr) =>
|
|
191
|
+
isUserRoutes ? mr.origin === 'api' : mr.origin !== 'api'
|
|
192
|
+
);
|
|
193
|
+
|
|
194
|
+
// Map filtered routes to sz-route-list-view format
|
|
195
|
+
const szRoutes = filteredRoutes.map((mr) => {
|
|
188
196
|
const tags = [...(mr.route.tags || [])];
|
|
189
197
|
tags.push(mr.origin);
|
|
190
198
|
if (!mr.enabled) tags.push('disabled');
|
|
@@ -218,6 +226,13 @@ export class OpsViewRoutes extends DeesElement {
|
|
|
218
226
|
]}
|
|
219
227
|
></dees-statsgrid>
|
|
220
228
|
|
|
229
|
+
<dees-input-multitoggle
|
|
230
|
+
.type=${'single'}
|
|
231
|
+
.options=${['User Routes', 'System Routes']}
|
|
232
|
+
.selectedOption=${this.routeFilter}
|
|
233
|
+
@change=${(e: any) => { this.routeFilter = e.target.value || e.target.selectedOption; }}
|
|
234
|
+
></dees-input-multitoggle>
|
|
235
|
+
|
|
221
236
|
${warnings.length > 0
|
|
222
237
|
? html`
|
|
223
238
|
<div class="warnings-bar">
|
|
@@ -237,6 +252,7 @@ export class OpsViewRoutes extends DeesElement {
|
|
|
237
252
|
? html`
|
|
238
253
|
<sz-route-list-view
|
|
239
254
|
.routes=${szRoutes}
|
|
255
|
+
.showActionsFilter=${isUserRoutes ? () => true : () => false}
|
|
240
256
|
@route-click=${(e: CustomEvent) => this.handleRouteClick(e)}
|
|
241
257
|
@route-edit=${(e: CustomEvent) => this.handleRouteEdit(e)}
|
|
242
258
|
@route-delete=${(e: CustomEvent) => this.handleRouteDelete(e)}
|
|
@@ -244,8 +260,8 @@ export class OpsViewRoutes extends DeesElement {
|
|
|
244
260
|
`
|
|
245
261
|
: html`
|
|
246
262
|
<div class="empty-state">
|
|
247
|
-
<p>No routes
|
|
248
|
-
<p
|
|
263
|
+
<p>No ${isUserRoutes ? 'user' : 'system'} routes</p>
|
|
264
|
+
<p>${isUserRoutes ? 'Add a route to get started.' : 'System routes are generated from config, email, and DNS settings.'}</p>
|
|
249
265
|
</div>
|
|
250
266
|
`}
|
|
251
267
|
</div>
|