@push.rocks/smartproxy 15.0.2 → 16.0.3

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 (160) hide show
  1. package/dist_ts/00_commitinfo_data.js +1 -1
  2. package/dist_ts/certificate/index.d.ts +10 -4
  3. package/dist_ts/certificate/index.js +5 -7
  4. package/dist_ts/certificate/models/certificate-types.d.ts +35 -15
  5. package/dist_ts/certificate/providers/cert-provisioner.d.ts +41 -15
  6. package/dist_ts/certificate/providers/cert-provisioner.js +201 -41
  7. package/dist_ts/core/models/index.d.ts +2 -0
  8. package/dist_ts/core/models/index.js +3 -1
  9. package/dist_ts/core/models/route-context.d.ts +62 -0
  10. package/dist_ts/core/models/route-context.js +43 -0
  11. package/dist_ts/core/models/socket-augmentation.d.ts +12 -0
  12. package/dist_ts/core/models/socket-augmentation.js +18 -0
  13. package/dist_ts/core/utils/event-system.d.ts +200 -0
  14. package/dist_ts/core/utils/event-system.js +224 -0
  15. package/dist_ts/core/utils/index.d.ts +7 -0
  16. package/dist_ts/core/utils/index.js +8 -1
  17. package/dist_ts/core/utils/route-manager.d.ts +118 -0
  18. package/dist_ts/core/utils/route-manager.js +383 -0
  19. package/dist_ts/core/utils/route-utils.d.ts +94 -0
  20. package/dist_ts/core/utils/route-utils.js +264 -0
  21. package/dist_ts/core/utils/security-utils.d.ts +111 -0
  22. package/dist_ts/core/utils/security-utils.js +212 -0
  23. package/dist_ts/core/utils/shared-security-manager.d.ts +110 -0
  24. package/dist_ts/core/utils/shared-security-manager.js +252 -0
  25. package/dist_ts/core/utils/template-utils.d.ts +37 -0
  26. package/dist_ts/core/utils/template-utils.js +104 -0
  27. package/dist_ts/core/utils/websocket-utils.d.ts +23 -0
  28. package/dist_ts/core/utils/websocket-utils.js +86 -0
  29. package/dist_ts/forwarding/config/forwarding-types.d.ts +40 -76
  30. package/dist_ts/forwarding/config/forwarding-types.js +19 -18
  31. package/dist_ts/forwarding/config/index.d.ts +4 -2
  32. package/dist_ts/forwarding/config/index.js +5 -3
  33. package/dist_ts/forwarding/handlers/base-handler.js +3 -1
  34. package/dist_ts/forwarding/index.d.ts +5 -6
  35. package/dist_ts/forwarding/index.js +3 -3
  36. package/dist_ts/http/models/http-types.js +1 -1
  37. package/dist_ts/http/port80/acme-interfaces.d.ts +30 -0
  38. package/dist_ts/http/port80/acme-interfaces.js +46 -1
  39. package/dist_ts/http/port80/port80-handler.d.ts +17 -2
  40. package/dist_ts/http/port80/port80-handler.js +49 -11
  41. package/dist_ts/http/router/index.d.ts +5 -1
  42. package/dist_ts/http/router/index.js +4 -2
  43. package/dist_ts/http/router/route-router.d.ts +108 -0
  44. package/dist_ts/http/router/route-router.js +393 -0
  45. package/dist_ts/index.d.ts +8 -2
  46. package/dist_ts/index.js +10 -3
  47. package/dist_ts/proxies/index.d.ts +7 -2
  48. package/dist_ts/proxies/index.js +10 -4
  49. package/dist_ts/proxies/network-proxy/certificate-manager.d.ts +21 -0
  50. package/dist_ts/proxies/network-proxy/certificate-manager.js +92 -1
  51. package/dist_ts/proxies/network-proxy/context-creator.d.ts +34 -0
  52. package/dist_ts/proxies/network-proxy/context-creator.js +108 -0
  53. package/dist_ts/proxies/network-proxy/function-cache.d.ts +90 -0
  54. package/dist_ts/proxies/network-proxy/function-cache.js +198 -0
  55. package/dist_ts/proxies/network-proxy/http-request-handler.d.ts +40 -0
  56. package/dist_ts/proxies/network-proxy/http-request-handler.js +256 -0
  57. package/dist_ts/proxies/network-proxy/http2-request-handler.d.ts +24 -0
  58. package/dist_ts/proxies/network-proxy/http2-request-handler.js +201 -0
  59. package/dist_ts/proxies/network-proxy/models/types.d.ts +73 -1
  60. package/dist_ts/proxies/network-proxy/models/types.js +242 -1
  61. package/dist_ts/proxies/network-proxy/network-proxy.d.ts +23 -20
  62. package/dist_ts/proxies/network-proxy/network-proxy.js +147 -60
  63. package/dist_ts/proxies/network-proxy/request-handler.d.ts +38 -5
  64. package/dist_ts/proxies/network-proxy/request-handler.js +584 -198
  65. package/dist_ts/proxies/network-proxy/security-manager.d.ts +65 -0
  66. package/dist_ts/proxies/network-proxy/security-manager.js +255 -0
  67. package/dist_ts/proxies/network-proxy/websocket-handler.d.ts +13 -2
  68. package/dist_ts/proxies/network-proxy/websocket-handler.js +238 -20
  69. package/dist_ts/proxies/smart-proxy/index.d.ts +1 -1
  70. package/dist_ts/proxies/smart-proxy/index.js +3 -3
  71. package/dist_ts/proxies/smart-proxy/models/interfaces.d.ts +5 -66
  72. package/dist_ts/proxies/smart-proxy/models/interfaces.js +5 -4
  73. package/dist_ts/proxies/smart-proxy/models/route-types.d.ts +173 -6
  74. package/dist_ts/proxies/smart-proxy/network-proxy-bridge.d.ts +20 -7
  75. package/dist_ts/proxies/smart-proxy/network-proxy-bridge.js +49 -108
  76. package/dist_ts/proxies/smart-proxy/port-manager.d.ts +81 -0
  77. package/dist_ts/proxies/smart-proxy/port-manager.js +166 -0
  78. package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +7 -5
  79. package/dist_ts/proxies/smart-proxy/route-connection-handler.js +155 -160
  80. package/dist_ts/proxies/smart-proxy/route-helpers/index.d.ts +9 -0
  81. package/dist_ts/proxies/smart-proxy/route-helpers/index.js +11 -0
  82. package/dist_ts/proxies/smart-proxy/route-helpers.d.ts +5 -125
  83. package/dist_ts/proxies/smart-proxy/route-helpers.js +8 -195
  84. package/dist_ts/proxies/smart-proxy/route-manager.d.ts +14 -11
  85. package/dist_ts/proxies/smart-proxy/route-manager.js +81 -124
  86. package/dist_ts/proxies/smart-proxy/smart-proxy.d.ts +101 -12
  87. package/dist_ts/proxies/smart-proxy/smart-proxy.js +178 -306
  88. package/dist_ts/proxies/smart-proxy/timeout-manager.js +3 -3
  89. package/dist_ts/proxies/smart-proxy/utils/index.d.ts +12 -0
  90. package/dist_ts/proxies/smart-proxy/utils/index.js +19 -0
  91. package/dist_ts/proxies/smart-proxy/utils/route-helpers.d.ts +240 -0
  92. package/dist_ts/proxies/smart-proxy/utils/route-helpers.js +451 -0
  93. package/dist_ts/proxies/smart-proxy/utils/route-migration-utils.d.ts +51 -0
  94. package/dist_ts/proxies/smart-proxy/utils/route-migration-utils.js +124 -0
  95. package/dist_ts/proxies/smart-proxy/utils/route-patterns.d.ts +131 -0
  96. package/dist_ts/proxies/smart-proxy/utils/route-patterns.js +217 -0
  97. package/dist_ts/proxies/smart-proxy/utils/route-utils.d.ts +79 -0
  98. package/dist_ts/proxies/smart-proxy/utils/route-utils.js +266 -0
  99. package/dist_ts/proxies/smart-proxy/utils/route-validators.d.ts +73 -0
  100. package/dist_ts/proxies/smart-proxy/utils/route-validators.js +264 -0
  101. package/package.json +1 -1
  102. package/readme.md +241 -125
  103. package/readme.plan.md +73 -286
  104. package/ts/00_commitinfo_data.ts +1 -1
  105. package/ts/certificate/index.ts +17 -9
  106. package/ts/certificate/models/certificate-types.ts +37 -16
  107. package/ts/certificate/providers/cert-provisioner.ts +247 -54
  108. package/ts/core/models/index.ts +2 -0
  109. package/ts/core/models/route-context.ts +113 -0
  110. package/ts/core/models/socket-augmentation.ts +33 -0
  111. package/ts/core/utils/event-system.ts +376 -0
  112. package/ts/core/utils/index.ts +7 -0
  113. package/ts/core/utils/route-manager.ts +489 -0
  114. package/ts/core/utils/route-utils.ts +312 -0
  115. package/ts/core/utils/security-utils.ts +309 -0
  116. package/ts/core/utils/shared-security-manager.ts +333 -0
  117. package/ts/core/utils/template-utils.ts +124 -0
  118. package/ts/core/utils/websocket-utils.ts +81 -0
  119. package/ts/forwarding/config/forwarding-types.ts +79 -107
  120. package/ts/forwarding/config/index.ts +4 -2
  121. package/ts/forwarding/handlers/base-handler.ts +4 -2
  122. package/ts/forwarding/index.ts +3 -2
  123. package/ts/http/models/http-types.ts +0 -1
  124. package/ts/http/port80/acme-interfaces.ts +84 -0
  125. package/ts/http/port80/port80-handler.ts +61 -15
  126. package/ts/http/router/index.ts +8 -1
  127. package/ts/http/router/route-router.ts +482 -0
  128. package/ts/index.ts +14 -2
  129. package/ts/proxies/index.ts +12 -3
  130. package/ts/proxies/network-proxy/certificate-manager.ts +114 -10
  131. package/ts/proxies/network-proxy/context-creator.ts +145 -0
  132. package/ts/proxies/network-proxy/function-cache.ts +259 -0
  133. package/ts/proxies/network-proxy/http-request-handler.ts +330 -0
  134. package/ts/proxies/network-proxy/http2-request-handler.ts +255 -0
  135. package/ts/proxies/network-proxy/models/types.ts +312 -1
  136. package/ts/proxies/network-proxy/network-proxy.ts +195 -86
  137. package/ts/proxies/network-proxy/request-handler.ts +698 -246
  138. package/ts/proxies/network-proxy/security-manager.ts +298 -0
  139. package/ts/proxies/network-proxy/websocket-handler.ts +276 -33
  140. package/ts/proxies/smart-proxy/index.ts +2 -12
  141. package/ts/proxies/smart-proxy/models/interfaces.ts +13 -67
  142. package/ts/proxies/smart-proxy/models/route-types.ts +223 -25
  143. package/ts/proxies/smart-proxy/network-proxy-bridge.ts +57 -123
  144. package/ts/proxies/smart-proxy/port-manager.ts +195 -0
  145. package/ts/proxies/smart-proxy/route-connection-handler.ts +191 -225
  146. package/ts/proxies/smart-proxy/route-manager.ts +101 -144
  147. package/ts/proxies/smart-proxy/smart-proxy.ts +206 -377
  148. package/ts/proxies/smart-proxy/timeout-manager.ts +2 -2
  149. package/ts/proxies/smart-proxy/utils/index.ts +40 -0
  150. package/ts/proxies/smart-proxy/utils/route-helpers.ts +621 -0
  151. package/ts/proxies/smart-proxy/utils/route-migration-utils.ts +165 -0
  152. package/ts/proxies/smart-proxy/utils/route-patterns.ts +309 -0
  153. package/ts/proxies/smart-proxy/utils/route-utils.ts +330 -0
  154. package/ts/proxies/smart-proxy/utils/route-validators.ts +288 -0
  155. package/ts/forwarding/config/domain-config.ts +0 -28
  156. package/ts/forwarding/config/domain-manager.ts +0 -283
  157. package/ts/proxies/smart-proxy/connection-handler.ts +0 -1240
  158. package/ts/proxies/smart-proxy/domain-config-manager.ts +0 -441
  159. package/ts/proxies/smart-proxy/port-range-manager.ts +0 -211
  160. package/ts/proxies/smart-proxy/route-helpers.ts +0 -344
