@serve.zone/dcrouter 11.0.1 → 11.0.5

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 (91) 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 +11 -19
  4. package/ts/00_commitinfo_data.ts +1 -1
  5. package/ts_web/00_commitinfo_data.ts +1 -1
  6. package/dist_serve/bundle.js.map +0 -7
  7. package/dist_serve/index.html +0 -1
  8. package/dist_ts/00_commitinfo_data.d.ts +0 -8
  9. package/dist_ts/00_commitinfo_data.js +0 -9
  10. package/dist_ts/classes.cert-provision-scheduler.d.ts +0 -53
  11. package/dist_ts/classes.cert-provision-scheduler.js +0 -110
  12. package/dist_ts/classes.dcrouter.d.ts +0 -337
  13. package/dist_ts/classes.dcrouter.js +0 -1405
  14. package/dist_ts/classes.storage-cert-manager.d.ts +0 -18
  15. package/dist_ts/classes.storage-cert-manager.js +0 -43
  16. package/dist_ts/config/classes.api-token-manager.d.ts +0 -46
  17. package/dist_ts/config/classes.api-token-manager.js +0 -150
  18. package/dist_ts/config/classes.route-config-manager.d.ts +0 -35
  19. package/dist_ts/config/classes.route-config-manager.js +0 -231
  20. package/dist_ts/config/index.d.ts +0 -3
  21. package/dist_ts/config/index.js +0 -5
  22. package/dist_ts/config/validator.d.ts +0 -104
  23. package/dist_ts/config/validator.js +0 -152
  24. package/dist_ts/errors/base.errors.d.ts +0 -224
  25. package/dist_ts/errors/base.errors.js +0 -320
  26. package/dist_ts/errors/error-handler.d.ts +0 -98
  27. package/dist_ts/errors/error-handler.js +0 -282
  28. package/dist_ts/errors/error.codes.d.ts +0 -115
  29. package/dist_ts/errors/error.codes.js +0 -136
  30. package/dist_ts/errors/index.d.ts +0 -54
  31. package/dist_ts/errors/index.js +0 -136
  32. package/dist_ts/errors/reputation.errors.d.ts +0 -183
  33. package/dist_ts/errors/reputation.errors.js +0 -292
  34. package/dist_ts/index.d.ts +0 -7
  35. package/dist_ts/index.js +0 -11
  36. package/dist_ts/logger.d.ts +0 -21
  37. package/dist_ts/logger.js +0 -81
  38. package/dist_ts/opsserver/classes.opsserver.d.ts +0 -37
  39. package/dist_ts/opsserver/classes.opsserver.js +0 -85
  40. package/dist_ts/opsserver/handlers/api-token.handler.d.ts +0 -6
  41. package/dist_ts/opsserver/handlers/api-token.handler.js +0 -62
  42. package/dist_ts/opsserver/handlers/certificate.handler.d.ts +0 -32
  43. package/dist_ts/opsserver/handlers/certificate.handler.js +0 -421
  44. package/dist_ts/opsserver/handlers/email-ops.handler.d.ts +0 -30
  45. package/dist_ts/opsserver/handlers/email-ops.handler.js +0 -227
  46. package/dist_ts/opsserver/handlers/index.d.ts +0 -11
  47. package/dist_ts/opsserver/handlers/index.js +0 -12
  48. package/dist_ts/opsserver/handlers/radius.handler.d.ts +0 -6
  49. package/dist_ts/opsserver/handlers/radius.handler.js +0 -295
  50. package/dist_ts/opsserver/handlers/remoteingress.handler.d.ts +0 -6
  51. package/dist_ts/opsserver/handlers/remoteingress.handler.js +0 -156
  52. package/dist_ts/opsserver/handlers/route-management.handler.d.ts +0 -14
  53. package/dist_ts/opsserver/handlers/route-management.handler.js +0 -117
  54. package/dist_ts/opsserver/handlers/stats.handler.d.ts +0 -11
  55. package/dist_ts/opsserver/handlers/stats.handler.js +0 -399
  56. package/dist_ts/opsserver/helpers/guards.d.ts +0 -27
  57. package/dist_ts/opsserver/helpers/guards.js +0 -43
  58. package/dist_ts/opsserver/index.d.ts +0 -1
  59. package/dist_ts/opsserver/index.js +0 -2
  60. package/dist_ts/paths.d.ts +0 -26
  61. package/dist_ts/paths.js +0 -45
  62. package/dist_ts/plugins.d.ts +0 -79
  63. package/dist_ts/plugins.js +0 -113
  64. package/dist_ts/radius/classes.accounting.manager.d.ts +0 -218
  65. package/dist_ts/radius/classes.accounting.manager.js +0 -417
  66. package/dist_ts/radius/classes.radius.server.d.ts +0 -171
  67. package/dist_ts/radius/classes.radius.server.js +0 -385
  68. package/dist_ts/radius/classes.vlan.manager.d.ts +0 -128
  69. package/dist_ts/radius/classes.vlan.manager.js +0 -279
  70. package/dist_ts/radius/index.d.ts +0 -13
  71. package/dist_ts/radius/index.js +0 -14
  72. package/dist_ts/remoteingress/classes.remoteingress-manager.d.ts +0 -82
  73. package/dist_ts/remoteingress/classes.remoteingress-manager.js +0 -227
  74. package/dist_ts/remoteingress/classes.tunnel-manager.d.ts +0 -59
  75. package/dist_ts/remoteingress/classes.tunnel-manager.js +0 -165
  76. package/dist_ts/remoteingress/index.d.ts +0 -2
  77. package/dist_ts/remoteingress/index.js +0 -3
  78. package/dist_ts/security/classes.contentscanner.d.ts +0 -164
  79. package/dist_ts/security/classes.contentscanner.js +0 -642
  80. package/dist_ts/security/classes.ipreputationchecker.d.ts +0 -160
  81. package/dist_ts/security/classes.ipreputationchecker.js +0 -537
  82. package/dist_ts/security/index.d.ts +0 -3
  83. package/dist_ts/security/index.js +0 -4
  84. package/dist_ts/sms/classes.smsservice.d.ts +0 -15
  85. package/dist_ts/sms/classes.smsservice.js +0 -72
  86. package/dist_ts/sms/config/sms.config.d.ts +0 -93
  87. package/dist_ts/sms/config/sms.config.js +0 -2
  88. package/dist_ts/sms/config/sms.schema.d.ts +0 -5
  89. package/dist_ts/sms/config/sms.schema.js +0 -121
  90. package/dist_ts/sms/index.d.ts +0 -1
  91. package/dist_ts/sms/index.js +0 -2
