@serve.zone/dcrouter 11.0.5 → 11.0.6

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 (112) hide show
  1. package/dist_serve/bundle.js +1 -1
  2. package/dist_ts/00_commitinfo_data.d.ts +8 -0
  3. package/dist_ts/00_commitinfo_data.js +9 -0
  4. package/dist_ts/cache/classes.cache.cleaner.d.ts +47 -0
  5. package/dist_ts/cache/documents/index.d.ts +2 -0
  6. package/dist_ts/cache/documents/index.js +3 -0
  7. package/dist_ts/cache/index.d.ts +4 -0
  8. package/dist_ts/cache/index.js +7 -0
  9. package/dist_ts/classes.cert-provision-scheduler.d.ts +53 -0
  10. package/dist_ts/classes.cert-provision-scheduler.js +110 -0
  11. package/dist_ts/classes.dcrouter.d.ts +337 -0
  12. package/dist_ts/classes.dcrouter.js +1405 -0
  13. package/dist_ts/classes.storage-cert-manager.d.ts +18 -0
  14. package/dist_ts/classes.storage-cert-manager.js +43 -0
  15. package/dist_ts/config/classes.api-token-manager.d.ts +46 -0
  16. package/dist_ts/config/classes.api-token-manager.js +150 -0
  17. package/dist_ts/config/classes.route-config-manager.d.ts +35 -0
  18. package/dist_ts/config/classes.route-config-manager.js +231 -0
  19. package/dist_ts/config/index.d.ts +3 -0
  20. package/dist_ts/config/index.js +5 -0
  21. package/dist_ts/config/validator.d.ts +104 -0
  22. package/dist_ts/config/validator.js +152 -0
  23. package/dist_ts/errors/base.errors.d.ts +224 -0
  24. package/dist_ts/errors/base.errors.js +320 -0
  25. package/dist_ts/errors/error-handler.d.ts +98 -0
  26. package/dist_ts/errors/error-handler.js +282 -0
  27. package/dist_ts/errors/error.codes.d.ts +115 -0
  28. package/dist_ts/errors/error.codes.js +136 -0
  29. package/dist_ts/errors/index.d.ts +54 -0
  30. package/dist_ts/errors/index.js +136 -0
  31. package/dist_ts/errors/reputation.errors.d.ts +183 -0
  32. package/dist_ts/errors/reputation.errors.js +292 -0
  33. package/dist_ts/index.d.ts +7 -0
  34. package/dist_ts/index.js +11 -0
  35. package/dist_ts/logger.d.ts +21 -0
  36. package/dist_ts/logger.js +81 -0
  37. package/dist_ts/monitoring/classes.metricscache.d.ts +32 -0
  38. package/dist_ts/monitoring/classes.metricscache.js +63 -0
  39. package/dist_ts/monitoring/classes.metricsmanager.d.ts +178 -0
  40. package/dist_ts/monitoring/classes.metricsmanager.js +642 -0
  41. package/dist_ts/monitoring/index.d.ts +1 -0
  42. package/dist_ts/monitoring/index.js +2 -0
  43. package/dist_ts/opsserver/classes.opsserver.d.ts +37 -0
  44. package/dist_ts/opsserver/classes.opsserver.js +85 -0
  45. package/dist_ts/opsserver/handlers/admin.handler.d.ts +31 -0
  46. package/dist_ts/opsserver/handlers/admin.handler.js +180 -0
  47. package/dist_ts/opsserver/handlers/api-token.handler.d.ts +6 -0
  48. package/dist_ts/opsserver/handlers/api-token.handler.js +62 -0
  49. package/dist_ts/opsserver/handlers/certificate.handler.d.ts +32 -0
  50. package/dist_ts/opsserver/handlers/certificate.handler.js +421 -0
  51. package/dist_ts/opsserver/handlers/config.handler.d.ts +7 -0
  52. package/dist_ts/opsserver/handlers/config.handler.js +192 -0
  53. package/dist_ts/opsserver/handlers/email-ops.handler.d.ts +30 -0
  54. package/dist_ts/opsserver/handlers/email-ops.handler.js +227 -0
  55. package/dist_ts/opsserver/handlers/index.d.ts +11 -0
  56. package/dist_ts/opsserver/handlers/index.js +12 -0
  57. package/dist_ts/opsserver/handlers/logs.handler.d.ts +25 -0
  58. package/dist_ts/opsserver/handlers/logs.handler.js +256 -0
  59. package/dist_ts/opsserver/handlers/radius.handler.d.ts +6 -0
  60. package/dist_ts/opsserver/handlers/radius.handler.js +295 -0
  61. package/dist_ts/opsserver/handlers/remoteingress.handler.d.ts +6 -0
  62. package/dist_ts/opsserver/handlers/remoteingress.handler.js +156 -0
  63. package/dist_ts/opsserver/handlers/route-management.handler.d.ts +14 -0
  64. package/dist_ts/opsserver/handlers/route-management.handler.js +117 -0
  65. package/dist_ts/opsserver/handlers/security.handler.d.ts +9 -0
  66. package/dist_ts/opsserver/handlers/security.handler.js +231 -0
  67. package/dist_ts/opsserver/handlers/stats.handler.d.ts +11 -0
  68. package/dist_ts/opsserver/handlers/stats.handler.js +399 -0
  69. package/dist_ts/opsserver/helpers/guards.d.ts +27 -0
  70. package/dist_ts/opsserver/helpers/guards.js +43 -0
  71. package/dist_ts/opsserver/index.d.ts +1 -0
  72. package/dist_ts/opsserver/index.js +2 -0
  73. package/dist_ts/paths.d.ts +26 -0
  74. package/dist_ts/paths.js +45 -0
  75. package/dist_ts/plugins.d.ts +79 -0
  76. package/dist_ts/plugins.js +113 -0
  77. package/dist_ts/radius/classes.accounting.manager.d.ts +218 -0
  78. package/dist_ts/radius/classes.accounting.manager.js +417 -0
  79. package/dist_ts/radius/classes.radius.server.d.ts +171 -0
  80. package/dist_ts/radius/classes.radius.server.js +385 -0
  81. package/dist_ts/radius/classes.vlan.manager.d.ts +128 -0
  82. package/dist_ts/radius/classes.vlan.manager.js +279 -0
  83. package/dist_ts/radius/index.d.ts +13 -0
  84. package/dist_ts/radius/index.js +14 -0
  85. package/dist_ts/remoteingress/classes.remoteingress-manager.d.ts +82 -0
  86. package/dist_ts/remoteingress/classes.remoteingress-manager.js +227 -0
  87. package/dist_ts/remoteingress/classes.tunnel-manager.d.ts +59 -0
  88. package/dist_ts/remoteingress/classes.tunnel-manager.js +165 -0
  89. package/dist_ts/remoteingress/index.d.ts +2 -0
  90. package/dist_ts/remoteingress/index.js +3 -0
  91. package/dist_ts/security/classes.contentscanner.d.ts +164 -0
  92. package/dist_ts/security/classes.contentscanner.js +642 -0
  93. package/dist_ts/security/classes.ipreputationchecker.d.ts +160 -0
  94. package/dist_ts/security/classes.ipreputationchecker.js +537 -0
  95. package/dist_ts/security/classes.securitylogger.d.ts +144 -0
  96. package/dist_ts/security/classes.securitylogger.js +233 -0
  97. package/dist_ts/security/index.d.ts +3 -0
  98. package/dist_ts/security/index.js +4 -0
  99. package/dist_ts/sms/classes.smsservice.d.ts +15 -0
  100. package/dist_ts/sms/classes.smsservice.js +72 -0
  101. package/dist_ts/sms/config/sms.config.d.ts +93 -0
  102. package/dist_ts/sms/config/sms.config.js +2 -0
  103. package/dist_ts/sms/config/sms.schema.d.ts +5 -0
  104. package/dist_ts/sms/config/sms.schema.js +121 -0
  105. package/dist_ts/sms/index.d.ts +1 -0
  106. package/dist_ts/sms/index.js +2 -0
  107. package/dist_ts/storage/classes.storagemanager.d.ts +83 -0
  108. package/dist_ts/storage/classes.storagemanager.js +350 -0
  109. package/dist_ts/storage/index.d.ts +1 -0
  110. package/dist_ts/storage/index.js +3 -0
  111. package/dist_ts_web/00_commitinfo_data.js +1 -1
  112. package/package.json +19 -11
@@ -0,0 +1,113 @@
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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
@@ -0,0 +1,218 @@
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
+ }