@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.
Files changed (115) hide show
  1. package/dist_ts/00_commitinfo_data.js +1 -1
  2. package/dist_ts/core/models/index.d.ts +2 -0
  3. package/dist_ts/core/models/index.js +3 -1
  4. package/dist_ts/core/models/route-context.d.ts +62 -0
  5. package/dist_ts/core/models/route-context.js +43 -0
  6. package/dist_ts/core/models/socket-augmentation.d.ts +12 -0
  7. package/dist_ts/core/models/socket-augmentation.js +18 -0
  8. package/dist_ts/core/utils/event-system.d.ts +200 -0
  9. package/dist_ts/core/utils/event-system.js +224 -0
  10. package/dist_ts/core/utils/index.d.ts +7 -0
  11. package/dist_ts/core/utils/index.js +8 -1
  12. package/dist_ts/core/utils/route-manager.d.ts +118 -0
  13. package/dist_ts/core/utils/route-manager.js +383 -0
  14. package/dist_ts/core/utils/route-utils.d.ts +94 -0
  15. package/dist_ts/core/utils/route-utils.js +264 -0
  16. package/dist_ts/core/utils/security-utils.d.ts +111 -0
  17. package/dist_ts/core/utils/security-utils.js +212 -0
  18. package/dist_ts/core/utils/shared-security-manager.d.ts +110 -0
  19. package/dist_ts/core/utils/shared-security-manager.js +252 -0
  20. package/dist_ts/core/utils/template-utils.d.ts +37 -0
  21. package/dist_ts/core/utils/template-utils.js +104 -0
  22. package/dist_ts/core/utils/websocket-utils.d.ts +23 -0
  23. package/dist_ts/core/utils/websocket-utils.js +86 -0
  24. package/dist_ts/http/router/index.d.ts +5 -1
  25. package/dist_ts/http/router/index.js +4 -2
  26. package/dist_ts/http/router/route-router.d.ts +108 -0
  27. package/dist_ts/http/router/route-router.js +393 -0
  28. package/dist_ts/index.d.ts +8 -2
  29. package/dist_ts/index.js +10 -3
  30. package/dist_ts/proxies/index.d.ts +7 -2
  31. package/dist_ts/proxies/index.js +10 -4
  32. package/dist_ts/proxies/network-proxy/certificate-manager.d.ts +21 -0
  33. package/dist_ts/proxies/network-proxy/certificate-manager.js +92 -1
  34. package/dist_ts/proxies/network-proxy/context-creator.d.ts +34 -0
  35. package/dist_ts/proxies/network-proxy/context-creator.js +108 -0
  36. package/dist_ts/proxies/network-proxy/function-cache.d.ts +90 -0
  37. package/dist_ts/proxies/network-proxy/function-cache.js +198 -0
  38. package/dist_ts/proxies/network-proxy/http-request-handler.d.ts +40 -0
  39. package/dist_ts/proxies/network-proxy/http-request-handler.js +256 -0
  40. package/dist_ts/proxies/network-proxy/http2-request-handler.d.ts +24 -0
  41. package/dist_ts/proxies/network-proxy/http2-request-handler.js +201 -0
  42. package/dist_ts/proxies/network-proxy/models/types.d.ts +73 -1
  43. package/dist_ts/proxies/network-proxy/models/types.js +242 -1
  44. package/dist_ts/proxies/network-proxy/network-proxy.d.ts +23 -20
  45. package/dist_ts/proxies/network-proxy/network-proxy.js +149 -60
  46. package/dist_ts/proxies/network-proxy/request-handler.d.ts +38 -5
  47. package/dist_ts/proxies/network-proxy/request-handler.js +584 -198
  48. package/dist_ts/proxies/network-proxy/security-manager.d.ts +65 -0
  49. package/dist_ts/proxies/network-proxy/security-manager.js +255 -0
  50. package/dist_ts/proxies/network-proxy/websocket-handler.d.ts +13 -2
  51. package/dist_ts/proxies/network-proxy/websocket-handler.js +238 -20
  52. package/dist_ts/proxies/smart-proxy/index.d.ts +1 -1
  53. package/dist_ts/proxies/smart-proxy/index.js +3 -3
  54. package/dist_ts/proxies/smart-proxy/models/interfaces.d.ts +3 -5
  55. package/dist_ts/proxies/smart-proxy/models/route-types.d.ts +56 -4
  56. package/dist_ts/proxies/smart-proxy/network-proxy-bridge.d.ts +4 -57
  57. package/dist_ts/proxies/smart-proxy/network-proxy-bridge.js +19 -228
  58. package/dist_ts/proxies/smart-proxy/port-manager.d.ts +81 -0
  59. package/dist_ts/proxies/smart-proxy/port-manager.js +166 -0
  60. package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +5 -0
  61. package/dist_ts/proxies/smart-proxy/route-connection-handler.js +131 -15
  62. package/dist_ts/proxies/smart-proxy/route-helpers/index.d.ts +3 -1
  63. package/dist_ts/proxies/smart-proxy/route-helpers/index.js +5 -3
  64. package/dist_ts/proxies/smart-proxy/route-helpers.d.ts +5 -178
  65. package/dist_ts/proxies/smart-proxy/route-helpers.js +8 -296
  66. package/dist_ts/proxies/smart-proxy/route-manager.d.ts +11 -2
  67. package/dist_ts/proxies/smart-proxy/route-manager.js +79 -10
  68. package/dist_ts/proxies/smart-proxy/smart-proxy.d.ts +29 -2
  69. package/dist_ts/proxies/smart-proxy/smart-proxy.js +48 -43
  70. package/dist_ts/proxies/smart-proxy/utils/route-helpers.d.ts +67 -1
  71. package/dist_ts/proxies/smart-proxy/utils/route-helpers.js +120 -1
  72. package/dist_ts/proxies/smart-proxy/utils/route-validators.d.ts +3 -3
  73. package/dist_ts/proxies/smart-proxy/utils/route-validators.js +27 -5
  74. package/package.json +1 -1
  75. package/readme.md +102 -14
  76. package/readme.plan.md +103 -168
  77. package/ts/00_commitinfo_data.ts +1 -1
  78. package/ts/core/models/index.ts +2 -0
  79. package/ts/core/models/route-context.ts +113 -0
  80. package/ts/core/models/socket-augmentation.ts +33 -0
  81. package/ts/core/utils/event-system.ts +376 -0
  82. package/ts/core/utils/index.ts +7 -0
  83. package/ts/core/utils/route-manager.ts +489 -0
  84. package/ts/core/utils/route-utils.ts +312 -0
  85. package/ts/core/utils/security-utils.ts +309 -0
  86. package/ts/core/utils/shared-security-manager.ts +333 -0
  87. package/ts/core/utils/template-utils.ts +124 -0
  88. package/ts/core/utils/websocket-utils.ts +81 -0
  89. package/ts/http/router/index.ts +8 -1
  90. package/ts/http/router/route-router.ts +482 -0
  91. package/ts/index.ts +14 -2
  92. package/ts/proxies/index.ts +12 -3
  93. package/ts/proxies/network-proxy/certificate-manager.ts +114 -10
  94. package/ts/proxies/network-proxy/context-creator.ts +145 -0
  95. package/ts/proxies/network-proxy/function-cache.ts +259 -0
  96. package/ts/proxies/network-proxy/http-request-handler.ts +330 -0
  97. package/ts/proxies/network-proxy/http2-request-handler.ts +255 -0
  98. package/ts/proxies/network-proxy/models/types.ts +312 -1
  99. package/ts/proxies/network-proxy/network-proxy.ts +197 -85
  100. package/ts/proxies/network-proxy/request-handler.ts +698 -246
  101. package/ts/proxies/network-proxy/security-manager.ts +298 -0
  102. package/ts/proxies/network-proxy/websocket-handler.ts +276 -33
  103. package/ts/proxies/smart-proxy/index.ts +2 -12
  104. package/ts/proxies/smart-proxy/models/interfaces.ts +7 -4
  105. package/ts/proxies/smart-proxy/models/route-types.ts +77 -10
  106. package/ts/proxies/smart-proxy/network-proxy-bridge.ts +20 -257
  107. package/ts/proxies/smart-proxy/port-manager.ts +195 -0
  108. package/ts/proxies/smart-proxy/route-connection-handler.ts +156 -21
  109. package/ts/proxies/smart-proxy/route-manager.ts +98 -14
  110. package/ts/proxies/smart-proxy/smart-proxy.ts +56 -55
  111. package/ts/proxies/smart-proxy/utils/route-helpers.ts +167 -1
  112. package/ts/proxies/smart-proxy/utils/route-validators.ts +24 -5
  113. package/ts/proxies/smart-proxy/domain-config-manager.ts.bak +0 -441
  114. package/ts/proxies/smart-proxy/route-helpers/index.ts +0 -9
  115. package/ts/proxies/smart-proxy/route-helpers.ts +0 -498