@@ -1,59 +0,0 @@
1
- import type { IRemoteIngressStatus } from '../../dist_ts_interfaces/data/remoteingress.js';
2
- import type { RemoteIngressManager } from './classes.remoteingress-manager.js';
3
- export interface ITunnelManagerConfig {
4
- tunnelPort?: number;
5
- targetHost?: string;
6
- tls?: {
7
- certPem?: string;
8
- keyPem?: string;
9
- };
10
- }
11
- /**
12
- * Manages the RemoteIngressHub instance and tracks connected edge statuses.
13
- */
14
- export declare class TunnelManager {
15
- private hub;
16
- private manager;
17
- private config;
18
- private edgeStatuses;
19
- private reconcileInterval;
20
- constructor(manager: RemoteIngressManager, config?: ITunnelManagerConfig);
21
- /**
22
- * Start the tunnel hub and load allowed edges.
23
- */
24
- start(): Promise<void>;
25
- /**
26
- * Stop the tunnel hub.
27
- */
28
- stop(): Promise<void>;
29
- /**
30
- * Reconcile TS-side edge statuses with the authoritative Rust hub status.
31
- * Overwrites event-derived activeTunnels with the real activeStreams count.
32
- */
33
- private reconcile;
34
- /**
35
- * Sync allowed edges from the manager to the hub.
36
- * Call this after creating/deleting/updating edges.
37
- */
38
- syncAllowedEdges(): Promise<void>;
39
- /**
40
- * Get runtime statuses for all known edges.
41
- */
42
- getEdgeStatuses(): IRemoteIngressStatus[];
43
- /**
44
- * Get status for a specific edge.
45
- */
46
- getEdgeStatus(edgeId: string): IRemoteIngressStatus | undefined;
47
- /**
48
- * Get the count of connected edges.
49
- */
50
- getConnectedCount(): number;
51
- /**
52
- * Get the public IPs of all connected edges.
53
- */
54
- getConnectedEdgeIps(): string[];
55
- /**
56
- * Get the total number of active tunnels across all edges.
57
- */
58
- getTotalActiveTunnels(): number;
59
- }
@@ -1,165 +0,0 @@
1
- import * as plugins from '../plugins.js';
2
- /**
3
- * Manages the RemoteIngressHub instance and tracks connected edge statuses.
4
- */
5
- export class TunnelManager {
6
- hub;
7
- manager;
8
- config;
9
- edgeStatuses = new Map();
10
- reconcileInterval = null;
11
- constructor(manager, config = {}) {
12
- this.manager = manager;
13
- this.config = config;
14
- this.hub = new plugins.remoteingress.RemoteIngressHub();
15
- // Listen for edge connect/disconnect events
16
- this.hub.on('edgeConnected', (data) => {
17
- this.edgeStatuses.set(data.edgeId, {
18
- edgeId: data.edgeId,
19
- connected: true,
20
- publicIp: data.peerAddr || null,
21
- activeTunnels: 0,
22
- lastHeartbeat: Date.now(),
23
- connectedAt: Date.now(),
24
- });
25
- });
26
- this.hub.on('edgeDisconnected', (data) => {
27
- this.edgeStatuses.delete(data.edgeId);
28
- });
29
- this.hub.on('streamOpened', (data) => {
30
- const existing = this.edgeStatuses.get(data.edgeId);
31
- if (existing) {
32
- existing.activeTunnels++;
33
- existing.lastHeartbeat = Date.now();
34
- }
35
- });
36
- this.hub.on('streamClosed', (data) => {
37
- const existing = this.edgeStatuses.get(data.edgeId);
38
- if (existing && existing.activeTunnels > 0) {
39
- existing.activeTunnels--;
40
- }
41
- });
42
- }
43
- /**
44
- * Start the tunnel hub and load allowed edges.
45
- */
46
- async start() {
47
- await this.hub.start({
48
- tunnelPort: this.config.tunnelPort ?? 8443,
49
- targetHost: this.config.targetHost ?? '127.0.0.1',
50
- tls: this.config.tls,
51
- });
52
- // Send allowed edges to the hub
53
- await this.syncAllowedEdges();
54
- // Periodically reconcile with authoritative Rust hub status
55
- this.reconcileInterval = setInterval(() => {
56
- this.reconcile().catch(() => { });
57
- }, 15_000);
58
- }
59
- /**
60
- * Stop the tunnel hub.
61
- */
62
- async stop() {
63
- if (this.reconcileInterval) {
64
- clearInterval(this.reconcileInterval);
65
- this.reconcileInterval = null;
66
- }
67
- // Remove event listeners before stopping to prevent leaks
68
- this.hub.removeAllListeners();
69
- await this.hub.stop();
70
- this.edgeStatuses.clear();
71
- }
72
- /**
73
- * Reconcile TS-side edge statuses with the authoritative Rust hub status.
74
- * Overwrites event-derived activeTunnels with the real activeStreams count.
75
- */
76
- async reconcile() {
77
- const hubStatus = await this.hub.getStatus();
78
- if (!hubStatus || !hubStatus.connectedEdges)
79
- return;
80
- const rustEdgeIds = new Set();
81
- for (const rustEdge of hubStatus.connectedEdges) {
82
- rustEdgeIds.add(rustEdge.edgeId);
83
- const existing = this.edgeStatuses.get(rustEdge.edgeId);
84
- if (existing) {
85
- existing.activeTunnels = rustEdge.activeStreams;
86
- existing.lastHeartbeat = Date.now();
87
- // Update peer address if available from Rust hub
88
- if (rustEdge.peerAddr) {
89
- existing.publicIp = rustEdge.peerAddr;
90
- }
91
- }
92
- else {
93
- // Missed edgeConnected event — add entry
94
- this.edgeStatuses.set(rustEdge.edgeId, {
95
- edgeId: rustEdge.edgeId,
96
- connected: true,
97
- publicIp: rustEdge.peerAddr || null,
98
- activeTunnels: rustEdge.activeStreams,
99
- lastHeartbeat: Date.now(),
100
- connectedAt: rustEdge.connectedAt * 1000,
101
- });
102
- }
103
- }
104
- // Remove entries for edges no longer connected in Rust (missed edgeDisconnected)
105
- for (const edgeId of this.edgeStatuses.keys()) {
106
- if (!rustEdgeIds.has(edgeId)) {
107
- this.edgeStatuses.delete(edgeId);
108
- }
109
- }
110
- }
111
- /**
112
- * Sync allowed edges from the manager to the hub.
113
- * Call this after creating/deleting/updating edges.
114
- */
115
- async syncAllowedEdges() {
116
- const edges = this.manager.getAllowedEdges();
117
- await this.hub.updateAllowedEdges(edges);
118
- }
119
- /**
120
- * Get runtime statuses for all known edges.
121
- */
122
- getEdgeStatuses() {
123
- return Array.from(this.edgeStatuses.values());
124
- }
125
- /**
126
- * Get status for a specific edge.
127
- */
128
- getEdgeStatus(edgeId) {
129
- return this.edgeStatuses.get(edgeId);
130
- }
131
- /**
132
- * Get the count of connected edges.
133
- */
134
- getConnectedCount() {
135
- let count = 0;
136
- for (const status of this.edgeStatuses.values()) {
137
- if (status.connected)
138
- count++;
139
- }
140
- return count;
141
- }
142
- /**
143
- * Get the public IPs of all connected edges.
144
- */
145
- getConnectedEdgeIps() {
146
- const ips = [];
147
- for (const status of this.edgeStatuses.values()) {
148
- if (status.connected && status.publicIp) {
149
- ips.push(status.publicIp);
150
- }
151
- }
152
- return ips;
153
- }
154
- /**
155
- * Get the total number of active tunnels across all edges.
156
- */
157
- getTotalActiveTunnels() {
158
- let total = 0;
159
- for (const status of this.edgeStatuses.values()) {
160
- total += status.activeTunnels;
161
- }
162
- return total;
163
- }
164
- }
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50dW5uZWwtbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL3JlbW90ZWluZ3Jlc3MvY2xhc3Nlcy50dW5uZWwtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQWF6Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBQ2hCLEdBQUcsQ0FBOEQ7SUFDakUsT0FBTyxDQUF1QjtJQUM5QixNQUFNLENBQXVCO0lBQzdCLFlBQVksR0FBc0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM1RCxpQkFBaUIsR0FBMEMsSUFBSSxDQUFDO0lBRXhFLFlBQVksT0FBNkIsRUFBRSxTQUErQixFQUFFO1FBQzFFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEQsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQTBDLEVBQUUsRUFBRTtZQUMxRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNqQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUk7Z0JBQy9CLGFBQWEsRUFBRSxDQUFDO2dCQUNoQixhQUFhLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7YUFDeEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsR0FBRyxDQUFDLEVB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
@@ -1,2 +0,0 @@
1
- export * from './classes.remoteingress-manager.js';
2
- export * from './classes.tunnel-manager.js';
@@ -1,3 +0,0 @@
1
- export * from './classes.remoteingress-manager.js';
2
- export * from './classes.tunnel-manager.js';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9yZW1vdGVpbmdyZXNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyw2QkFBNkIsQ0FBQyJ9
@@ -1,164 +0,0 @@
1
- import { Email } from '@push.rocks/smartmta';
2
- /**
3
- * Scan result information
4
- */
5
- export interface IScanResult {
6
- isClean: boolean;
7
- threatType?: string;
8
- threatDetails?: string;
9
- threatScore: number;
10
- scannedElements: string[];
11
- timestamp: number;
12
- }
13
- /**
14
- * Options for content scanner configuration
15
- */
16
- export interface IContentScannerOptions {
17
- maxCacheSize?: number;
18
- cacheTTL?: number;
19
- scanSubject?: boolean;
20
- scanBody?: boolean;
21
- scanAttachments?: boolean;
22
- maxAttachmentSizeToScan?: number;
23
- scanAttachmentNames?: boolean;
24
- blockExecutables?: boolean;
25
- blockMacros?: boolean;
26
- customRules?: Array<{
27
- pattern: string | RegExp;
28
- type: string;
29
- score: number;
30
- description: string;
31
- }>;
32
- minThreatScore?: number;
33
- highThreatScore?: number;
34
- }
35
- /**
36
- * Threat categories
37
- */
38
- export declare enum ThreatCategory {
39
- SPAM = "spam",
40
- PHISHING = "phishing",
41
- MALWARE = "malware",
42
- EXECUTABLE = "executable",
43
- SUSPICIOUS_LINK = "suspicious_link",
44
- MALICIOUS_MACRO = "malicious_macro",
45
- XSS = "xss",
46
- SENSITIVE_DATA = "sensitive_data",
47
- BLACKLISTED_CONTENT = "blacklisted_content",
48
- CUSTOM_RULE = "custom_rule"
49
- }
50
- /**
51
- * Content Scanner for detecting malicious email content
52
- */
53
- export declare class ContentScanner {
54
- private static instance;
55
- private scanCache;
56
- private options;
57
- private static readonly MALICIOUS_PATTERNS;
58
- private static readonly EXECUTABLE_EXTENSIONS;
59
- private static readonly MACRO_DOCUMENT_EXTENSIONS;
60
- /**
61
- * Default options for the content scanner
62
- */
63
- private static readonly DEFAULT_OPTIONS;
64
- /**
65
- * Constructor for the ContentScanner
66
- * @param options Configuration options
67
- */
68
- constructor(options?: IContentScannerOptions);
69
- /**
70
- * Get the singleton instance of the scanner
71
- * @param options Configuration options
72
- * @returns Singleton scanner instance
73
- */
74
- static getInstance(options?: IContentScannerOptions): ContentScanner;
75
- /**
76
- * Reset the singleton instance (for shutdown/testing)
77
- */
78
- static resetInstance(): void;
79
- /**
80
- * Scan an email for malicious content
81
- * @param email The email to scan
82
- * @returns Scan result
83
- */
84
- scanEmail(email: Email): Promise<IScanResult>;
85
- /**
86
- * Generate a cache key from an email
87
- * @param email The email to generate a key for
88
- * @returns Cache key
89
- */
90
- private generateCacheKey;
91
- /**
92
- * Scan email subject for threats
93
- * @param subject The subject to scan
94
- * @param result The scan result to update
95
- */
96
- private scanSubject;
97
- /**
98
- * Scan plain text content for threats
99
- * @param text The text content to scan
100
- * @param result The scan result to update
101
- */
102
- private scanTextContent;
103
- /**
104
- * Scan HTML content for threats
105
- * @param html The HTML content to scan
106
- * @param result The scan result to update
107
- */
108
- private scanHtmlContent;
109
- /**
110
- * Scan an attachment for threats
111
- * @param attachment The attachment to scan
112
- * @param result The scan result to update
113
- */
114
- private scanAttachment;
115
- /**
116
- * Extract links from HTML content
117
- * @param html HTML content
118
- * @returns Array of extracted links
119
- */
120
- private extractLinksFromHtml;
121
- /**
122
- * Extract plain text from HTML
123
- * @param html HTML content
124
- * @returns Extracted text
125
- */
126
- private extractTextFromHtml;
127
- /**
128
- * Extract text from a binary buffer for scanning
129
- * @param buffer Binary content
130
- * @returns Extracted text (may be partial)
131
- */
132
- private extractTextFromBuffer;
133
- /**
134
- * Check if an Office document likely contains macros
135
- * This is a simplified check - real implementation would use specialized libraries
136
- * @param attachment The attachment to check
137
- * @returns Whether the file likely contains macros
138
- */
139
- private likelyContainsMacros;
140
- /**
141
- * Map a pattern category to a threat type
142
- * @param category The pattern category
143
- * @returns The corresponding threat type
144
- */
145
- private mapCategoryToThreatType;
146
- /**
147
- * Log a high threat finding to the security logger
148
- * @param email The email containing the threat
149
- * @param result The scan result
150
- */
151
- private logHighThreatFound;
152
- /**
153
- * Log a threat finding to the security logger
154
- * @param email The email containing the threat
155
- * @param result The scan result
156
- */
157
- private logThreatFound;
158
- /**
159
- * Get threat level description based on score
160
- * @param score Threat score
161
- * @returns Threat level description
162
- */
163
- static getThreatLevel(score: number): 'none' | 'low' | 'medium' | 'high';
164
- }