@serve.zone/dcrouter 11.0.23 → 11.0.27

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.
Files changed (95) hide show
  1. package/dist_serve/bundle.js +1 -1
  2. package/dist_ts_web/00_commitinfo_data.js +1 -1
  3. package/package.json +2 -2
  4. package/ts/00_commitinfo_data.ts +1 -1
  5. package/ts/logger.ts +1 -1
  6. package/ts_web/00_commitinfo_data.ts +1 -1
  7. package/dist_ts/00_commitinfo_data.d.ts +0 -8
  8. package/dist_ts/00_commitinfo_data.js +0 -9
  9. package/dist_ts/cache/classes.cache.cleaner.d.ts +0 -47
  10. package/dist_ts/cache/classes.cache.cleaner.js +0 -130
  11. package/dist_ts/cache/classes.cached.document.d.ts +0 -76
  12. package/dist_ts/cache/classes.cached.document.js +0 -100
  13. package/dist_ts/cache/classes.cachedb.d.ts +0 -60
  14. package/dist_ts/cache/classes.cachedb.js +0 -126
  15. package/dist_ts/cache/documents/classes.cached.email.d.ts +0 -125
  16. package/dist_ts/cache/documents/classes.cached.email.js +0 -337
  17. package/dist_ts/cache/documents/classes.cached.ip.reputation.d.ts +0 -119
  18. package/dist_ts/cache/documents/classes.cached.ip.reputation.js +0 -323
  19. package/dist_ts/cache/documents/index.d.ts +0 -2
  20. package/dist_ts/cache/documents/index.js +0 -3
  21. package/dist_ts/cache/index.d.ts +0 -4
  22. package/dist_ts/cache/index.js +0 -7
  23. package/dist_ts/classes.cert-provision-scheduler.d.ts +0 -53
  24. package/dist_ts/classes.cert-provision-scheduler.js +0 -110
  25. package/dist_ts/classes.storage-cert-manager.d.ts +0 -18
  26. package/dist_ts/classes.storage-cert-manager.js +0 -43
  27. package/dist_ts/config/classes.route-config-manager.js +0 -231
  28. package/dist_ts/config/validator.d.ts +0 -104
  29. package/dist_ts/config/validator.js +0 -152
  30. package/dist_ts/errors/base.errors.d.ts +0 -224
  31. package/dist_ts/errors/base.errors.js +0 -320
  32. package/dist_ts/errors/error.codes.d.ts +0 -115
  33. package/dist_ts/errors/error.codes.js +0 -136
  34. package/dist_ts/logger.d.ts +0 -21
  35. package/dist_ts/logger.js +0 -81
  36. package/dist_ts/monitoring/classes.metricscache.d.ts +0 -32
  37. package/dist_ts/monitoring/classes.metricscache.js +0 -63
  38. package/dist_ts/monitoring/classes.metricsmanager.d.ts +0 -178
  39. package/dist_ts/monitoring/classes.metricsmanager.js +0 -642
  40. package/dist_ts/monitoring/index.d.ts +0 -1
  41. package/dist_ts/monitoring/index.js +0 -2
  42. package/dist_ts/opsserver/classes.opsserver.d.ts +0 -37
  43. package/dist_ts/opsserver/classes.opsserver.js +0 -85
  44. package/dist_ts/opsserver/handlers/admin.handler.d.ts +0 -31
  45. package/dist_ts/opsserver/handlers/admin.handler.js +0 -180
  46. package/dist_ts/opsserver/handlers/api-token.handler.d.ts +0 -6
  47. package/dist_ts/opsserver/handlers/api-token.handler.js +0 -62
  48. package/dist_ts/opsserver/handlers/certificate.handler.d.ts +0 -32
  49. package/dist_ts/opsserver/handlers/certificate.handler.js +0 -421
  50. package/dist_ts/opsserver/handlers/config.handler.d.ts +0 -7
  51. package/dist_ts/opsserver/handlers/config.handler.js +0 -192
  52. package/dist_ts/opsserver/handlers/email-ops.handler.d.ts +0 -30
  53. package/dist_ts/opsserver/handlers/email-ops.handler.js +0 -227
  54. package/dist_ts/opsserver/handlers/index.d.ts +0 -11
  55. package/dist_ts/opsserver/handlers/index.js +0 -12
  56. package/dist_ts/opsserver/handlers/logs.handler.d.ts +0 -25
  57. package/dist_ts/opsserver/handlers/logs.handler.js +0 -256
  58. package/dist_ts/opsserver/handlers/radius.handler.d.ts +0 -6
  59. package/dist_ts/opsserver/handlers/radius.handler.js +0 -295
  60. package/dist_ts/opsserver/handlers/remoteingress.handler.d.ts +0 -6
  61. package/dist_ts/opsserver/handlers/remoteingress.handler.js +0 -156
  62. package/dist_ts/opsserver/handlers/route-management.handler.d.ts +0 -14
  63. package/dist_ts/opsserver/handlers/route-management.handler.js +0 -117
  64. package/dist_ts/opsserver/handlers/security.handler.d.ts +0 -9
  65. package/dist_ts/opsserver/handlers/security.handler.js +0 -231
  66. package/dist_ts/opsserver/handlers/stats.handler.d.ts +0 -11
  67. package/dist_ts/opsserver/handlers/stats.handler.js +0 -399
  68. package/dist_ts/opsserver/helpers/guards.d.ts +0 -27
  69. package/dist_ts/opsserver/helpers/guards.js +0 -43
  70. package/dist_ts/opsserver/index.d.ts +0 -1
  71. package/dist_ts/opsserver/index.js +0 -2
  72. package/dist_ts/paths.d.ts +0 -26
  73. package/dist_ts/paths.js +0 -45
  74. package/dist_ts/plugins.d.ts +0 -79
  75. package/dist_ts/plugins.js +0 -113
  76. package/dist_ts/radius/classes.accounting.manager.d.ts +0 -218
  77. package/dist_ts/radius/classes.accounting.manager.js +0 -417
  78. package/dist_ts/radius/classes.radius.server.d.ts +0 -171
  79. package/dist_ts/radius/classes.radius.server.js +0 -385
  80. package/dist_ts/radius/classes.vlan.manager.d.ts +0 -128
  81. package/dist_ts/radius/classes.vlan.manager.js +0 -279
  82. package/dist_ts/radius/index.d.ts +0 -13
  83. package/dist_ts/radius/index.js +0 -14
  84. package/dist_ts/remoteingress/classes.remoteingress-manager.d.ts +0 -82
  85. package/dist_ts/remoteingress/classes.remoteingress-manager.js +0 -227
  86. package/dist_ts/remoteingress/classes.tunnel-manager.d.ts +0 -59
  87. package/dist_ts/remoteingress/classes.tunnel-manager.js +0 -165
  88. package/dist_ts/remoteingress/index.d.ts +0 -2
  89. package/dist_ts/remoteingress/index.js +0 -3
  90. package/dist_ts/security/classes.securitylogger.d.ts +0 -144
  91. package/dist_ts/security/classes.securitylogger.js +0 -233
  92. package/dist_ts/storage/classes.storagemanager.d.ts +0 -83
  93. package/dist_ts/storage/classes.storagemanager.js +0 -350
  94. package/dist_ts/storage/index.d.ts +0 -1
  95. package/dist_ts/storage/index.js +0 -3