@@ -1,5 +1,7 @@
1
1
  import * as plugins from '../../../plugins.js';
2
2
  import type { IAcmeOptions } from '../../../certificate/models/certificate-types.js';
3
+ import type { IRouteConfig } from '../../smart-proxy/models/route-types.js';
4
+ import type { IRouteContext } from '../../../core/models/route-context.js';
3
5
  /**
4
6
  * Configuration options for NetworkProxy
5
7
  */
@@ -19,7 +21,10 @@ export interface INetworkProxyOptions {
19
21
  portProxyIntegration?: boolean;
20
22
  useExternalPort80Handler?: boolean;
21
23
  backendProtocol?: 'http1' | 'http2';
24
+ functionCacheSize?: number;
25
+ functionCacheTtl?: number;
22
26
  acme?: IAcmeOptions;
27
+ routes?: IRouteConfig[];
23
28
  }
24
29
  /**
25
30
  * Interface for a certificate entry in the cache
@@ -30,19 +35,31 @@ export interface ICertificateEntry {
30
35
  expires?: Date;
31
36
  }
32
37
  /**
33
- * Interface for reverse proxy configuration
38
+ * @deprecated Use IRouteConfig instead. This interface will be removed in a future release.
39
+ *
40
+ * IMPORTANT: This is a legacy interface maintained only for backward compatibility.
41
+ * New code should use IRouteConfig for all configuration purposes.
42
+ *
43
+ * @see IRouteConfig for the modern, recommended configuration format
34
44
  */