@@ -0,0 +1,200 @@
1
+ import type { ICertificateData, ICertificateFailure, ICertificateExpiring } from '../models/common-types.js';
2
+ import type { IRouteConfig } from '../../proxies/smart-proxy/models/route-types.js';
3
+ /**
4
+ * Standardized event names used throughout the system
5
+ */
6
+ export declare enum ProxyEvents {
7
+ CERTIFICATE_ISSUED = "certificate:issued",
8
+ CERTIFICATE_RENEWED = "certificate:renewed",
9
+ CERTIFICATE_FAILED = "certificate:failed",
10
+ CERTIFICATE_EXPIRING = "certificate:expiring",
11
+ COMPONENT_STARTED = "component:started",
12
+ COMPONENT_STOPPED = "component:stopped",
13
+ CONNECTION_ESTABLISHED = "connection:established",
14
+ CONNECTION_CLOSED = "connection:closed",
15
+ CONNECTION_ERROR = "connection:error",
16
+ REQUEST_RECEIVED = "request:received",
17
+ REQUEST_COMPLETED = "request:completed",
18
+ REQUEST_ERROR = "request:error",
19
+ ROUTE_MATCHED = "route:matched",
20
+ ROUTE_UPDATED = "route:updated",
21
+ ROUTE_ERROR = "route:error",
22
+ SECURITY_BLOCKED = "security:blocked",
23
+ SECURITY_BREACH_ATTEMPT = "security:breach-attempt",
24
+ TLS_HANDSHAKE_STARTED = "tls:handshake-started",
25
+ TLS_HANDSHAKE_COMPLETED = "tls:handshake-completed",
26
+ TLS_HANDSHAKE_FAILED = "tls:handshake-failed"
27
+ }
28
+ /**
29
+ * Component types for event metadata
30
+ */
31
+ export declare enum ComponentType {
32
+ SMART_PROXY = "smart-proxy",
33
+ NETWORK_PROXY = "network-proxy",
34
+ NFTABLES_PROXY = "nftables-proxy",
35
+ PORT80_HANDLER = "port80-handler",
36
+ CERTIFICATE_MANAGER = "certificate-manager",
37
+ ROUTE_MANAGER = "route-manager",
38
+ CONNECTION_MANAGER = "connection-manager",
39
+ TLS_MANAGER = "tls-manager",
40
+ SECURITY_MANAGER = "security-manager"
41
+ }
42
+ /**
43
+ * Base event data interface
44
+ */
45
+ export interface IEventData {
46
+ timestamp: number;
47
+ componentType: ComponentType;
48
+ componentId?: string;
49
+ }
50
+ /**
51
+ * Certificate event data
52
+ */
53
+ export interface ICertificateEventData extends IEventData, ICertificateData {
54
+ isRenewal?: boolean;
55
+ source?: string;
56
+ }
57
+ /**
58
+ * Certificate failure event data
59
+ */
60
+ export interface ICertificateFailureEventData extends IEventData, ICertificateFailure {
61
+ }
62
+ /**
63
+ * Certificate expiring event data
64
+ */
65
+ export interface ICertificateExpiringEventData extends IEventData, ICertificateExpiring {
66
+ }
67
+ /**
68
+ * Component lifecycle event data
69
+ */
70
+ export interface IComponentEventData extends IEventData {
71
+ name: string;
72
+ version?: string;
73
+ }
74
+ /**
75
+ * Connection event data
76
+ */
77
+ export interface IConnectionEventData extends IEventData {
78
+ connectionId: string;
79
+ clientIp: string;
80
+ serverIp?: string;
81
+ port: number;
82
+ isTls?: boolean;
83
+ domain?: string;
84
+ }
85
+ /**
86
+ * Request event data
87
+ */
88
+ export interface IRequestEventData extends IEventData {
89
+ connectionId: string;
90
+ requestId: string;
91
+ method?: string;
92
+ path?: string;
93
+ statusCode?: number;
94
+ duration?: number;
95
+ routeId?: string;
96
+ routeName?: string;
97
+ }
98
+ /**
99
+ * Route event data
100
+ */
101
+ export interface IRouteEventData extends IEventData {
102
+ route: IRouteConfig;
103
+ context?: any;
104
+ }
105
+ /**
106
+ * Security event data
107
+ */
108
+ export interface ISecurityEventData extends IEventData {
109
+ clientIp: string;
110
+ reason: string;
111
+ routeId?: string;
112
+ routeName?: string;
113
+ }
114
+ /**
115
+ * TLS event data
116
+ */
117
+ export interface ITlsEventData extends IEventData {
118
+ connectionId: string;
119
+ domain?: string;
120
+ clientIp: string;
121
+ tlsVersion?: string;
122
+ cipherSuite?: string;
123
+ sniHostname?: string;
124
+ }
125
+ /**
126
+ * Logger interface for event system
127
+ */
128
+ export interface IEventLogger {
129
+ info: (message: string, ...args: any[]) => void;
130
+ warn: (message: string, ...args: any[]) => void;
131
+ error: (message: string, ...args: any[]) => void;
132
+ debug?: (message: string, ...args: any[]) => void;
133
+ }
134
+ /**
135
+ * Event handler type
136
+ */
137
+ export type EventHandler<T> = (data: T) => void;
138
+ /**
139
+ * Helper class to standardize event emission and handling
140
+ * across all system components
141
+ */
142
+ export declare class EventSystem {
143
+ private emitter;
144
+ private componentType;
145
+ private componentId;
146
+ private logger?;
147
+ constructor(componentType: ComponentType, componentId?: string, logger?: IEventLogger);
148
+ /**
149
+ * Emit a certificate issued event
150
+ */
151
+ emitCertificateIssued(data: Omit<ICertificateEventData, 'timestamp' | 'componentType' | 'componentId'>): void;
152
+ /**
153
+ * Emit a certificate renewed event
154
+ */
155
+ emitCertificateRenewed(data: Omit<ICertificateEventData, 'timestamp' | 'componentType' | 'componentId'>): void;
156
+ /**
157
+ * Emit a certificate failed event
158
+ */
159
+ emitCertificateFailed(data: Omit<ICertificateFailureEventData, 'timestamp' | 'componentType' | 'componentId'>): void;
160
+ /**
161
+ * Emit a certificate expiring event
162
+ */
163
+ emitCertificateExpiring(data: Omit<ICertificateExpiringEventData, 'timestamp' | 'componentType' | 'componentId'>): void;
164
+ /**
165
+ * Emit a component started event
166
+ */
167
+ emitComponentStarted(name: string, version?: string): void;
168
+ /**
169
+ * Emit a component stopped event
170
+ */
171
+ emitComponentStopped(name: string): void;
172
+ /**
173
+ * Emit a connection established event
174
+ */
175
+ emitConnectionEstablished(data: Omit<IConnectionEventData, 'timestamp' | 'componentType' | 'componentId'>): void;
176
+ /**
177
+ * Emit a connection closed event
178
+ */
179
+ emitConnectionClosed(data: Omit<IConnectionEventData, 'timestamp' | 'componentType' | 'componentId'>): void;
180
+ /**
181
+ * Emit a route matched event
182
+ */
183
+ emitRouteMatched(data: Omit<IRouteEventData, 'timestamp' | 'componentType' | 'componentId'>): void;
184
+ /**
185
+ * Subscribe to an event
186
+ */
187
+ on<T>(event: ProxyEvents, handler: EventHandler<T>): void;
188
+ /**
189
+ * Subscribe to an event once
190
+ */
191
+ once<T>(event: ProxyEvents, handler: EventHandler<T>): void;
192
+ /**
193
+ * Unsubscribe from an event
194
+ */
195
+ off<T>(event: ProxyEvents, handler: EventHandler<T>): void;
196
+ /**
197
+ * Map Port80Handler events to standard proxy events
198
+ */
199
+ subscribePort80HandlerEvents(handler: any): void;
200
+ }
@@ -0,0 +1,224 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import { Port80HandlerEvents } from '../models/common-types.js';
3
+ /**
4
+ * Standardized event names used throughout the system
5
+ */
6
+ export var ProxyEvents;
7
+ (function (ProxyEvents) {
8
+ // Certificate events
9
+ ProxyEvents["CERTIFICATE_ISSUED"] = "certificate:issued";
10
+ ProxyEvents["CERTIFICATE_RENEWED"] = "certificate:renewed";
11
+ ProxyEvents["CERTIFICATE_FAILED"] = "certificate:failed";
12
+ ProxyEvents["CERTIFICATE_EXPIRING"] = "certificate:expiring";
13
+ // Component lifecycle events
14
+ ProxyEvents["COMPONENT_STARTED"] = "component:started";
15
+ ProxyEvents["COMPONENT_STOPPED"] = "component:stopped";
16
+ // Connection events
17
+ ProxyEvents["CONNECTION_ESTABLISHED"] = "connection:established";
18
+ ProxyEvents["CONNECTION_CLOSED"] = "connection:closed";
19
+ ProxyEvents["CONNECTION_ERROR"] = "connection:error";
20
+ // Request events
21
+ ProxyEvents["REQUEST_RECEIVED"] = "request:received";
22
+ ProxyEvents["REQUEST_COMPLETED"] = "request:completed";
23
+ ProxyEvents["REQUEST_ERROR"] = "request:error";
24
+ // Route events
25
+ ProxyEvents["ROUTE_MATCHED"] = "route:matched";
26
+ ProxyEvents["ROUTE_UPDATED"] = "route:updated";
27
+ ProxyEvents["ROUTE_ERROR"] = "route:error";
28
+ // Security events
29
+ ProxyEvents["SECURITY_BLOCKED"] = "security:blocked";
30
+ ProxyEvents["SECURITY_BREACH_ATTEMPT"] = "security:breach-attempt";
31
+ // TLS events
32
+ ProxyEvents["TLS_HANDSHAKE_STARTED"] = "tls:handshake-started";
33
+ ProxyEvents["TLS_HANDSHAKE_COMPLETED"] = "tls:handshake-completed";
34
+ ProxyEvents["TLS_HANDSHAKE_FAILED"] = "tls:handshake-failed";
35
+ })(ProxyEvents || (ProxyEvents = {}));
36
+ /**
37
+ * Component types for event metadata
38
+ */
39
+ export var ComponentType;
40
+ (function (ComponentType) {
41
+ ComponentType["SMART_PROXY"] = "smart-proxy";
42
+ ComponentType["NETWORK_PROXY"] = "network-proxy";
43
+ ComponentType["NFTABLES_PROXY"] = "nftables-proxy";
44
+ ComponentType["PORT80_HANDLER"] = "port80-handler";
45
+ ComponentType["CERTIFICATE_MANAGER"] = "certificate-manager";
46
+ ComponentType["ROUTE_MANAGER"] = "route-manager";
47
+ ComponentType["CONNECTION_MANAGER"] = "connection-manager";
48
+ ComponentType["TLS_MANAGER"] = "tls-manager";
49
+ ComponentType["SECURITY_MANAGER"] = "security-manager";
50
+ })(ComponentType || (ComponentType = {}));
51
+ /**
52
+ * Helper class to standardize event emission and handling
53
+ * across all system components
54
+ */
55
+ export class EventSystem {
56
+ constructor(componentType, componentId = '', logger) {
57
+ this.emitter = new plugins.EventEmitter();
58
+ this.componentType = componentType;
59
+ this.componentId = componentId;
60
+ this.logger = logger;
61
+ }
62
+ /**
63
+ * Emit a certificate issued event
64
+ */
65
+ emitCertificateIssued(data) {
66
+ const eventData = {
67
+ ...data,
68
+ timestamp: Date.now(),
69
+ componentType: this.componentType,
70
+ componentId: this.componentId
71
+ };
72
+ this.logger?.info?.(`Certificate issued for ${data.domain}`);
73
+ this.emitter.emit(ProxyEvents.CERTIFICATE_ISSUED, eventData);
74
+ }
75
+ /**
76
+ * Emit a certificate renewed event
77
+ */
78
+ emitCertificateRenewed(data) {
79
+ const eventData = {
80
+ ...data,
81
+ timestamp: Date.now(),
82
+ componentType: this.componentType,
83
+ componentId: this.componentId
84
+ };
85
+ this.logger?.info?.(`Certificate renewed for ${data.domain}`);
86
+ this.emitter.emit(ProxyEvents.CERTIFICATE_RENEWED, eventData);
87
+ }
88
+ /**
89
+ * Emit a certificate failed event
90
+ */
91
+ emitCertificateFailed(data) {
92
+ const eventData = {
93
+ ...data,
94
+ timestamp: Date.now(),
95
+ componentType: this.componentType,
96
+ componentId: this.componentId
97
+ };
98
+ this.logger?.error?.(`Certificate issuance failed for ${data.domain}: ${data.error}`);
99
+ this.emitter.emit(ProxyEvents.CERTIFICATE_FAILED, eventData);
100
+ }
101
+ /**
102
+ * Emit a certificate expiring event
103
+ */
104
+ emitCertificateExpiring(data) {
105
+ const eventData = {
106
+ ...data,
107
+ timestamp: Date.now(),
108
+ componentType: this.componentType,
109
+ componentId: this.componentId
110
+ };
111
+ this.logger?.warn?.(`Certificate expiring for ${data.domain} in ${data.daysRemaining} days`);
112
+ this.emitter.emit(ProxyEvents.CERTIFICATE_EXPIRING, eventData);
113
+ }
114
+ /**
115
+ * Emit a component started event
116
+ */
117
+ emitComponentStarted(name, version) {
118
+ const eventData = {
119
+ name,
120
+ version,
121
+ timestamp: Date.now(),
122
+ componentType: this.componentType,
123
+ componentId: this.componentId
124
+ };
125
+ this.logger?.info?.(`Component ${name} started${version ? ` (v${version})` : ''}`);
126
+ this.emitter.emit(ProxyEvents.COMPONENT_STARTED, eventData);
127
+ }
128
+ /**
129
+ * Emit a component stopped event
130
+ */
131
+ emitComponentStopped(name) {
132
+ const eventData = {
133
+ name,
134
+ timestamp: Date.now(),
135
+ componentType: this.componentType,
136
+ componentId: this.componentId
137
+ };
138
+ this.logger?.info?.(`Component ${name} stopped`);
139
+ this.emitter.emit(ProxyEvents.COMPONENT_STOPPED, eventData);
140
+ }
141
+ /**
142
+ * Emit a connection established event
143
+ */
144
+ emitConnectionEstablished(data) {
145
+ const eventData = {
146
+ ...data,
147
+ timestamp: Date.now(),
148
+ componentType: this.componentType,
149
+ componentId: this.componentId
150
+ };
151
+ this.logger?.debug?.(`Connection ${data.connectionId} established from ${data.clientIp} on port ${data.port}`);
152
+ this.emitter.emit(ProxyEvents.CONNECTION_ESTABLISHED, eventData);
153
+ }
154
+ /**
155
+ * Emit a connection closed event
156
+ */
157
+ emitConnectionClosed(data) {
158
+ const eventData = {
159
+ ...data,
160
+ timestamp: Date.now(),
161
+ componentType: this.componentType,
162
+ componentId: this.componentId
163
+ };
164
+ this.logger?.debug?.(`Connection ${data.connectionId} closed`);
165
+ this.emitter.emit(ProxyEvents.CONNECTION_CLOSED, eventData);
166
+ }
167
+ /**
168
+ * Emit a route matched event
169
+ */
170
+ emitRouteMatched(data) {
171
+ const eventData = {
172
+ ...data,
173
+ timestamp: Date.now(),
174
+ componentType: this.componentType,
175
+ componentId: this.componentId
176
+ };
177
+ this.logger?.debug?.(`Route matched: ${data.route.name || data.route.id || 'unnamed'}`);
178
+ this.emitter.emit(ProxyEvents.ROUTE_MATCHED, eventData);
179
+ }
180
+ /**
181
+ * Subscribe to an event
182
+ */
183
+ on(event, handler) {
184
+ this.emitter.on(event, handler);
185
+ }
186
+ /**
187
+ * Subscribe to an event once
188
+ */
189
+ once(event, handler) {
190
+ this.emitter.once(event, handler);
191
+ }
192
+ /**
193
+ * Unsubscribe from an event
194
+ */
195
+ off(event, handler) {
196
+ this.emitter.off(event, handler);
197
+ }
198
+ /**
199
+ * Map Port80Handler events to standard proxy events
200
+ */
201
+ subscribePort80HandlerEvents(handler) {
202
+ handler.on(Port80HandlerEvents.CERTIFICATE_ISSUED, (data) => {
203
+ this.emitCertificateIssued({
204
+ ...data,
205
+ isRenewal: false,
206
+ source: 'port80handler'
207
+ });
208
+ });
209
+ handler.on(Port80HandlerEvents.CERTIFICATE_RENEWED, (data) => {
210
+ this.emitCertificateRenewed({
211
+ ...data,
212
+ isRenewal: true,
213
+ source: 'port80handler'
214
+ });
215
+ });
216
+ handler.on(Port80HandlerEvents.CERTIFICATE_FAILED, (data) => {
217
+ this.emitCertificateFailed(data);
218
+ });
219
+ handler.on(Port80HandlerEvents.CERTIFICATE_EXPIRING, (data) => {
220
+ this.emitCertificateExpiring(data);
221
+ });
222
+ }
223
+ }
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtc3lzdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvY29yZS91dGlscy9ldmVudC1zeXN0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQU81QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVoRTs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFdBa0NYO0FBbENELFdBQVksV0FBVztJQUNyQixxQkFBcUI7SUFDckIsd0RBQXlDLENBQUE7SUFDekMsMERBQTJDLENBQUE7SUFDM0Msd0RBQXlDLENBQUE7SUFDekMsNERBQTZDLENBQUE7SUFFN0MsNkJBQTZCO0lBQzdCLHNEQUF1QyxDQUFBO0lBQ3ZDLHNEQUF1QyxDQUFBO0lBRXZDLG9CQUFvQjtJQUNwQixnRUFBaUQsQ0FBQTtJQUNqRCxzREFBdUMsQ0FBQTtJQUN2QyxvREFBcUMsQ0FBQTtJQUVyQyxpQkFBaUI7SUFDakIsb0RBQXFDLENBQUE7SUFDckMsc0RBQXVDLENBQUE7SUFDdkMsOENBQStCLENBQUE7SUFFL0IsZUFBZTtJQUNmLDhDQUErQixDQUFBO0lBQy9CLDhDQUErQixDQUFBO0lBQy9CLDBDQUEyQixDQUFBO0lBRTNCLGtCQUFrQjtJQUNsQixvREFBcUMsQ0FBQTtJQUNyQyxrRUFBbUQsQ0FBQTtJQUVuRCxhQUFhO0lBQ2IsOERBQStDLENBQUE7SUFDL0Msa0VBQW1ELENBQUE7SUFDbkQsNERBQTZDLENBQUE7QUFDL0MsQ0FBQyxFQWxDVyxXQUFXLEtBQVgsV0FBVyxRQWtDdEI7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGFBVVg7QUFWRCxXQUFZLGFBQWE7SUFDdkIsNENBQTJCLENBQUE7SUFDM0IsZ0RBQStCLENBQUE7SUFDL0Isa0RBQWlDLENBQUE7SUFDakMsa0RBQWlDLENBQUE7SUFDakMsNERBQTJDLENBQUE7SUFDM0MsZ0RB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
@@ -4,3 +4,10 @@
4
4
  export * from './event-utils.js';
