@serve.zone/dcrouter 11.0.38 → 11.0.39

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 (78) 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_web/00_commitinfo_data.ts +1 -1
  6. package/dist_ts/cache/classes.cache.cleaner.d.ts +0 -47
  7. package/dist_ts/cache/classes.cache.cleaner.js +0 -130
  8. package/dist_ts/cache/documents/classes.cached.email.d.ts +0 -125
  9. package/dist_ts/cache/documents/classes.cached.email.js +0 -337
  10. package/dist_ts/cache/documents/classes.cached.ip.reputation.d.ts +0 -119
  11. package/dist_ts/cache/documents/classes.cached.ip.reputation.js +0 -323
  12. package/dist_ts/cache/documents/index.d.ts +0 -2
  13. package/dist_ts/cache/documents/index.js +0 -3
  14. package/dist_ts/cache/index.d.ts +0 -4
  15. package/dist_ts/cache/index.js +0 -7
  16. package/dist_ts/classes.cert-provision-scheduler.d.ts +0 -53
  17. package/dist_ts/classes.cert-provision-scheduler.js +0 -110
  18. package/dist_ts/classes.storage-cert-manager.d.ts +0 -18
  19. package/dist_ts/classes.storage-cert-manager.js +0 -43
  20. package/dist_ts/errors/base.errors.js +0 -320
  21. package/dist_ts/errors/error.codes.d.ts +0 -115
  22. package/dist_ts/errors/error.codes.js +0 -136
  23. package/dist_ts/monitoring/classes.metricscache.d.ts +0 -32
  24. package/dist_ts/monitoring/classes.metricscache.js +0 -63
  25. package/dist_ts/monitoring/classes.metricsmanager.d.ts +0 -178
  26. package/dist_ts/monitoring/classes.metricsmanager.js +0 -642
  27. package/dist_ts/monitoring/index.d.ts +0 -1
  28. package/dist_ts/monitoring/index.js +0 -2
  29. package/dist_ts/opsserver/classes.opsserver.d.ts +0 -37
  30. package/dist_ts/opsserver/classes.opsserver.js +0 -85
  31. package/dist_ts/opsserver/handlers/admin.handler.d.ts +0 -31
  32. package/dist_ts/opsserver/handlers/admin.handler.js +0 -180
  33. package/dist_ts/opsserver/handlers/api-token.handler.d.ts +0 -6
  34. package/dist_ts/opsserver/handlers/api-token.handler.js +0 -62
  35. package/dist_ts/opsserver/handlers/certificate.handler.d.ts +0 -32
  36. package/dist_ts/opsserver/handlers/certificate.handler.js +0 -421
  37. package/dist_ts/opsserver/handlers/config.handler.d.ts +0 -7
  38. package/dist_ts/opsserver/handlers/config.handler.js +0 -192
  39. package/dist_ts/opsserver/handlers/email-ops.handler.d.ts +0 -30
  40. package/dist_ts/opsserver/handlers/email-ops.handler.js +0 -227
  41. package/dist_ts/opsserver/handlers/index.d.ts +0 -11
  42. package/dist_ts/opsserver/handlers/index.js +0 -12
  43. package/dist_ts/opsserver/handlers/logs.handler.d.ts +0 -25
  44. package/dist_ts/opsserver/handlers/logs.handler.js +0 -256
  45. package/dist_ts/opsserver/handlers/radius.handler.d.ts +0 -6
  46. package/dist_ts/opsserver/handlers/radius.handler.js +0 -295
  47. package/dist_ts/opsserver/handlers/remoteingress.handler.d.ts +0 -6
  48. package/dist_ts/opsserver/handlers/remoteingress.handler.js +0 -156
  49. package/dist_ts/opsserver/handlers/route-management.handler.d.ts +0 -14
  50. package/dist_ts/opsserver/handlers/route-management.handler.js +0 -117
  51. package/dist_ts/opsserver/handlers/security.handler.d.ts +0 -9
  52. package/dist_ts/opsserver/handlers/security.handler.js +0 -231
  53. package/dist_ts/opsserver/handlers/stats.handler.d.ts +0 -11
  54. package/dist_ts/opsserver/handlers/stats.handler.js +0 -399
  55. package/dist_ts/opsserver/helpers/guards.d.ts +0 -27
  56. package/dist_ts/opsserver/helpers/guards.js +0 -43
  57. package/dist_ts/opsserver/index.d.ts +0 -1
  58. package/dist_ts/opsserver/index.js +0 -2
  59. package/dist_ts/radius/classes.accounting.manager.d.ts +0 -218
  60. package/dist_ts/radius/classes.accounting.manager.js +0 -417
  61. package/dist_ts/radius/classes.radius.server.d.ts +0 -171
  62. package/dist_ts/radius/classes.radius.server.js +0 -385
  63. package/dist_ts/radius/classes.vlan.manager.d.ts +0 -128
  64. package/dist_ts/radius/classes.vlan.manager.js +0 -279
  65. package/dist_ts/radius/index.d.ts +0 -13
  66. package/dist_ts/radius/index.js +0 -14
  67. package/dist_ts/remoteingress/classes.remoteingress-manager.d.ts +0 -82
  68. package/dist_ts/remoteingress/classes.remoteingress-manager.js +0 -227
  69. package/dist_ts/remoteingress/classes.tunnel-manager.d.ts +0 -59
  70. package/dist_ts/remoteingress/classes.tunnel-manager.js +0 -165
  71. package/dist_ts/remoteingress/index.d.ts +0 -2
  72. package/dist_ts/remoteingress/index.js +0 -3
  73. package/dist_ts/security/classes.securitylogger.d.ts +0 -144
  74. package/dist_ts/security/classes.securitylogger.js +0 -233
  75. package/dist_ts/storage/classes.storagemanager.d.ts +0 -83
  76. package/dist_ts/storage/classes.storagemanager.js +0 -350
  77. package/dist_ts/storage/index.d.ts +0 -1
  78. package/dist_ts/storage/index.js +0 -3