35
45
  export interface IReverseProxyConfig {
46
+ /** Target hostnames/IPs to proxy requests to */
36
47
  destinationIps: string[];
48
+ /** Target ports to proxy requests to */
37
49
  destinationPorts: number[];
50
+ /** Hostname to match for routing */
38
51
  hostName: string;
52
+ /** SSL private key for this host (PEM format) */
39
53
  privateKey: string;
54
+ /** SSL public key/certificate for this host (PEM format) */
40
55
  publicKey: string;
56
+ /** Basic authentication configuration */
41
57
  authentication?: {
42
58
  type: 'Basic';
43
59
  user: string;
44
60
  pass: string;
45
61
  };
62
+ /** Whether to rewrite the Host header to match the target */
46
63
  rewriteHostHeader?: boolean;
47
64
  /**
48
65
  * Protocol to use when proxying to this backend: 'http1' or 'http2'.
@@ -50,6 +67,61 @@ export interface IReverseProxyConfig {
50
67
  */
51
68
  backendProtocol?: 'http1' | 'http2';
52
69
  }
70
+ /**
71
+ * Convert a legacy IReverseProxyConfig to the modern IRouteConfig format
72
+ *
73
+ * @deprecated This function is maintained for backward compatibility.
74
+ * New code should create IRouteConfig objects directly.
75
+ *
76
+ * @param legacyConfig The legacy configuration to convert
77
+ * @param proxyPort The port the proxy listens on
78
+ * @returns A modern route configuration equivalent to the legacy config
79
+ */
80
+ export declare function convertLegacyConfigToRouteConfig(legacyConfig: IReverseProxyConfig, proxyPort: number): IRouteConfig;
81
+ /**
82
+ * Route manager for NetworkProxy
83
+ * Handles route matching and configuration
84
+ */
85
+ export declare class RouteManager {
86
+ private routes;
87
+ private logger;
88
+ constructor(logger: ILogger);
89
+ /**
90
+ * Update the routes configuration
91
+ */
92
+ updateRoutes(routes: IRouteConfig[]): void;
93
+ /**
94
+ * Get all routes
95
+ */
96
+ getRoutes(): IRouteConfig[];
97
+ /**
98
+ * Find the first matching route for a context
99
+ */
100
+ findMatchingRoute(context: IRouteContext): IRouteConfig | null;
101
+ /**
102
+ * Check if a route matches the given context
103
+ */
104
+ private matchesRoute;
105
+ /**
106
+ * Match a domain pattern against a domain
107
+ */
108
+ private matchDomain;
109
+ /**
110
+ * Match a path pattern against a path
111
+ */
112
+ private matchPath;
113
+ /**
114
+ * Match an IP pattern against an IP
115
+ * Supports exact matches, wildcard patterns, and CIDR notation
116
+ */
117
+ private matchIp;
118
+ /**
119
+ * Convert an IP address to its binary representation
120
+ * @param ip The IP address to convert
121
+ * @returns Binary string representation or null if invalid
122
+ */
123
+ private ipToBinary;
124
+ }
53
125
  /**
54
126
  * Interface for connection tracking in the pool
55
127
  */