5
5
  export * from './validation-utils.js';
6
6
  export * from './ip-utils.js';
7
+ export * from './template-utils.js';
8
+ export * from './route-manager.js';
9
+ export * from './route-utils.js';
10
+ export * from './security-utils.js';
11
+ export * from './shared-security-manager.js';
12
+ export * from './event-system.js';
13
+ export * from './websocket-utils.js';
@@ -4,4 +4,11 @@
4
4
  export * from './event-utils.js';
5
5
  export * from './validation-utils.js';
6
6
  export * from './ip-utils.js';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9jb3JlL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsZUFBZSxDQUFDIn0=
7
+ export * from './template-utils.js';
8
+ export * from './route-manager.js';
9
+ export * from './route-utils.js';
10
+ export * from './security-utils.js';
11
+ export * from './shared-security-manager.js';
12
+ export * from './event-system.js';
13
+ export * from './websocket-utils.js';
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9jb3JlL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsc0JBQXNCLENBQUMifQ==
@@ -0,0 +1,118 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import type { IRouteConfig, TPortRange, IRouteContext } from '../../proxies/smart-proxy/models/route-types.js';
3
+ /**
4
+ * Result of route matching
5
+ */
6
+ export interface IRouteMatchResult {
7
+ route: IRouteConfig;
8
+ params?: Record<string, string>;
9
+ }
10
+ /**
11
+ * Logger interface for RouteManager
12
+ */
13
+ export interface ILogger {
14
+ info: (message: string, ...args: any[]) => void;
15
+ warn: (message: string, ...args: any[]) => void;
16
+ error: (message: string, ...args: any[]) => void;
17
+ debug?: (message: string, ...args: any[]) => void;
18
+ }
19
+ /**
20
+ * Shared RouteManager used by both SmartProxy and NetworkProxy
21
+ *
22
+ * This provides a unified implementation for route management,
23
+ * route matching, and port handling.
24
+ */
25
+ export declare class SharedRouteManager extends plugins.EventEmitter {
26
+ private routes;
27
+ private portMap;
28
+ private logger;
29
+ private enableDetailedLogging;
30
+ /**
31
+ * Memoization cache for expanded port ranges
32
+ */
33
+ private portRangeCache;
34
+ constructor(options: {
35
+ logger?: ILogger;
36
+ enableDetailedLogging?: boolean;
37
+ routes?: IRouteConfig[];
38
+ });
39
+ /**
40
+ * Update routes with new configuration
41
+ */
42
+ updateRoutes(routes?: IRouteConfig[]): void;
43
+ /**
44
+ * Get all routes
45
+ */
46
+ getRoutes(): IRouteConfig[];
47
+ /**
48
+ * Rebuild the port mapping for fast lookups
49
+ * Also logs information about the ports being listened on
50
+ */
51
+ private rebuildPortMap;
52
+ /**
53
+ * Expand a port range specification into an array of individual ports
54
+ * Uses caching to improve performance for frequently used port ranges
55
+ *
56
+ * @public - Made public to allow external code to interpret port ranges
57
+ */
58
+ expandPortRange(portRange: TPortRange): number[];
59
+ /**
60
+ * Get all ports that should be listened on
61
+ * This method automatically infers all required ports from route configurations
62
+ */
63
+ getListeningPorts(): number[];
64
+ /**
65
+ * Get all routes for a given port
66
+ */
67
+ getRoutesForPort(port: number): IRouteConfig[];
68
+ /**
69
+ * Find the matching route for a connection
70
+ */
71
+ findMatchingRoute(context: IRouteContext): IRouteMatchResult | null;
72
+ /**
73
+ * Check if a route matches the given context
74
+ */
75
+ private matchesRoute;
76
+ /**
77
+ * Match a domain pattern against a domain
78
+ * @deprecated Use the matchDomain function from route-utils.js instead
79
+ */
80
+ matchDomain(pattern: string, domain: string): boolean;
81
+ /**
82
+ * Match a path pattern against a path
83
+ * @deprecated Use the matchPath function from route-utils.js instead
84
+ */
85
+ matchPath(pattern: string, path: string): boolean;
86
+ /**
87
+ * Match an IP pattern against a pattern
88
+ * @deprecated Use the matchIpPattern function from route-utils.js instead
89
+ */
90
+ matchIpPattern(pattern: string, ip: string): boolean;
91
+ /**
92
+ * Match an IP against a CIDR pattern
93
+ * @deprecated Use the matchIpCidr function from route-utils.js instead
94
+ */
95
+ matchIpCidr(cidr: string, ip: string): boolean;
96
+ /**
97
+ * Convert an IP address to a numeric value
98
+ * @deprecated Use the ipToNumber function from route-utils.js instead
99
+ */
100
+ private ipToNumber;
101
+ /**
102
+ * Validate the route configuration and return any warnings
103
+ */
104
+ validateConfiguration(): string[];
105
+ /**
106
+ * Check if two route matches are similar (potential conflict)
107
+ */
108
+ private areMatchesSimilar;
109
+ /**
110
+ * Check if a route is completely shadowed by a higher priority route
111
+ */
112
+ private isRouteShadowed;
113
+ /**
114
+ * Check if route1 is more specific than route2
115
+ * @deprecated Use the calculateRouteSpecificity function from route-utils.js instead
116
+ */
117
+ private isRouteMoreSpecific;
118
+ }