@@ -1,113 +0,0 @@
1
- // node native
2
- import * as dns from 'dns';
3
- import * as fs from 'fs';
4
- import * as crypto from 'crypto';
5
- import * as http from 'http';
6
- import * as net from 'net';
7
- import * as os from 'os';
8
- import * as path from 'path';
9
- import * as tls from 'tls';
10
- import * as util from 'util';
11
- export { dns, fs, crypto, http, net, os, path, tls, util, };
12
- // @serve.zone scope
13
- import * as servezoneInterfaces from '@serve.zone/interfaces';
14
- import * as remoteingress from '@serve.zone/remoteingress';
15
- export { servezoneInterfaces, remoteingress, };
16
- // @api.global scope
17
- import * as typedrequest from '@api.global/typedrequest';
18
- import * as typedserver from '@api.global/typedserver';
19
- import * as typedsocket from '@api.global/typedsocket';
20
- export { typedrequest, typedserver, typedsocket, };
21
- // @push.rocks scope
22
- import * as projectinfo from '@push.rocks/projectinfo';
23
- import * as qenv from '@push.rocks/qenv';
24
- import * as smartacme from '@push.rocks/smartacme';
25
- import * as smartdata from '@push.rocks/smartdata';
26
- import * as smartdns from '@push.rocks/smartdns';
27
- import * as smartfile from '@push.rocks/smartfile';
28
- import * as smartguard from '@push.rocks/smartguard';
29
- import * as smartjwt from '@push.rocks/smartjwt';
30
- import * as smartlog from '@push.rocks/smartlog';
31
- import * as smartmetrics from '@push.rocks/smartmetrics';
32
- import * as smartmta from '@push.rocks/smartmta';
33
- import * as smartmongo from '@push.rocks/smartmongo';
34
- import * as smartnetwork from '@push.rocks/smartnetwork';
35
- import * as smartpath from '@push.rocks/smartpath';
36
- import * as smartproxy from '@push.rocks/smartproxy';
37
- import * as smartpromise from '@push.rocks/smartpromise';
38
- import * as smartradius from '@push.rocks/smartradius';
39
- import * as smartrequest from '@push.rocks/smartrequest';
40
- import * as smartrx from '@push.rocks/smartrx';
41
- import * as smartunique from '@push.rocks/smartunique';
42
- export { projectinfo, qenv, smartacme, smartdata, smartdns, smartfile, smartguard, smartjwt, smartlog, smartmetrics, smartmongo, smartmta, smartnetwork, smartpath, smartproxy, smartpromise, smartradius, smartrequest, smartrx, smartunique };
43
- // apiclient.xyz scope
44
- import * as cloudflare from '@apiclient.xyz/cloudflare';
45
- export { cloudflare, };
46
- // tsclass scope
47
- import * as tsclass from '@tsclass/tsclass';
48
- export { tsclass, };
49
- // third party
50
- import * as uuid from 'uuid';
51
- export { uuid, };
52
- // Filesystem utilities (compatibility helpers for smartfile v13+)
53
- export const fsUtils = {
54
- /**
55
- * Ensure a directory exists, creating it recursively if needed (sync)
56
- */
57
- ensureDirSync: (dirPath) => {
58
- fs.mkdirSync(dirPath, { recursive: true });
59
- },
60
- /**
61
- * Ensure a directory exists, creating it recursively if needed (async)
62
- */
63
- ensureDir: async (dirPath) => {
64
- await fs.promises.mkdir(dirPath, { recursive: true });
65
- },
66
- /**
67
- * Write JSON content to a file synchronously
68
- */
69
- toFsSync: (content, filePath) => {
70
- const data = typeof content === 'string' ? content : JSON.stringify(content, null, 2);
71
- fs.writeFileSync(filePath, data);
72
- },
73
- /**
74
- * Write JSON content to a file asynchronously
75
- */
76
- toFs: async (content, filePath) => {
77
- const data = typeof content === 'string' ? content : JSON.stringify(content, null, 2);
78
- await fs.promises.writeFile(filePath, data);
79
- },
80
- /**
81
- * Check if a file or directory exists
82
- */
83
- fileExistsSync: (filePath) => {
84
- return fs.existsSync(filePath);
85
- },
86
- /**
87
- * Check if a file or directory exists (async)
88
- */
89
- fileExists: async (filePath) => {
90
- try {
91
- await fs.promises.access(filePath);
92
- return true;
93
- }
94
- catch {
95
- return false;
96
- }
97
- },
98
- /**
99
- * Read a JSON file synchronously
100
- */
101
- toObjectSync: (filePath) => {
102
- const content = fs.readFileSync(filePath, 'utf8');
103
- return JSON.parse(content);
104
- },
105
- /**
106
- * Read a JSON file asynchronously
107
- */
108
- toObject: async (filePath) => {
109
- const content = await fs.promises.readFile(filePath, 'utf8');
110
- return JSON.parse(content);
111
- },
112
- };
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQzNCLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQzNCLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQzNCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFDTCxHQUFHLEVBQ0gsRUFBRSxFQUNGLE1BQU0sRUFDTixJQUFJLEVBQ0osR0FBRyxFQUNILEVBQUUsRUFDRixJQUFJLEVBQ0osR0FBRyxFQUNILElBQUksR0FDTCxDQUFBO0FBRUQsb0JBQW9CO0FBQ3BCLE9BQU8sS0FBSyxtQkFBbUIsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEtBQUssYUFBYSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsYUFBYSxHQUNkLENBQUE7QUFFRCxvQkFBb0I7QUFDcEIsT0FBTyxLQUFLLFlBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEtBQUssV0FBVyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUNMLFlBQVksRUFDWixXQUFXLEVBQ1gsV0FBVyxHQUNaLENBQUE7QUFFRCxvQkFBb0I7QUFDcEIsT0FBTyxLQUFLLFdBQVcsTUFBTSx5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
@@ -1,218 +0,0 @@
1
- import type { StorageManager } from '../storage/index.js';
2
- /**
3
- * RADIUS accounting session
4
- */
5
- export interface IAccountingSession {
6
- /** Unique session ID from RADIUS */
7
- sessionId: string;
8
- /** Username (often MAC address for MAB) */
9
- username: string;
10
- /** MAC address of the device */
11
- macAddress?: string;
12
- /** NAS IP address (switch/AP) */
13
- nasIpAddress: string;
14
- /** NAS port (physical or virtual) */
15
- nasPort?: number;
16
- /** NAS port type */
17
- nasPortType?: string;
18
- /** NAS identifier (name) */
19
- nasIdentifier?: string;
20
- /** Assigned VLAN */
21
- vlanId?: number;
22
- /** Assigned IP address (if any) */
23
- framedIpAddress?: string;
24
- /** Called station ID (usually BSSID for wireless) */
25
- calledStationId?: string;
26
- /** Calling station ID (usually client MAC) */
27
- callingStationId?: string;
28
- /** Session start time */
29
- startTime: number;
30
- /** Session end time (0 if active) */
31
- endTime: number;
32
- /** Last update time (interim accounting) */
33
- lastUpdateTime: number;
34
- /** Session status */
35
- status: 'active' | 'stopped' | 'terminated';
36
- /** Termination cause (if stopped) */
37
- terminateCause?: string;
38
- /** Input octets (bytes received by NAS from client) */
39
- inputOctets: number;
40
- /** Output octets (bytes sent by NAS to client) */
41
- outputOctets: number;
42
- /** Input packets */
43
- inputPackets: number;
44
- /** Output packets */
45
- outputPackets: number;
46
- /** Session duration in seconds */
47
- sessionTime: number;
48
- /** Service type */
49
- serviceType?: string;
50
- }
51
- /**
52
- * Accounting summary for a time period
53
- */
54
- export interface IAccountingSummary {
55
- /** Time period start */
56
- periodStart: number;
57
- /** Time period end */
58
- periodEnd: number;
59
- /** Total sessions */
60
- totalSessions: number;
61
- /** Active sessions */
62
- activeSessions: number;
63
- /** Total input bytes */
64
- totalInputBytes: number;
65
- /** Total output bytes */
66
- totalOutputBytes: number;
67
- /** Total session time (seconds) */
68
- totalSessionTime: number;
69
- /** Average session duration (seconds) */
70
- averageSessionDuration: number;
71
- /** Unique users/devices */
72
- uniqueUsers: number;
73
- /** Sessions by VLAN */
74
- sessionsByVlan: Record<number, number>;
75
- /** Top users by traffic */
76
- topUsersByTraffic: Array<{
77
- username: string;
78
- totalBytes: number;
79
- }>;
80
- }
81
- /**
82
- * Accounting manager configuration
83
- */
84
- export interface IAccountingManagerConfig {
85
- /** Storage key prefix */
86
- storagePrefix?: string;
87
- /** Session retention period in days (default: 30) */
88
- retentionDays?: number;
89
- /** Enable detailed session logging */
90
- detailedLogging?: boolean;
91
- /** Maximum active sessions to track in memory */
92
- maxActiveSessions?: number;
93
- }
94
- /**
95
- * Manages RADIUS accounting data including:
96
- * - Session tracking (start/stop/interim)
97
- * - Data usage tracking (bytes in/out)
98
- * - Session history and retention
99
- * - Billing reports and summaries
100
- */
101
- export declare class AccountingManager {
102
- private activeSessions;
103
- private config;
104
- private storageManager?;
105
- private stats;
106
- constructor(config?: IAccountingManagerConfig, storageManager?: StorageManager);
107
- /**
108
- * Initialize the accounting manager
109
- */
110
- initialize(): Promise<void>;
111
- /**
112
- * Handle accounting start request
113
- */
114
- handleAccountingStart(data: {
115
- sessionId: string;
116
- username: string;
117
- macAddress?: string;
118
- nasIpAddress: string;
119
- nasPort?: number;
120
- nasPortType?: string;
121
- nasIdentifier?: string;
122
- vlanId?: number;
123
- framedIpAddress?: string;
124
- calledStationId?: string;
125
- callingStationId?: string;
126
- serviceType?: string;
127
- }): Promise<void>;
128
- /**
129
- * Handle accounting interim update request
130
- */
131
- handleAccountingUpdate(data: {
132
- sessionId: string;
133
- inputOctets?: number;
134
- outputOctets?: number;
135
- inputPackets?: number;
136
- outputPackets?: number;
137
- sessionTime?: number;
138
- }): Promise<void>;
139
- /**
140
- * Handle accounting stop request
141
- */
142
- handleAccountingStop(data: {
143
- sessionId: string;
144
- terminateCause?: string;
145
- inputOctets?: number;
146
- outputOctets?: number;
147
- inputPackets?: number;
148
- outputPackets?: number;
149
- sessionTime?: number;
150
- }): Promise<void>;
151
- /**
152
- * Get an active session by ID
153
- */
154
- getSession(sessionId: string): IAccountingSession | undefined;
155
- /**
156
- * Get all active sessions
157
- */
158
- getActiveSessions(): IAccountingSession[];
159
- /**
160
- * Get active sessions by username
161
- */
162
- getSessionsByUsername(username: string): IAccountingSession[];
163
- /**
164
- * Get active sessions by NAS IP
165
- */
166
- getSessionsByNas(nasIpAddress: string): IAccountingSession[];
167
- /**
168
- * Get active sessions by VLAN
169
- */
170
- getSessionsByVlan(vlanId: number): IAccountingSession[];
171
- /**
172
- * Get accounting summary for a time period
173
- */
174
- getSummary(startTime: number, endTime: number): Promise<IAccountingSummary>;
175
- /**
176
- * Get statistics
177
- */
178
- getStats(): {
179
- activeSessions: number;
180
- totalSessionsStarted: number;
181
- totalSessionsStopped: number;
182
- totalInputBytes: number;
183
- totalOutputBytes: number;
184
- interimUpdatesReceived: number;
185
- };
186
- /**
187
- * Disconnect a session (admin action)
188
- */
189
- disconnectSession(sessionId: string, reason?: string): Promise<boolean>;
190
- /**
191
- * Clean up old archived sessions based on retention policy
192
- */
193
- cleanupOldSessions(): Promise<number>;
194
- /**
195
- * Find the oldest active session
196
- */
197
- private findOldestSession;
198
- /**
199
- * Evict a session from memory
200
- */
201
- private evictSession;
202
- /**
203
- * Load active sessions from storage
204
- */
205
- private loadActiveSessions;
206
- /**
207
- * Persist a session to storage
208
- */
209
- private persistSession;
210
- /**
211
- * Archive a completed session
212
- */
213
- private archiveSession;
214
- /**
215
- * Get archived sessions for a time period
216
- */
217
- private getArchivedSessions;
218
- }