@@ -1,4 +1,245 @@
1
1
  import * as plugins from '../../../plugins.js';
2
+ /**
3
+ * Convert a legacy IReverseProxyConfig to the modern IRouteConfig format
4
+ *
5
+ * @deprecated This function is maintained for backward compatibility.
6
+ * New code should create IRouteConfig objects directly.
7
+ *
8
+ * @param legacyConfig The legacy configuration to convert
9
+ * @param proxyPort The port the proxy listens on
10
+ * @returns A modern route configuration equivalent to the legacy config
11
+ */
12
+ export function convertLegacyConfigToRouteConfig(legacyConfig, proxyPort) {
13
+ // Create basic route configuration
14
+ const routeConfig = {
15
+ // Match properties
16
+ match: {
17
+ ports: proxyPort,
18
+ domains: legacyConfig.hostName
19
+ },
20
+ // Action properties
21
+ action: {
22
+ type: 'forward',
23
+ target: {
24
+ host: legacyConfig.destinationIps,
25
+ port: legacyConfig.destinationPorts[0]
26
+ },
27
+ // TLS mode is always 'terminate' for legacy configs
28
+ tls: {
29
+ mode: 'terminate',
30
+ certificate: {
31
+ key: legacyConfig.privateKey,
32
+ cert: legacyConfig.publicKey
33
+ }
34
+ },
35
+ // Advanced options
36
+ advanced: {
37
+ // Rewrite host header if specified
38
+ headers: legacyConfig.rewriteHostHeader ? { 'host': '{domain}' } : {}
39
+ }
40
+ },
41
+ // Metadata
42
+ name: `Legacy Config - ${legacyConfig.hostName}`,
43
+ priority: 0, // Default priority
44
+ enabled: true
45
+ };
46
+ // Add authentication if present
47
+ if (legacyConfig.authentication) {
48
+ routeConfig.action.security = {
49
+ authentication: {
50
+ type: 'basic',
51
+ credentials: [{
52
+ username: legacyConfig.authentication.user,
53
+ password: legacyConfig.authentication.pass
54
+ }]
55
+ }
56
+ };
57
+ }
58
+ // Add backend protocol if specified
59
+ if (legacyConfig.backendProtocol) {
60
+ if (!routeConfig.action.options) {
61
+ routeConfig.action.options = {};
62
+ }
63
+ routeConfig.action.options.backendProtocol = legacyConfig.backendProtocol;
64
+ }
65
+ return routeConfig;
66
+ }
67
+ /**
68
+ * Route manager for NetworkProxy
69
+ * Handles route matching and configuration
70
+ */
71
+ export class RouteManager {
72
+ constructor(logger) {
73
+ this.routes = [];
74
+ this.logger = logger;
75
+ }
76
+ /**
77
+ * Update the routes configuration
78
+ */
79
+ updateRoutes(routes) {
80
+ // Sort routes by priority (higher first)
81
+ this.routes = [...routes].sort((a, b) => {
82
+ const priorityA = a.priority ?? 0;
83
+ const priorityB = b.priority ?? 0;
84
+ return priorityB - priorityA;
85
+ });
86
+ this.logger.info(`Updated RouteManager with ${this.routes.length} routes`);
87
+ }
88
+ /**
89
+ * Get all routes
90
+ */
91
+ getRoutes() {
92
+ return [...this.routes];
93
+ }
94
+ /**
95
+ * Find the first matching route for a context
96
+ */
97
+ findMatchingRoute(context) {
98
+ for (const route of this.routes) {
99
+ if (this.matchesRoute(route, context)) {
100
+ return route;
101
+ }
102
+ }
103
+ return null;
104
+ }
105
+ /**
106
+ * Check if a route matches the given context
107
+ */
108
+ matchesRoute(route, context) {
109
+ // Skip disabled routes
110
+ if (route.enabled === false) {
111
+ return false;
112
+ }
113
+ // Check domain match if specified
114
+ if (route.match.domains && context.domain) {
115
+ const domains = Array.isArray(route.match.domains)
116
+ ? route.match.domains
117
+ : [route.match.domains];
118
+ if (!domains.some(domainPattern => this.matchDomain(domainPattern, context.domain))) {
119
+ return false;
120
+ }
121
+ }
122
+ // Check path match if specified
123
+ if (route.match.path && context.path) {
124
+ if (!this.matchPath(route.match.path, context.path)) {
125
+ return false;
126
+ }
127
+ }
128
+ // Check client IP match if specified
129
+ if (route.match.clientIp && context.clientIp) {
130
+ if (!route.match.clientIp.some(ip => this.matchIp(ip, context.clientIp))) {
131
+ return false;
132
+ }
133
+ }
134
+ // Check TLS version match if specified
135
+ if (route.match.tlsVersion && context.tlsVersion) {
136
+ if (!route.match.tlsVersion.includes(context.tlsVersion)) {
137
+ return false;
138
+ }
139
+ }
140
+ // All criteria matched
141
+ return true;
142
+ }
143
+ /**
144
+ * Match a domain pattern against a domain
145
+ */
146
+ matchDomain(pattern, domain) {
147
+ if (pattern === domain) {
148
+ return true;
149
+ }
150
+ if (pattern.includes('*')) {
151
+ const regexPattern = pattern
152
+ .replace(/\./g, '\\.')
153
+ .replace(/\*/g, '.*');
154
+ const regex = new RegExp(`^${regexPattern}$`, 'i');
155
+ return regex.test(domain);
156
+ }
157
+ return false;
158
+ }
159
+ /**
160
+ * Match a path pattern against a path
161
+ */
162
+ matchPath(pattern, path) {
163
+ if (pattern === path) {
164
+ return true;
165
+ }
166
+ if (pattern.endsWith('*')) {
167
+ const prefix = pattern.slice(0, -1);
168
+ return path.startsWith(prefix);
169
+ }
170
+ return false;
171
+ }
172
+ /**
173
+ * Match an IP pattern against an IP
174
+ * Supports exact matches, wildcard patterns, and CIDR notation
175
+ */
176
+ matchIp(pattern, ip) {
177
+ // Exact match
178
+ if (pattern === ip) {
179
+ return true;
180
+ }
181
+ // Wildcard matching (e.g., 192.168.0.*)
182
+ if (pattern.includes('*')) {
183
+ const regexPattern = pattern
184
+ .replace(/\./g, '\\.')
185
+ .replace(/\*/g, '.*');
186
+ const regex = new RegExp(`^${regexPattern}$`);
187
+ return regex.test(ip);
188
+ }
189
+ // CIDR matching (e.g., 192.168.0.0/24)
190
+ if (pattern.includes('/')) {
191
+ try {
192
+ const [subnet, bits] = pattern.split('/');
193
+ // Convert IP addresses to numeric format for comparison
194
+ const ipBinary = this.ipToBinary(ip);
195
+ const subnetBinary = this.ipToBinary(subnet);
196
+ if (!ipBinary || !subnetBinary) {
197
+ return false;
198
+ }
199
+ // Get the subnet mask from CIDR notation
200
+ const mask = parseInt(bits, 10);
201
+ if (isNaN(mask) || mask < 0 || mask > 32) {
202
+ return false;
203
+ }
204
+ // Check if the first 'mask' bits match between IP and subnet
205
+ return ipBinary.slice(0, mask) === subnetBinary.slice(0, mask);
206
+ }
207
+ catch (error) {
208
+ // If we encounter any error during CIDR matching, return false
209
+ return false;
210
+ }
211
+ }
212
+ return false;
213
+ }
214
+ /**
215
+ * Convert an IP address to its binary representation
216
+ * @param ip The IP address to convert
217
+ * @returns Binary string representation or null if invalid
218
+ */
219
+ ipToBinary(ip) {
220
+ // Handle IPv4 addresses only for now
221
+ const parts = ip.split('.');
222
+ // Validate IP format
223
+ if (parts.length !== 4) {
224
+ return null;
225
+ }
226
+ // Convert each octet to 8-bit binary and concatenate
227
+ try {
228
+ return parts
229
+ .map(part => {
230
+ const num = parseInt(part, 10);
231
+ if (isNaN(num) || num < 0 || num > 255) {
232
+ throw new Error('Invalid IP octet');
233
+ }
234
+ return num.toString(2).padStart(8, '0');
235
+ })
236
+ .join('');
237
+ }
238
+ catch (error) {
239
+ return null;
240
+ }
241
+ }
242
+ }
2
243
  /**
3
244
  * Creates a logger based on the specified log level
4
245
  */
