@serve.zone/dcrouter 11.0.36 → 11.0.37

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 (90) 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 +1 -1
  4. package/ts/00_commitinfo_data.ts +1 -1
  5. package/ts_web/00_commitinfo_data.ts +1 -1
  6. package/dist_ts/00_commitinfo_data.d.ts +0 -8
  7. package/dist_ts/00_commitinfo_data.js +0 -9
  8. package/dist_ts/cache/classes.cache.cleaner.d.ts +0 -47
  9. package/dist_ts/cache/classes.cache.cleaner.js +0 -130
  10. package/dist_ts/cache/classes.cached.document.d.ts +0 -76
  11. package/dist_ts/cache/classes.cached.document.js +0 -100
  12. package/dist_ts/cache/classes.cachedb.d.ts +0 -60
  13. package/dist_ts/cache/classes.cachedb.js +0 -126
  14. package/dist_ts/cache/documents/classes.cached.email.d.ts +0 -125
  15. package/dist_ts/cache/documents/classes.cached.email.js +0 -337
  16. package/dist_ts/cache/documents/classes.cached.ip.reputation.d.ts +0 -119
  17. package/dist_ts/cache/documents/classes.cached.ip.reputation.js +0 -323
  18. package/dist_ts/cache/documents/index.d.ts +0 -2
  19. package/dist_ts/cache/documents/index.js +0 -3
  20. package/dist_ts/cache/index.d.ts +0 -4
  21. package/dist_ts/cache/index.js +0 -7
  22. package/dist_ts/classes.cert-provision-scheduler.d.ts +0 -53
  23. package/dist_ts/classes.cert-provision-scheduler.js +0 -110
  24. package/dist_ts/classes.storage-cert-manager.d.ts +0 -18
  25. package/dist_ts/classes.storage-cert-manager.js +0 -43
  26. package/dist_ts/errors/base.errors.js +0 -320
  27. package/dist_ts/errors/error.codes.d.ts +0 -115
  28. package/dist_ts/errors/error.codes.js +0 -136
  29. package/dist_ts/logger.d.ts +0 -21
  30. package/dist_ts/logger.js +0 -81
  31. package/dist_ts/monitoring/classes.metricscache.d.ts +0 -32
  32. package/dist_ts/monitoring/classes.metricscache.js +0 -63
  33. package/dist_ts/monitoring/classes.metricsmanager.d.ts +0 -178
  34. package/dist_ts/monitoring/classes.metricsmanager.js +0 -642
  35. package/dist_ts/monitoring/index.d.ts +0 -1
  36. package/dist_ts/monitoring/index.js +0 -2
  37. package/dist_ts/opsserver/classes.opsserver.d.ts +0 -37
  38. package/dist_ts/opsserver/classes.opsserver.js +0 -85
  39. package/dist_ts/opsserver/handlers/admin.handler.d.ts +0 -31
  40. package/dist_ts/opsserver/handlers/admin.handler.js +0 -180
  41. package/dist_ts/opsserver/handlers/api-token.handler.d.ts +0 -6
  42. package/dist_ts/opsserver/handlers/api-token.handler.js +0 -62
  43. package/dist_ts/opsserver/handlers/certificate.handler.d.ts +0 -32
  44. package/dist_ts/opsserver/handlers/certificate.handler.js +0 -421
  45. package/dist_ts/opsserver/handlers/config.handler.d.ts +0 -7
  46. package/dist_ts/opsserver/handlers/config.handler.js +0 -192
  47. package/dist_ts/opsserver/handlers/email-ops.handler.d.ts +0 -30
  48. package/dist_ts/opsserver/handlers/email-ops.handler.js +0 -227
  49. package/dist_ts/opsserver/handlers/index.d.ts +0 -11
  50. package/dist_ts/opsserver/handlers/index.js +0 -12
  51. package/dist_ts/opsserver/handlers/logs.handler.d.ts +0 -25
  52. package/dist_ts/opsserver/handlers/logs.handler.js +0 -256
  53. package/dist_ts/opsserver/handlers/radius.handler.d.ts +0 -6
  54. package/dist_ts/opsserver/handlers/radius.handler.js +0 -295
  55. package/dist_ts/opsserver/handlers/remoteingress.handler.d.ts +0 -6
  56. package/dist_ts/opsserver/handlers/remoteingress.handler.js +0 -156
  57. package/dist_ts/opsserver/handlers/route-management.handler.d.ts +0 -14
  58. package/dist_ts/opsserver/handlers/route-management.handler.js +0 -117
  59. package/dist_ts/opsserver/handlers/security.handler.d.ts +0 -9
  60. package/dist_ts/opsserver/handlers/security.handler.js +0 -231
  61. package/dist_ts/opsserver/handlers/stats.handler.d.ts +0 -11
  62. package/dist_ts/opsserver/handlers/stats.handler.js +0 -399
  63. package/dist_ts/opsserver/helpers/guards.d.ts +0 -27
  64. package/dist_ts/opsserver/helpers/guards.js +0 -43
  65. package/dist_ts/opsserver/index.d.ts +0 -1
  66. package/dist_ts/opsserver/index.js +0 -2
  67. package/dist_ts/paths.d.ts +0 -26
  68. package/dist_ts/paths.js +0 -45
  69. package/dist_ts/plugins.d.ts +0 -79
  70. package/dist_ts/plugins.js +0 -113
  71. package/dist_ts/radius/classes.accounting.manager.d.ts +0 -218
  72. package/dist_ts/radius/classes.accounting.manager.js +0 -417
  73. package/dist_ts/radius/classes.radius.server.d.ts +0 -171
  74. package/dist_ts/radius/classes.radius.server.js +0 -385
  75. package/dist_ts/radius/classes.vlan.manager.d.ts +0 -128
  76. package/dist_ts/radius/classes.vlan.manager.js +0 -279
  77. package/dist_ts/radius/index.d.ts +0 -13
  78. package/dist_ts/radius/index.js +0 -14
  79. package/dist_ts/remoteingress/classes.remoteingress-manager.d.ts +0 -82
  80. package/dist_ts/remoteingress/classes.remoteingress-manager.js +0 -227
  81. package/dist_ts/remoteingress/classes.tunnel-manager.d.ts +0 -59
  82. package/dist_ts/remoteingress/classes.tunnel-manager.js +0 -165
  83. package/dist_ts/remoteingress/index.d.ts +0 -2
  84. package/dist_ts/remoteingress/index.js +0 -3
  85. package/dist_ts/security/classes.securitylogger.d.ts +0 -144
  86. package/dist_ts/security/classes.securitylogger.js +0 -233
  87. package/dist_ts/storage/classes.storagemanager.d.ts +0 -83
  88. package/dist_ts/storage/classes.storagemanager.js +0 -350
  89. package/dist_ts/storage/index.d.ts +0 -1
  90. 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
- }