@serve.zone/dcrouter 11.0.23 → 11.0.25

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