@@ -32,4 +273,4 @@ export function createLogger(logLevel = 'info') {
32
273
  }
33
274
  };
34
275
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9wcm94aWVzL25ldHdvcmstcHJveHkvbW9kZWxzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUF3Ri9DOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxXQUFtQixNQUFNO0lBQ3BELE1BQU0sU0FBUyxHQUFHO1FBQ2hCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxFQUFFLENBQUM7UUFDUCxJQUFJLEVBQUUsQ0FBQztRQUNQLEtBQUssRUFBRSxDQUFDO0tBQ1QsQ0FBQztJQUVGLE9BQU87UUFDTCxLQUFLLEVBQUUsQ0FBQyxPQUFlLEVBQUUsSUFBVSxFQUFFLEVBQUU7WUFDckMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxFQUFFLENBQUMsT0FBZSxFQUFFLElBQVUsRUFBRSxFQUFFO1lBQ3BDLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksRUFBRSxDQUFDLE9BQWUsRUFBRSxJQUFVLEVBQUUsRUFBRTtZQUNwQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7WUFDaEQsQ0FBQztRQUNILENBQUM7UUFDRCxLQUFLLEVBQUUsQ0FBQyxPQUFlLEVBQUUsSUFBVSxFQUFFLEVBQUU7WUFDckMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELENBQUM7UUFDSCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMifQ==
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9wcm94aWVzL25ldHdvcmstcHJveHkvbW9kZWxzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUF5Ri9DOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDOUMsWUFBaUMsRUFDakMsU0FBaUI7SUFFakIsbUNBQW1DO0lBQ25DLE1BQU0sV0FBVyxHQUFpQjtRQUNoQyxtQkFBbUI7UUFDbkIsS0FBSyxFQUFFO1lBQ0wsS0FBSyxFQUFFLFNBQVM7WUFDaEIsT0FBTyxFQUFFLFlBQVksQ0FBQyxRQUFRO1NBQy9CO1FBRUQsb0JBQW9CO1FBQ3BCLE1BQU0sRUFBRTtZQUNOLElBQUksRUFBRSxTQUFTO1lBQ2YsTUFBTSxFQUFFO2dCQUNOLElBQUksRUFBRSxZQUFZLENBQUMsY0FBYztnQkFDakMsSUFBSSxFQUFFLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7YUFDdkM7WUFFRCxvREFBb0Q7WUFDcEQsR0FBRyxFQUFFO2dCQUNILElBQUksRUFBRSxXQUFXO2dCQUNqQixXQUFXLEVBQUU7b0JBQ1gsR0FBRyxFQUFFLFlBQVksQ0FBQyxVQUFVO29CQUM1QixJQUFJLEVBQUUsWUFBWSxDQUFDLFNBQVM7aUJBQzdCO2FBQ0Y7WUFFRCxtQkFBbUI7WUFDbkIsUUFBUSxFQUFFO2dCQUNSLG1DQUFtQztnQkFDbkMsT0FBTyxFQUFFLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7YUFDdEU7U0FDRjtRQUVELFdBQVc7UUFDWCxJQUFJLEVBQUUsbUJBQW1CLFlBQVksQ0FBQyxRQUFRLEVBQUU7UUFDaEQsUUFBUSxFQUFFLENBQUMsRUFBRSxtQkFBbUI7UUFDaEMsT0FBTyxFQUFFLElB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
@@ -1,5 +1,6 @@
1
1
  import * as plugins from '../../plugins.js';
