@push.rocks/smartproxy 16.0.2 → 16.0.4
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.
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/core/models/index.d.ts +2 -0
- package/dist_ts/core/models/index.js +3 -1
- package/dist_ts/core/models/route-context.d.ts +62 -0
- package/dist_ts/core/models/route-context.js +43 -0
- package/dist_ts/core/models/socket-augmentation.d.ts +12 -0
- package/dist_ts/core/models/socket-augmentation.js +18 -0
- package/dist_ts/core/utils/event-system.d.ts +200 -0
- package/dist_ts/core/utils/event-system.js +224 -0
- package/dist_ts/core/utils/index.d.ts +7 -0
- package/dist_ts/core/utils/index.js +8 -1
- package/dist_ts/core/utils/route-manager.d.ts +118 -0
- package/dist_ts/core/utils/route-manager.js +383 -0
- package/dist_ts/core/utils/route-utils.d.ts +94 -0
- package/dist_ts/core/utils/route-utils.js +264 -0
- package/dist_ts/core/utils/security-utils.d.ts +111 -0
- package/dist_ts/core/utils/security-utils.js +212 -0
- package/dist_ts/core/utils/shared-security-manager.d.ts +110 -0
- package/dist_ts/core/utils/shared-security-manager.js +252 -0
- package/dist_ts/core/utils/template-utils.d.ts +37 -0
- package/dist_ts/core/utils/template-utils.js +104 -0
- package/dist_ts/core/utils/websocket-utils.d.ts +23 -0
- package/dist_ts/core/utils/websocket-utils.js +86 -0
- package/dist_ts/http/router/index.d.ts +5 -1
- package/dist_ts/http/router/index.js +4 -2
- package/dist_ts/http/router/route-router.d.ts +108 -0
- package/dist_ts/http/router/route-router.js +393 -0
- package/dist_ts/index.d.ts +8 -2
- package/dist_ts/index.js +10 -3
- package/dist_ts/proxies/index.d.ts +7 -2
- package/dist_ts/proxies/index.js +10 -4
- package/dist_ts/proxies/network-proxy/certificate-manager.d.ts +21 -0
- package/dist_ts/proxies/network-proxy/certificate-manager.js +92 -1
- package/dist_ts/proxies/network-proxy/context-creator.d.ts +34 -0
- package/dist_ts/proxies/network-proxy/context-creator.js +108 -0
- package/dist_ts/proxies/network-proxy/function-cache.d.ts +90 -0
- package/dist_ts/proxies/network-proxy/function-cache.js +198 -0
- package/dist_ts/proxies/network-proxy/http-request-handler.d.ts +40 -0
- package/dist_ts/proxies/network-proxy/http-request-handler.js +256 -0
- package/dist_ts/proxies/network-proxy/http2-request-handler.d.ts +24 -0
- package/dist_ts/proxies/network-proxy/http2-request-handler.js +201 -0
- package/dist_ts/proxies/network-proxy/models/types.d.ts +73 -1
- package/dist_ts/proxies/network-proxy/models/types.js +242 -1
- package/dist_ts/proxies/network-proxy/network-proxy.d.ts +23 -20
- package/dist_ts/proxies/network-proxy/network-proxy.js +149 -60
- package/dist_ts/proxies/network-proxy/request-handler.d.ts +38 -5
- package/dist_ts/proxies/network-proxy/request-handler.js +584 -198
- package/dist_ts/proxies/network-proxy/security-manager.d.ts +65 -0
- package/dist_ts/proxies/network-proxy/security-manager.js +255 -0
- package/dist_ts/proxies/network-proxy/websocket-handler.d.ts +13 -2
- package/dist_ts/proxies/network-proxy/websocket-handler.js +238 -20
- package/dist_ts/proxies/smart-proxy/index.d.ts +1 -1
- package/dist_ts/proxies/smart-proxy/index.js +3 -3
- package/dist_ts/proxies/smart-proxy/models/interfaces.d.ts +3 -5
- package/dist_ts/proxies/smart-proxy/models/route-types.d.ts +56 -4
- package/dist_ts/proxies/smart-proxy/network-proxy-bridge.d.ts +4 -57
- package/dist_ts/proxies/smart-proxy/network-proxy-bridge.js +19 -228
- package/dist_ts/proxies/smart-proxy/port-manager.d.ts +81 -0
- package/dist_ts/proxies/smart-proxy/port-manager.js +166 -0
- package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +5 -0
- package/dist_ts/proxies/smart-proxy/route-connection-handler.js +131 -15
- package/dist_ts/proxies/smart-proxy/route-helpers/index.d.ts +3 -1
- package/dist_ts/proxies/smart-proxy/route-helpers/index.js +5 -3
- package/dist_ts/proxies/smart-proxy/route-helpers.d.ts +5 -178
- package/dist_ts/proxies/smart-proxy/route-helpers.js +8 -296
- package/dist_ts/proxies/smart-proxy/route-manager.d.ts +11 -2
- package/dist_ts/proxies/smart-proxy/route-manager.js +79 -10
- package/dist_ts/proxies/smart-proxy/smart-proxy.d.ts +29 -2
- package/dist_ts/proxies/smart-proxy/smart-proxy.js +48 -43
- package/dist_ts/proxies/smart-proxy/utils/route-helpers.d.ts +67 -1
- package/dist_ts/proxies/smart-proxy/utils/route-helpers.js +120 -1
- package/dist_ts/proxies/smart-proxy/utils/route-validators.d.ts +3 -3
- package/dist_ts/proxies/smart-proxy/utils/route-validators.js +27 -5
- package/package.json +1 -1
- package/readme.md +102 -14
- package/readme.plan.md +103 -168
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/core/models/index.ts +2 -0
- package/ts/core/models/route-context.ts +113 -0
- package/ts/core/models/socket-augmentation.ts +33 -0
- package/ts/core/utils/event-system.ts +376 -0
- package/ts/core/utils/index.ts +7 -0
- package/ts/core/utils/route-manager.ts +489 -0
- package/ts/core/utils/route-utils.ts +312 -0
- package/ts/core/utils/security-utils.ts +309 -0
- package/ts/core/utils/shared-security-manager.ts +333 -0
- package/ts/core/utils/template-utils.ts +124 -0
- package/ts/core/utils/websocket-utils.ts +81 -0
- package/ts/http/router/index.ts +8 -1
- package/ts/http/router/route-router.ts +482 -0
- package/ts/index.ts +14 -2
- package/ts/proxies/index.ts +12 -3
- package/ts/proxies/network-proxy/certificate-manager.ts +114 -10
- package/ts/proxies/network-proxy/context-creator.ts +145 -0
- package/ts/proxies/network-proxy/function-cache.ts +259 -0
- package/ts/proxies/network-proxy/http-request-handler.ts +330 -0
- package/ts/proxies/network-proxy/http2-request-handler.ts +255 -0
- package/ts/proxies/network-proxy/models/types.ts +312 -1
- package/ts/proxies/network-proxy/network-proxy.ts +197 -85
- package/ts/proxies/network-proxy/request-handler.ts +698 -246
- package/ts/proxies/network-proxy/security-manager.ts +298 -0
- package/ts/proxies/network-proxy/websocket-handler.ts +276 -33
- package/ts/proxies/smart-proxy/index.ts +2 -12
- package/ts/proxies/smart-proxy/models/interfaces.ts +7 -4
- package/ts/proxies/smart-proxy/models/route-types.ts +77 -10
- package/ts/proxies/smart-proxy/network-proxy-bridge.ts +20 -257
- package/ts/proxies/smart-proxy/port-manager.ts +195 -0
- package/ts/proxies/smart-proxy/route-connection-handler.ts +156 -21
- package/ts/proxies/smart-proxy/route-manager.ts +98 -14
- package/ts/proxies/smart-proxy/smart-proxy.ts +56 -55
- package/ts/proxies/smart-proxy/utils/route-helpers.ts +167 -1
- package/ts/proxies/smart-proxy/utils/route-validators.ts +24 -5
- package/ts/proxies/smart-proxy/domain-config-manager.ts.bak +0 -441
- package/ts/proxies/smart-proxy/route-helpers/index.ts +0 -9
- package/ts/proxies/smart-proxy/route-helpers.ts +0 -498
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
2
|
+
import type {
|
|
3
|
+
ICertificateData,
|
|
4
|
+
ICertificateFailure,
|
|
5
|
+
ICertificateExpiring
|
|
6
|
+
} from '../models/common-types.js';
|
|
7
|
+
import type { IRouteConfig } from '../../proxies/smart-proxy/models/route-types.js';
|
|
8
|
+
import { Port80HandlerEvents } from '../models/common-types.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Standardized event names used throughout the system
|
|
12
|
+
*/
|
|
13
|
+
export enum ProxyEvents {
|
|
14
|
+
// Certificate events
|
|
15
|
+
CERTIFICATE_ISSUED = 'certificate:issued',
|
|
16
|
+
CERTIFICATE_RENEWED = 'certificate:renewed',
|
|
17
|
+
CERTIFICATE_FAILED = 'certificate:failed',
|
|
18
|
+
CERTIFICATE_EXPIRING = 'certificate:expiring',
|
|
19
|
+
|
|
20
|
+
// Component lifecycle events
|
|
21
|
+
COMPONENT_STARTED = 'component:started',
|
|
22
|
+
COMPONENT_STOPPED = 'component:stopped',
|
|
23
|
+
|
|
24
|
+
// Connection events
|
|
25
|
+
CONNECTION_ESTABLISHED = 'connection:established',
|
|
26
|
+
CONNECTION_CLOSED = 'connection:closed',
|
|
27
|
+
CONNECTION_ERROR = 'connection:error',
|
|
28
|
+
|
|
29
|
+
// Request events
|
|
30
|
+
REQUEST_RECEIVED = 'request:received',
|
|
31
|
+
REQUEST_COMPLETED = 'request:completed',
|
|
32
|
+
REQUEST_ERROR = 'request:error',
|
|
33
|
+
|
|
34
|
+
// Route events
|
|
35
|
+
ROUTE_MATCHED = 'route:matched',
|
|
36
|
+
ROUTE_UPDATED = 'route:updated',
|
|
37
|
+
ROUTE_ERROR = 'route:error',
|
|
38
|
+
|
|
39
|
+
// Security events
|
|
40
|
+
SECURITY_BLOCKED = 'security:blocked',
|
|
41
|
+
SECURITY_BREACH_ATTEMPT = 'security:breach-attempt',
|
|
42
|
+
|
|
43
|
+
// TLS events
|
|
44
|
+
TLS_HANDSHAKE_STARTED = 'tls:handshake-started',
|
|
45
|
+
TLS_HANDSHAKE_COMPLETED = 'tls:handshake-completed',
|
|
46
|
+
TLS_HANDSHAKE_FAILED = 'tls:handshake-failed'
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Component types for event metadata
|
|
51
|
+
*/
|
|
52
|
+
export enum ComponentType {
|
|
53
|
+
SMART_PROXY = 'smart-proxy',
|
|
54
|
+
NETWORK_PROXY = 'network-proxy',
|
|
55
|
+
NFTABLES_PROXY = 'nftables-proxy',
|
|
56
|
+
PORT80_HANDLER = 'port80-handler',
|
|
57
|
+
CERTIFICATE_MANAGER = 'certificate-manager',
|
|
58
|
+
ROUTE_MANAGER = 'route-manager',
|
|
59
|
+
CONNECTION_MANAGER = 'connection-manager',
|
|
60
|
+
TLS_MANAGER = 'tls-manager',
|
|
61
|
+
SECURITY_MANAGER = 'security-manager'
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Base event data interface
|
|
66
|
+
*/
|
|
67
|
+
export interface IEventData {
|
|
68
|
+
timestamp: number;
|
|
69
|
+
componentType: ComponentType;
|
|
70
|
+
componentId?: string;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Certificate event data
|
|
75
|
+
*/
|
|
76
|
+
export interface ICertificateEventData extends IEventData, ICertificateData {
|
|
77
|
+
isRenewal?: boolean;
|
|
78
|
+
source?: string;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Certificate failure event data
|
|
83
|
+
*/
|
|
84
|
+
export interface ICertificateFailureEventData extends IEventData, ICertificateFailure {}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Certificate expiring event data
|
|
88
|
+
*/
|
|
89
|
+
export interface ICertificateExpiringEventData extends IEventData, ICertificateExpiring {}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Component lifecycle event data
|
|
93
|
+
*/
|
|
94
|
+
export interface IComponentEventData extends IEventData {
|
|
95
|
+
name: string;
|
|
96
|
+
version?: string;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Connection event data
|
|
101
|
+
*/
|
|
102
|
+
export interface IConnectionEventData extends IEventData {
|
|
103
|
+
connectionId: string;
|
|
104
|
+
clientIp: string;
|
|
105
|
+
serverIp?: string;
|
|
106
|
+
port: number;
|
|
107
|
+
isTls?: boolean;
|
|
108
|
+
domain?: string;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Request event data
|
|
113
|
+
*/
|
|
114
|
+
export interface IRequestEventData extends IEventData {
|
|
115
|
+
connectionId: string;
|
|
116
|
+
requestId: string;
|
|
117
|
+
method?: string;
|
|
118
|
+
path?: string;
|
|
119
|
+
statusCode?: number;
|
|
120
|
+
duration?: number;
|
|
121
|
+
routeId?: string;
|
|
122
|
+
routeName?: string;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Route event data
|
|
127
|
+
*/
|
|
128
|
+
export interface IRouteEventData extends IEventData {
|
|
129
|
+
route: IRouteConfig;
|
|
130
|
+
context?: any;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Security event data
|
|
135
|
+
*/
|
|
136
|
+
export interface ISecurityEventData extends IEventData {
|
|
137
|
+
clientIp: string;
|
|
138
|
+
reason: string;
|
|
139
|
+
routeId?: string;
|
|
140
|
+
routeName?: string;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* TLS event data
|
|
145
|
+
*/
|
|
146
|
+
export interface ITlsEventData extends IEventData {
|
|
147
|
+
connectionId: string;
|
|
148
|
+
domain?: string;
|
|
149
|
+
clientIp: string;
|
|
150
|
+
tlsVersion?: string;
|
|
151
|
+
cipherSuite?: string;
|
|
152
|
+
sniHostname?: string;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Logger interface for event system
|
|
157
|
+
*/
|
|
158
|
+
export interface IEventLogger {
|
|
159
|
+
info: (message: string, ...args: any[]) => void;
|
|
160
|
+
warn: (message: string, ...args: any[]) => void;
|
|
161
|
+
error: (message: string, ...args: any[]) => void;
|
|
162
|
+
debug?: (message: string, ...args: any[]) => void;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Event handler type
|
|
167
|
+
*/
|
|
168
|
+
export type EventHandler<T> = (data: T) => void;
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Helper class to standardize event emission and handling
|
|
172
|
+
* across all system components
|
|
173
|
+
*/
|
|
174
|
+
export class EventSystem {
|
|
175
|
+
private emitter: plugins.EventEmitter;
|
|
176
|
+
private componentType: ComponentType;
|
|
177
|
+
private componentId: string;
|
|
178
|
+
private logger?: IEventLogger;
|
|
179
|
+
|
|
180
|
+
constructor(
|
|
181
|
+
componentType: ComponentType,
|
|
182
|
+
componentId: string = '',
|
|
183
|
+
logger?: IEventLogger
|
|
184
|
+
) {
|
|
185
|
+
this.emitter = new plugins.EventEmitter();
|
|
186
|
+
this.componentType = componentType;
|
|
187
|
+
this.componentId = componentId;
|
|
188
|
+
this.logger = logger;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Emit a certificate issued event
|
|
193
|
+
*/
|
|
194
|
+
public emitCertificateIssued(data: Omit<ICertificateEventData, 'timestamp' | 'componentType' | 'componentId'>): void {
|
|
195
|
+
const eventData: ICertificateEventData = {
|
|
196
|
+
...data,
|
|
197
|
+
timestamp: Date.now(),
|
|
198
|
+
componentType: this.componentType,
|
|
199
|
+
componentId: this.componentId
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
this.logger?.info?.(`Certificate issued for ${data.domain}`);
|
|
203
|
+
this.emitter.emit(ProxyEvents.CERTIFICATE_ISSUED, eventData);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Emit a certificate renewed event
|
|
208
|
+
*/
|
|
209
|
+
public emitCertificateRenewed(data: Omit<ICertificateEventData, 'timestamp' | 'componentType' | 'componentId'>): void {
|
|
210
|
+
const eventData: ICertificateEventData = {
|
|
211
|
+
...data,
|
|
212
|
+
timestamp: Date.now(),
|
|
213
|
+
componentType: this.componentType,
|
|
214
|
+
componentId: this.componentId
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
this.logger?.info?.(`Certificate renewed for ${data.domain}`);
|
|
218
|
+
this.emitter.emit(ProxyEvents.CERTIFICATE_RENEWED, eventData);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Emit a certificate failed event
|
|
223
|
+
*/
|
|
224
|
+
public emitCertificateFailed(data: Omit<ICertificateFailureEventData, 'timestamp' | 'componentType' | 'componentId'>): void {
|
|
225
|
+
const eventData: ICertificateFailureEventData = {
|
|
226
|
+
...data,
|
|
227
|
+
timestamp: Date.now(),
|
|
228
|
+
componentType: this.componentType,
|
|
229
|
+
componentId: this.componentId
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
this.logger?.error?.(`Certificate issuance failed for ${data.domain}: ${data.error}`);
|
|
233
|
+
this.emitter.emit(ProxyEvents.CERTIFICATE_FAILED, eventData);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Emit a certificate expiring event
|
|
238
|
+
*/
|
|
239
|
+
public emitCertificateExpiring(data: Omit<ICertificateExpiringEventData, 'timestamp' | 'componentType' | 'componentId'>): void {
|
|
240
|
+
const eventData: ICertificateExpiringEventData = {
|
|
241
|
+
...data,
|
|
242
|
+
timestamp: Date.now(),
|
|
243
|
+
componentType: this.componentType,
|
|
244
|
+
componentId: this.componentId
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
this.logger?.warn?.(`Certificate expiring for ${data.domain} in ${data.daysRemaining} days`);
|
|
248
|
+
this.emitter.emit(ProxyEvents.CERTIFICATE_EXPIRING, eventData);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Emit a component started event
|
|
253
|
+
*/
|
|
254
|
+
public emitComponentStarted(name: string, version?: string): void {
|
|
255
|
+
const eventData: IComponentEventData = {
|
|
256
|
+
name,
|
|
257
|
+
version,
|
|
258
|
+
timestamp: Date.now(),
|
|
259
|
+
componentType: this.componentType,
|
|
260
|
+
componentId: this.componentId
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
this.logger?.info?.(`Component ${name} started${version ? ` (v${version})` : ''}`);
|
|
264
|
+
this.emitter.emit(ProxyEvents.COMPONENT_STARTED, eventData);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Emit a component stopped event
|
|
269
|
+
*/
|
|
270
|
+
public emitComponentStopped(name: string): void {
|
|
271
|
+
const eventData: IComponentEventData = {
|
|
272
|
+
name,
|
|
273
|
+
timestamp: Date.now(),
|
|
274
|
+
componentType: this.componentType,
|
|
275
|
+
componentId: this.componentId
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
this.logger?.info?.(`Component ${name} stopped`);
|
|
279
|
+
this.emitter.emit(ProxyEvents.COMPONENT_STOPPED, eventData);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Emit a connection established event
|
|
284
|
+
*/
|
|
285
|
+
public emitConnectionEstablished(data: Omit<IConnectionEventData, 'timestamp' | 'componentType' | 'componentId'>): void {
|
|
286
|
+
const eventData: IConnectionEventData = {
|
|
287
|
+
...data,
|
|
288
|
+
timestamp: Date.now(),
|
|
289
|
+
componentType: this.componentType,
|
|
290
|
+
componentId: this.componentId
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
this.logger?.debug?.(`Connection ${data.connectionId} established from ${data.clientIp} on port ${data.port}`);
|
|
294
|
+
this.emitter.emit(ProxyEvents.CONNECTION_ESTABLISHED, eventData);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Emit a connection closed event
|
|
299
|
+
*/
|
|
300
|
+
public emitConnectionClosed(data: Omit<IConnectionEventData, 'timestamp' | 'componentType' | 'componentId'>): void {
|
|
301
|
+
const eventData: IConnectionEventData = {
|
|
302
|
+
...data,
|
|
303
|
+
timestamp: Date.now(),
|
|
304
|
+
componentType: this.componentType,
|
|
305
|
+
componentId: this.componentId
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
this.logger?.debug?.(`Connection ${data.connectionId} closed`);
|
|
309
|
+
this.emitter.emit(ProxyEvents.CONNECTION_CLOSED, eventData);
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* Emit a route matched event
|
|
314
|
+
*/
|
|
315
|
+
public emitRouteMatched(data: Omit<IRouteEventData, 'timestamp' | 'componentType' | 'componentId'>): void {
|
|
316
|
+
const eventData: IRouteEventData = {
|
|
317
|
+
...data,
|
|
318
|
+
timestamp: Date.now(),
|
|
319
|
+
componentType: this.componentType,
|
|
320
|
+
componentId: this.componentId
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
this.logger?.debug?.(`Route matched: ${data.route.name || data.route.id || 'unnamed'}`);
|
|
324
|
+
this.emitter.emit(ProxyEvents.ROUTE_MATCHED, eventData);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Subscribe to an event
|
|
329
|
+
*/
|
|
330
|
+
public on<T>(event: ProxyEvents, handler: EventHandler<T>): void {
|
|
331
|
+
this.emitter.on(event, handler);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Subscribe to an event once
|
|
336
|
+
*/
|
|
337
|
+
public once<T>(event: ProxyEvents, handler: EventHandler<T>): void {
|
|
338
|
+
this.emitter.once(event, handler);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* Unsubscribe from an event
|
|
343
|
+
*/
|
|
344
|
+
public off<T>(event: ProxyEvents, handler: EventHandler<T>): void {
|
|
345
|
+
this.emitter.off(event, handler);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Map Port80Handler events to standard proxy events
|
|
350
|
+
*/
|
|
351
|
+
public subscribePort80HandlerEvents(handler: any): void {
|
|
352
|
+
handler.on(Port80HandlerEvents.CERTIFICATE_ISSUED, (data: ICertificateData) => {
|
|
353
|
+
this.emitCertificateIssued({
|
|
354
|
+
...data,
|
|
355
|
+
isRenewal: false,
|
|
356
|
+
source: 'port80handler'
|
|
357
|
+
});
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
handler.on(Port80HandlerEvents.CERTIFICATE_RENEWED, (data: ICertificateData) => {
|
|
361
|
+
this.emitCertificateRenewed({
|
|
362
|
+
...data,
|
|
363
|
+
isRenewal: true,
|
|
364
|
+
source: 'port80handler'
|
|
365
|
+
});
|
|
366
|
+
});
|
|
367
|
+
|
|
368
|
+
handler.on(Port80HandlerEvents.CERTIFICATE_FAILED, (data: ICertificateFailure) => {
|
|
369
|
+
this.emitCertificateFailed(data);
|
|
370
|
+
});
|
|
371
|
+
|
|
372
|
+
handler.on(Port80HandlerEvents.CERTIFICATE_EXPIRING, (data: ICertificateExpiring) => {
|
|
373
|
+
this.emitCertificateExpiring(data);
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
}
|
package/ts/core/utils/index.ts
CHANGED
|
@@ -5,3 +5,10 @@
|
|
|
5
5
|
export * from './event-utils.js';
|
|
6
6
|
export * from './validation-utils.js';
|
|
7
7
|
export * from './ip-utils.js';
|
|
8
|
+
export * from './template-utils.js';
|
|
9
|
+
export * from './route-manager.js';
|
|
10
|
+
export * from './route-utils.js';
|
|
11
|
+
export * from './security-utils.js';
|
|
12
|
+
export * from './shared-security-manager.js';
|
|
13
|
+
export * from './event-system.js';
|
|
14
|
+
export * from './websocket-utils.js';
|