@@ -1,233 +0,0 @@
1
- import * as plugins from '../plugins.js';
2
- import { logger } from '../logger.js';
3
- /**
4
- * Log level for security events
5
- */
6
- export var SecurityLogLevel;
7
- (function (SecurityLogLevel) {
8
- SecurityLogLevel["INFO"] = "info";
9
- SecurityLogLevel["WARN"] = "warn";
10
- SecurityLogLevel["ERROR"] = "error";
11
- SecurityLogLevel["CRITICAL"] = "critical";
12
- })(SecurityLogLevel || (SecurityLogLevel = {}));
13
- /**
14
- * Security event types for categorization
15
- */
16
- export var SecurityEventType;
17
- (function (SecurityEventType) {
18
- SecurityEventType["AUTHENTICATION"] = "authentication";
19
- SecurityEventType["ACCESS_CONTROL"] = "access_control";
20
- SecurityEventType["EMAIL_VALIDATION"] = "email_validation";
21
- SecurityEventType["EMAIL_PROCESSING"] = "email_processing";
22
- SecurityEventType["EMAIL_FORWARDING"] = "email_forwarding";
23
- SecurityEventType["EMAIL_DELIVERY"] = "email_delivery";
24
- SecurityEventType["DKIM"] = "dkim";
25
- SecurityEventType["SPF"] = "spf";
26
- SecurityEventType["DMARC"] = "dmarc";
27
- SecurityEventType["RATE_LIMIT"] = "rate_limit";
28
- SecurityEventType["RATE_LIMITING"] = "rate_limiting";
29
- SecurityEventType["SPAM"] = "spam";
30
- SecurityEventType["MALWARE"] = "malware";
31
- SecurityEventType["CONNECTION"] = "connection";
32
- SecurityEventType["DATA_EXPOSURE"] = "data_exposure";
33
- SecurityEventType["CONFIGURATION"] = "configuration";
34
- SecurityEventType["IP_REPUTATION"] = "ip_reputation";
35
- SecurityEventType["REJECTED_CONNECTION"] = "rejected_connection";
36
- })(SecurityEventType || (SecurityEventType = {}));
37
- /**
38
- * Security logger for enhanced security monitoring
39
- */
40
- export class SecurityLogger {
41
- static instance;
42
- securityEvents = [];
43
- maxEventHistory;
44
- enableNotifications;
45
- constructor(options) {
46
- this.maxEventHistory = options?.maxEventHistory || 1000;
47
- this.enableNotifications = options?.enableNotifications || false;
48
- }
49
- /**
50
- * Get singleton instance
51
- */
52
- static getInstance(options) {
53
- if (!SecurityLogger.instance) {
54
- SecurityLogger.instance = new SecurityLogger(options);
55
- }
56
- return SecurityLogger.instance;
57
- }
58
- /**
59
- * Reset the singleton instance (for shutdown/testing)
60
- */
61
- static resetInstance() {
62
- SecurityLogger.instance = undefined;
63
- }
64
- /**
65
- * Log a security event
66
- * @param event The security event to log
67
- */
68
- logEvent(event) {
69
- const fullEvent = {
70
- ...event,
71
- timestamp: Date.now()
72
- };
73
- // Store in memory buffer
74
- this.securityEvents.push(fullEvent);
75
- // Trim history if needed
76
- if (this.securityEvents.length > this.maxEventHistory) {
77
- this.securityEvents.shift();
78
- }
79
- // Log to regular logger with appropriate level
80
- switch (event.level) {
81
- case SecurityLogLevel.INFO:
82
- logger.log('info', `[SECURITY:${event.type}] ${event.message}`, event.details);
83
- break;
84
- case SecurityLogLevel.WARN:
85
- logger.log('warn', `[SECURITY:${event.type}] ${event.message}`, event.details);
86
- break;
87
- case SecurityLogLevel.ERROR:
88
- case SecurityLogLevel.CRITICAL:
89
- logger.log('error', `[SECURITY:${event.type}] ${event.message}`, event.details);
90
- // Send notification for critical events if enabled
91
- if (event.level === SecurityLogLevel.CRITICAL && this.enableNotifications) {
92
- this.sendNotification(fullEvent);
93
- }
94
- break;
95
- }
96
- }
97
- /**
98
- * Get recent security events
99
- * @param limit Maximum number of events to return
100
- * @param filter Filter for specific event types
101
- * @returns Recent security events
102
- */
103
- getRecentEvents(limit = 100, filter) {
104
- let filteredEvents = this.securityEvents;
105
- // Apply filters
106
- if (filter) {
107
- if (filter.level) {
108
- filteredEvents = filteredEvents.filter(event => event.level === filter.level);
109
- }
110
- if (filter.type) {
111
- filteredEvents = filteredEvents.filter(event => event.type === filter.type);
112
- }
113
- if (filter.fromTimestamp) {
114
- filteredEvents = filteredEvents.filter(event => event.timestamp >= filter.fromTimestamp);
115
- }
116
- if (filter.toTimestamp) {
117
- filteredEvents = filteredEvents.filter(event => event.timestamp <= filter.toTimestamp);
118
- }
119
- }
120
- // Return most recent events up to limit (slice first to avoid mutating source)
121
- return filteredEvents
122
- .slice()
123
- .sort((a, b) => b.timestamp - a.timestamp)
124
- .slice(0, limit);
125
- }
126
- /**
127
- * Get events by security level
128
- * @param level The security level to filter by
129
- * @param limit Maximum number of events to return
130
- * @returns Security events matching the level
131
- */
132
- getEventsByLevel(level, limit = 100) {
133
- return this.getRecentEvents(limit, { level });
134
- }
135
- /**
136
- * Get events by security type
137
- * @param type The event type to filter by
138
- * @param limit Maximum number of events to return
139
- * @returns Security events matching the type
140
- */
141
- getEventsByType(type, limit = 100) {
142
- return this.getRecentEvents(limit, { type });
143
- }
144
- /**
145
- * Get security events for a specific IP address
146
- * @param ipAddress The IP address to filter by
147
- * @param limit Maximum number of events to return
148
- * @returns Security events for the IP address
149
- */
150
- getEventsByIP(ipAddress, limit = 100) {
151
- return this.securityEvents
152
- .filter(event => event.ipAddress === ipAddress)
153
- .sort((a, b) => b.timestamp - a.timestamp)
154
- .slice(0, limit);
155
- }
156
- /**
157
- * Get security events for a specific domain
158
- * @param domain The domain to filter by
159
- * @param limit Maximum number of events to return
160
- * @returns Security events for the domain
161
- */
162
- getEventsByDomain(domain, limit = 100) {
163
- return this.securityEvents
164
- .filter(event => event.domain === domain)
165
- .sort((a, b) => b.timestamp - a.timestamp)
166
- .slice(0, limit);
167
- }
168
- /**
169
- * Send a notification for critical security events
170
- * @param event The security event to notify about
171
- * @private
172
- */
173
- sendNotification(event) {
174
- // In a production environment, this would integrate with a notification service
175
- // For now, we'll just log that we would send a notification
176
- logger.log('error', `[SECURITY NOTIFICATION] ${event.message}`, {
177
- ...event,
178
- notificationSent: true
179
- });
180
- // Future integration with alerting systems would go here
181
- }
182
- /**
183
- * Clear event history
184
- */
185
- clearEvents() {
186
- this.securityEvents = [];
187
- }
188
- /**
189
- * Get statistical summary of security events
190
- * @param timeWindow Optional time window in milliseconds
191
- * @returns Summary of security events
192
- */
193
- getEventsSummary(timeWindow) {
194
- const cutoff = timeWindow ? Date.now() - timeWindow : 0;
195
- // Initialize counters
196
- const byLevel = {};
197
- for (const level of Object.values(SecurityLogLevel)) {
198
- byLevel[level] = 0;
199
- }
200
- const byType = {};
201
- for (const type of Object.values(SecurityEventType)) {
202
- byType[type] = 0;
203
- }
204
- const ipCounts = new Map();
205
- const domainCounts = new Map();
206
- // Single pass over all events
207
- let total = 0;
208
- for (const e of this.securityEvents) {
209
- if (cutoff && e.timestamp < cutoff)
210
- continue;
211
- total++;
212
- byLevel[e.level]++;
213
- byType[e.type]++;
214
- if (e.ipAddress) {
215
- ipCounts.set(e.ipAddress, (ipCounts.get(e.ipAddress) || 0) + 1);
216
- }
217
- if (e.domain) {
218
- domainCounts.set(e.domain, (domainCounts.get(e.domain) || 0) + 1);
219
- }
220
- }
221
- // Sort and limit top entries
222
- const topIPs = Array.from(ipCounts.entries())
223
- .map(([ip, count]) => ({ ip, count }))
224
- .sort((a, b) => b.count - a.count)
225
- .slice(0, 10);
226
- const topDomains = Array.from(domainCounts.entries())
227
- .map(([domain, count]) => ({ domain, count }))
228
- .sort((a, b) => b.count - a.count)
229
- .slice(0, 10);
230
- return { total, byLevel, byType, topIPs, topDomains };
231
- }
232
- }
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5zZWN1cml0eWxvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL3NlY3VyaXR5L2NsYXNzZXMuc2VjdXJpdHlsb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV0Qzs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGdCQUtYO0FBTEQsV0FBWSxnQkFBZ0I7SUFDMUIsaUNBQWEsQ0FBQTtJQUNiLGlDQUFhLENBQUE7SUFDYixtQ0FBZSxDQUFBO0lBQ2YseUNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUxXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFLM0I7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGlCQW1CWDtBQW5CRCxXQUFZLGlCQUFpQjtJQUMzQixzREFBaUMsQ0FBQTtJQUNqQyxzREFBaUMsQ0FBQTtJQUNqQywwREFBcUMsQ0FBQTtJQUNyQywwREFBcUMsQ0FBQTtJQUNyQywwREFBcUMsQ0FBQTtJQUNyQyxzREFBaUMsQ0FBQTtJQUNqQyxrQ0FBYSxDQUFBO0lBQ2IsZ0NBQVcsQ0FBQTtJQUNYLG9DQUFlLENBQUE7SUFDZiw4Q0FBeUIsQ0FBQTtJQUN6QixvREFBK0IsQ0FBQTtJQUMvQixrQ0FBYSxDQUFBO0lBQ2Isd0NBQW1CLENBQUE7SUFDbkIsOENBQXlCLENBQUE7SUFDekIsb0RBQStCLENBQUE7SUFDL0Isb0RBQStCLENBQUE7SUFDL0Isb0RBQStCLENBQUE7SUFDL0IsZ0VBQTJDLENBQUE7QUFDN0MsQ0FBQyxFQW5CVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBbUI1QjtBQXFCRDs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBQ2pCLE1BQU0sQ0FBQyxRQUFRLENBQWlCO0lBQ2hDLGNBQWMsR0FBcUIsRUFBRSxDQUFDO0lBQ3RDLGVBQWUs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
@@ -1,83 +0,0 @@
1
- /**
2
- * Storage configuration interface
3
- */
4
- export interface IStorageConfig {
5
- /** Filesystem path for storage */
6
- fsPath?: string;
7
- /** Custom read function */
8
- readFunction?: (key: string) => Promise<string>;
9
- /** Custom write function */
10
- writeFunction?: (key: string, value: string) => Promise<void>;
11
- }
12
- /**
13
- * Storage backend type
14
- */
15
- export type StorageBackend = 'filesystem' | 'custom' | 'memory';
16
- /**
17
- * Central storage manager for DcRouter
18
- * Provides unified key-value storage with multiple backend support
19
- */
20
- export declare class StorageManager {
21
- private static readonly MAX_MEMORY_ENTRIES;
22
- private backend;
23
- private memoryStore;
24
- private config;
25
- private fsBasePath?;
26
- constructor(config?: IStorageConfig);
27
- /**
28
- * Show warning when using memory backend
29
- */
30
- private showMemoryWarning;
31
- /**
32
- * Ensure directory exists for filesystem backend
33
- */
34
- private ensureDirectory;
35
- /**
36
- * Validate and sanitize storage key
37
- */
38
- private validateKey;
39
- /**
40
- * Convert key to filesystem path
41
- */
42
- private keyToPath;
43
- /**
44
- * Internal filesystem read function
45
- */
46
- private fsRead;
47
- /**
48
- * Internal filesystem write function
49
- */
50
- private fsWrite;
51
- /**
52
- * Get value by key
53
- */
54
- get(key: string): Promise<string | null>;
55
- /**
56
- * Set value by key
57
- */
58
- set(key: string, value: string): Promise<void>;
59
- /**
60
- * Delete value by key
61
- */
62
- delete(key: string): Promise<void>;
63
- /**
64
- * List keys by prefix
65
- */
66
- list(prefix?: string): Promise<string[]>;
67
- /**
68
- * Check if key exists
69
- */
70
- exists(key: string): Promise<boolean>;
71
- /**
72
- * Get storage backend type
73
- */
74
- getBackend(): StorageBackend;
75
- /**
76
- * JSON helper: Get and parse JSON value
77
- */
78
- getJSON<T = any>(key: string): Promise<T | null>;
79
- /**
80
- * JSON helper: Set value as JSON
81
- */
82
- setJSON(key: string, value: any): Promise<void>;
83
- }