2
- import type { INetworkProxyOptions, IReverseProxyConfig } from './models/types.js';
2
+ import type { INetworkProxyOptions } from './models/types.js';
3
+ import type { IRouteConfig } from '../smart-proxy/models/route-types.js';
3
4
  import { type IMetricsTracker } from './request-handler.js';
4
5
  import { Port80Handler } from '../../http/port80/port80-handler.js';
5
6
  /**
@@ -9,13 +10,16 @@ import { Port80Handler } from '../../http/port80/port80-handler.js';
9
10
  export declare class NetworkProxy implements IMetricsTracker {
10
11
  toJSON(): any;
11
12
  options: INetworkProxyOptions;
12
- proxyConfigs: IReverseProxyConfig[];
13
+ routes: IRouteConfig[];
13
14
  httpsServer: any;
14
15
  private certificateManager;
15
16
  private connectionPool;
16
17
  private requestHandler;
17
18
  private webSocketHandler;
19
+ private legacyRouter;
18
20
  private router;
21
+ private routeManager;
22
+ private functionCache;
19
23
  socketMap: plugins.lik.ObjectMap<plugins.net.Socket>;
20
24
  activeContexts: Set<string>;
21
25
  connectedClients: number;
@@ -77,23 +81,10 @@ export declare class NetworkProxy implements IMetricsTracker {
77
81
  */
78
82
  private setupMetricsCollection;
79
83
  /**
80
- * Updates proxy configurations
84
+ * Updates the route configurations - this is the primary method for configuring NetworkProxy
85
+ * @param routes The new route configurations to use
81
86
  */
82
- updateProxyConfigs(proxyConfigsArg: IReverseProxyConfig[]): Promise<void>;
83
- /**
84
- * Converts SmartProxy domain configurations to NetworkProxy configs
85
- * @param domainConfigs SmartProxy domain configs
86
- * @param sslKeyPair Default SSL key pair to use if not specified
87
- * @returns Array of NetworkProxy configs
88
- */
89
- convertSmartProxyConfigs(domainConfigs: Array<{
90
- domains: string[];
91
- targetIPs?: string[];
92
- allowedIPs?: string[];
93
- }>, sslKeyPair?: {
94
- key: string;
95
- cert: string;
96
- }): IReverseProxyConfig[];
87
+ updateRouteConfigs(routes: IRouteConfig[]): Promise<void>;
97
88
  /**
98
89
  * Adds default headers to be included in all responses
99
90
  */
@@ -112,7 +103,19 @@ export declare class NetworkProxy implements IMetricsTracker {
112
103
  */
113
104
  requestCertificate(domain: string): Promise<boolean>;
114
105
  /**
115
- * Gets all proxy configurations currently in use
106
+ * Update certificate for a domain
107
+ *
108
+ * This method allows direct updates of certificates from external sources
109
+ * like Port80Handler or custom certificate providers.
110
+ *
111
+ * @param domain The domain to update certificate for
112
+ * @param certificate The new certificate (public key)
113
+ * @param privateKey The new private key
114
+ * @param expiryDate Optional expiry date
115
+ */
116
+ updateCertificate(domain: string, certificate: string, privateKey: string, expiryDate?: Date): void;
117
+ /**
118
+ * Gets all route configurations currently in use
116
119
  */
117
- getProxyConfigs(): IReverseProxyConfig[];
120
+ getRouteConfigs(): IRouteConfig[];
118
121
  }