@push.rocks/smartproxy 22.6.0 → 23.1.0

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 (196) hide show
  1. package/changelog.md +18 -0
  2. package/dist_rust/{rustproxy → rustproxy_linux_amd64} +0 -0
  3. package/dist_rust/rustproxy_linux_arm64 +0 -0
  4. package/dist_ts/00_commitinfo_data.js +1 -1
  5. package/dist_ts/index.d.ts +0 -1
  6. package/dist_ts/index.js +1 -3
  7. package/dist_ts/plugins.d.ts +2 -1
  8. package/dist_ts/plugins.js +3 -2
  9. package/dist_ts/proxies/index.d.ts +0 -1
  10. package/dist_ts/proxies/index.js +1 -3
  11. package/dist_ts/proxies/smart-proxy/models/route-types.js +1 -1
  12. package/dist_ts/proxies/smart-proxy/rust-proxy-bridge.d.ts +9 -21
  13. package/dist_ts/proxies/smart-proxy/rust-proxy-bridge.js +83 -212
  14. package/dist_ts/proxies/smart-proxy/smart-proxy.js +2 -3
  15. package/npmextra.json +3 -0
  16. package/package.json +13 -11
  17. package/readme.md +35 -31
  18. package/ts/00_commitinfo_data.ts +1 -1
  19. package/ts/index.ts +0 -3
  20. package/ts/plugins.ts +2 -0
  21. package/ts/proxies/index.ts +0 -3
  22. package/ts/proxies/smart-proxy/models/route-types.ts +0 -2
  23. package/ts/proxies/smart-proxy/rust-proxy-bridge.ts +102 -233
  24. package/ts/proxies/smart-proxy/smart-proxy.ts +1 -2
  25. package/dist_ts/common/eventUtils.d.ts +0 -14
  26. package/dist_ts/common/eventUtils.js +0 -20
  27. package/dist_ts/common/types.d.ts +0 -82
  28. package/dist_ts/common/types.js +0 -15
  29. package/dist_ts/core/utils/event-system.d.ts +0 -200
  30. package/dist_ts/core/utils/event-system.js +0 -224
  31. package/dist_ts/core/utils/event-utils.d.ts +0 -15
  32. package/dist_ts/core/utils/event-utils.js +0 -11
  33. package/dist_ts/core/utils/route-manager.d.ts +0 -88
  34. package/dist_ts/core/utils/route-manager.js +0 -342
  35. package/dist_ts/core/utils/route-utils.d.ts +0 -28
  36. package/dist_ts/core/utils/route-utils.js +0 -67
  37. package/dist_ts/detection/detectors/http-detector-v2.d.ts +0 -33
  38. package/dist_ts/detection/detectors/http-detector-v2.js +0 -87
  39. package/dist_ts/detection/detectors/tls-detector-v2.d.ts +0 -33
  40. package/dist_ts/detection/detectors/tls-detector-v2.js +0 -80
  41. package/dist_ts/detection/protocol-detector-v2.d.ts +0 -46
  42. package/dist_ts/detection/protocol-detector-v2.js +0 -116
  43. package/dist_ts/forwarding/config/forwarding-types.d.ts +0 -42
  44. package/dist_ts/forwarding/config/forwarding-types.js +0 -18
  45. package/dist_ts/forwarding/config/index.d.ts +0 -9
  46. package/dist_ts/forwarding/config/index.js +0 -10
  47. package/dist_ts/forwarding/factory/forwarding-factory.d.ts +0 -25
  48. package/dist_ts/forwarding/factory/forwarding-factory.js +0 -172
  49. package/dist_ts/forwarding/factory/index.d.ts +0 -4
  50. package/dist_ts/forwarding/factory/index.js +0 -5
  51. package/dist_ts/forwarding/handlers/base-handler.d.ts +0 -62
  52. package/dist_ts/forwarding/handlers/base-handler.js +0 -121
  53. package/dist_ts/forwarding/handlers/http-handler.d.ts +0 -30
  54. package/dist_ts/forwarding/handlers/http-handler.js +0 -143
  55. package/dist_ts/forwarding/handlers/https-passthrough-handler.d.ts +0 -29
  56. package/dist_ts/forwarding/handlers/https-passthrough-handler.js +0 -156
  57. package/dist_ts/forwarding/handlers/https-terminate-to-http-handler.d.ts +0 -36
  58. package/dist_ts/forwarding/handlers/https-terminate-to-http-handler.js +0 -276
  59. package/dist_ts/forwarding/handlers/https-terminate-to-https-handler.d.ts +0 -35
  60. package/dist_ts/forwarding/handlers/https-terminate-to-https-handler.js +0 -261
  61. package/dist_ts/forwarding/handlers/index.d.ts +0 -8
  62. package/dist_ts/forwarding/handlers/index.js +0 -9
  63. package/dist_ts/forwarding/index.d.ts +0 -13
  64. package/dist_ts/forwarding/index.js +0 -16
  65. package/dist_ts/http/index.d.ts +0 -5
  66. package/dist_ts/http/index.js +0 -8
  67. package/dist_ts/http/models/http-types.d.ts +0 -6
  68. package/dist_ts/http/models/http-types.js +0 -7
  69. package/dist_ts/http/router/index.d.ts +0 -8
  70. package/dist_ts/http/router/index.js +0 -7
  71. package/dist_ts/http/router/proxy-router.d.ts +0 -115
  72. package/dist_ts/http/router/proxy-router.js +0 -325
  73. package/dist_ts/http/router/route-router.d.ts +0 -108
  74. package/dist_ts/http/router/route-router.js +0 -393
  75. package/dist_ts/protocols/tls/constants.d.ts +0 -122
  76. package/dist_ts/protocols/tls/constants.js +0 -135
  77. package/dist_ts/protocols/tls/parser.d.ts +0 -53
  78. package/dist_ts/protocols/tls/parser.js +0 -294
  79. package/dist_ts/protocols/tls/types.d.ts +0 -65
  80. package/dist_ts/protocols/tls/types.js +0 -5
  81. package/dist_ts/proxies/http-proxy/certificate-manager.d.ts +0 -95
  82. package/dist_ts/proxies/http-proxy/certificate-manager.js +0 -214
  83. package/dist_ts/proxies/http-proxy/connection-pool.d.ts +0 -47
  84. package/dist_ts/proxies/http-proxy/connection-pool.js +0 -195
  85. package/dist_ts/proxies/http-proxy/context-creator.d.ts +0 -34
  86. package/dist_ts/proxies/http-proxy/context-creator.js +0 -108
  87. package/dist_ts/proxies/http-proxy/default-certificates.d.ts +0 -54
  88. package/dist_ts/proxies/http-proxy/default-certificates.js +0 -127
  89. package/dist_ts/proxies/http-proxy/function-cache.d.ts +0 -95
  90. package/dist_ts/proxies/http-proxy/function-cache.js +0 -215
  91. package/dist_ts/proxies/http-proxy/handlers/index.d.ts +0 -4
  92. package/dist_ts/proxies/http-proxy/handlers/index.js +0 -6
  93. package/dist_ts/proxies/http-proxy/handlers/redirect-handler.d.ts +0 -18
  94. package/dist_ts/proxies/http-proxy/handlers/redirect-handler.js +0 -78
  95. package/dist_ts/proxies/http-proxy/handlers/static-handler.d.ts +0 -19
  96. package/dist_ts/proxies/http-proxy/handlers/static-handler.js +0 -211
  97. package/dist_ts/proxies/http-proxy/http-proxy.d.ts +0 -117
  98. package/dist_ts/proxies/http-proxy/http-proxy.js +0 -521
  99. package/dist_ts/proxies/http-proxy/http-request-handler.d.ts +0 -40
  100. package/dist_ts/proxies/http-proxy/http-request-handler.js +0 -257
  101. package/dist_ts/proxies/http-proxy/http2-request-handler.d.ts +0 -24
  102. package/dist_ts/proxies/http-proxy/http2-request-handler.js +0 -201
  103. package/dist_ts/proxies/http-proxy/index.d.ts +0 -14
  104. package/dist_ts/proxies/http-proxy/index.js +0 -16
  105. package/dist_ts/proxies/http-proxy/models/http-types.d.ts +0 -117
  106. package/dist_ts/proxies/http-proxy/models/http-types.js +0 -92
  107. package/dist_ts/proxies/http-proxy/models/index.d.ts +0 -5
  108. package/dist_ts/proxies/http-proxy/models/index.js +0 -6
  109. package/dist_ts/proxies/http-proxy/models/types.d.ts +0 -75
  110. package/dist_ts/proxies/http-proxy/models/types.js +0 -35
  111. package/dist_ts/proxies/http-proxy/request-handler.d.ts +0 -97
  112. package/dist_ts/proxies/http-proxy/request-handler.js +0 -737
  113. package/dist_ts/proxies/http-proxy/security-manager.d.ts +0 -98
  114. package/dist_ts/proxies/http-proxy/security-manager.js +0 -341
  115. package/dist_ts/proxies/http-proxy/websocket-handler.d.ts +0 -50
  116. package/dist_ts/proxies/http-proxy/websocket-handler.js +0 -505
  117. package/dist_ts/proxies/nftables-proxy/index.d.ts +0 -6
  118. package/dist_ts/proxies/nftables-proxy/index.js +0 -7
  119. package/dist_ts/proxies/nftables-proxy/models/errors.d.ts +0 -15
  120. package/dist_ts/proxies/nftables-proxy/models/errors.js +0 -28
  121. package/dist_ts/proxies/nftables-proxy/models/index.d.ts +0 -5
  122. package/dist_ts/proxies/nftables-proxy/models/index.js +0 -6
  123. package/dist_ts/proxies/nftables-proxy/models/interfaces.d.ts +0 -75
  124. package/dist_ts/proxies/nftables-proxy/models/interfaces.js +0 -5
  125. package/dist_ts/proxies/nftables-proxy/nftables-proxy.d.ts +0 -124
  126. package/dist_ts/proxies/nftables-proxy/nftables-proxy.js +0 -1374
  127. package/dist_ts/proxies/nftables-proxy/utils/index.d.ts +0 -9
  128. package/dist_ts/proxies/nftables-proxy/utils/index.js +0 -12
  129. package/dist_ts/proxies/nftables-proxy/utils/nft-command-executor.d.ts +0 -66
  130. package/dist_ts/proxies/nftables-proxy/utils/nft-command-executor.js +0 -131
  131. package/dist_ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.d.ts +0 -39
  132. package/dist_ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.js +0 -112
  133. package/dist_ts/proxies/nftables-proxy/utils/nft-rule-validator.d.ts +0 -59
  134. package/dist_ts/proxies/nftables-proxy/utils/nft-rule-validator.js +0 -130
  135. package/dist_ts/proxies/smart-proxy/acme-state-manager.d.ts +0 -42
  136. package/dist_ts/proxies/smart-proxy/acme-state-manager.js +0 -101
  137. package/dist_ts/proxies/smart-proxy/cert-store.d.ts +0 -10
  138. package/dist_ts/proxies/smart-proxy/cert-store.js +0 -72
  139. package/dist_ts/proxies/smart-proxy/certificate-manager.d.ts +0 -164
  140. package/dist_ts/proxies/smart-proxy/certificate-manager.js +0 -745
  141. package/dist_ts/proxies/smart-proxy/connection-manager.d.ts +0 -128
  142. package/dist_ts/proxies/smart-proxy/connection-manager.js +0 -689
  143. package/dist_ts/proxies/smart-proxy/http-proxy-bridge.d.ts +0 -43
  144. package/dist_ts/proxies/smart-proxy/http-proxy-bridge.js +0 -180
  145. package/dist_ts/proxies/smart-proxy/metrics-collector.d.ts +0 -98
  146. package/dist_ts/proxies/smart-proxy/metrics-collector.js +0 -355
  147. package/dist_ts/proxies/smart-proxy/nftables-manager.d.ts +0 -82
  148. package/dist_ts/proxies/smart-proxy/nftables-manager.js +0 -237
  149. package/dist_ts/proxies/smart-proxy/port-manager.d.ts +0 -117
  150. package/dist_ts/proxies/smart-proxy/port-manager.js +0 -318
  151. package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +0 -60
  152. package/dist_ts/proxies/smart-proxy/route-connection-handler.js +0 -1407
  153. package/dist_ts/proxies/smart-proxy/route-manager.d.ts +0 -112
  154. package/dist_ts/proxies/smart-proxy/route-manager.js +0 -453
  155. package/dist_ts/proxies/smart-proxy/route-orchestrator.d.ts +0 -56
  156. package/dist_ts/proxies/smart-proxy/route-orchestrator.js +0 -204
  157. package/dist_ts/proxies/smart-proxy/rust-binary-locator.d.ts +0 -23
  158. package/dist_ts/proxies/smart-proxy/rust-binary-locator.js +0 -104
  159. package/dist_ts/proxies/smart-proxy/security-manager.d.ts +0 -74
  160. package/dist_ts/proxies/smart-proxy/security-manager.js +0 -227
  161. package/dist_ts/proxies/smart-proxy/throughput-tracker.d.ts +0 -36
  162. package/dist_ts/proxies/smart-proxy/throughput-tracker.js +0 -115
  163. package/dist_ts/proxies/smart-proxy/timeout-manager.d.ts +0 -48
  164. package/dist_ts/proxies/smart-proxy/timeout-manager.js +0 -158
  165. package/dist_ts/proxies/smart-proxy/tls-manager.d.ts +0 -50
  166. package/dist_ts/proxies/smart-proxy/tls-manager.js +0 -110
  167. package/dist_ts/proxies/smart-proxy/utils/route-patterns.d.ts +0 -161
  168. package/dist_ts/proxies/smart-proxy/utils/route-patterns.js +0 -282
  169. package/dist_ts/proxies/smart-proxy/utils/route-validators.d.ts +0 -73
  170. package/dist_ts/proxies/smart-proxy/utils/route-validators.js +0 -259
  171. package/dist_ts/routing/router/proxy-router.d.ts +0 -115
  172. package/dist_ts/routing/router/proxy-router.js +0 -325
  173. package/dist_ts/routing/router/route-router.d.ts +0 -108
  174. package/dist_ts/routing/router/route-router.js +0 -393
  175. package/dist_ts/tls/alerts/index.d.ts +0 -4
  176. package/dist_ts/tls/alerts/index.js +0 -5
  177. package/dist_ts/tls/alerts/tls-alert.d.ts +0 -150
  178. package/dist_ts/tls/alerts/tls-alert.js +0 -226
  179. package/dist_ts/tls/sni/client-hello-parser.d.ts +0 -100
  180. package/dist_ts/tls/sni/client-hello-parser.js +0 -464
  181. package/dist_ts/tls/sni/sni-extraction.d.ts +0 -58
  182. package/dist_ts/tls/sni/sni-extraction.js +0 -275
  183. package/dist_ts/tls/utils/index.d.ts +0 -4
  184. package/dist_ts/tls/utils/index.js +0 -5
  185. package/dist_ts/tls/utils/tls-utils.d.ts +0 -49
  186. package/dist_ts/tls/utils/tls-utils.js +0 -75
  187. package/ts/proxies/nftables-proxy/index.ts +0 -6
  188. package/ts/proxies/nftables-proxy/models/errors.ts +0 -30
  189. package/ts/proxies/nftables-proxy/models/index.ts +0 -5
  190. package/ts/proxies/nftables-proxy/models/interfaces.ts +0 -94
  191. package/ts/proxies/nftables-proxy/nftables-proxy.ts +0 -1754
  192. package/ts/proxies/nftables-proxy/utils/index.ts +0 -38
  193. package/ts/proxies/nftables-proxy/utils/nft-command-executor.ts +0 -162
  194. package/ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.ts +0 -125
  195. package/ts/proxies/nftables-proxy/utils/nft-rule-validator.ts +0 -156
  196. package/ts/proxies/smart-proxy/rust-binary-locator.ts +0 -112
@@ -1,54 +0,0 @@
1
- import type { ILogger, ICertificateEntry } from './models/types.js';
2
- /**
3
- * Interface for default certificate data
4
- */
5
- export interface IDefaultCertificates {
6
- key: string;
7
- cert: string;
8
- }
9
- /**
10
- * Provides default SSL certificates for HttpProxy.
11
- * This is a minimal replacement for the deprecated CertificateManager.
12
- *
13
- * For production certificate management, use SmartCertManager instead.
14
- */
15
- export declare class DefaultCertificateProvider {
16
- private logger?;
17
- private defaultCertificates;
18
- private certificateCache;
19
- private initialized;
20
- constructor(logger?: ILogger);
21
- /**
22
- * Load default certificates asynchronously (preferred)
23
- */
24
- loadDefaultCertificatesAsync(): Promise<IDefaultCertificates>;
25
- /**
26
- * Load default certificates synchronously (for backward compatibility)
27
- * @deprecated Use loadDefaultCertificatesAsync instead
28
- */
29
- loadDefaultCertificatesSync(): IDefaultCertificates;
30
- /**
31
- * Gets the default certificates (loads synchronously if not already loaded)
32
- */
33
- getDefaultCertificates(): IDefaultCertificates;
34
- /**
35
- * Updates a certificate in the cache
36
- */
37
- updateCertificate(domain: string, cert: string, key: string): void;
38
- /**
39
- * Gets a cached certificate
40
- */
41
- getCachedCertificate(domain: string): ICertificateEntry | null;
42
- /**
43
- * Gets statistics for metrics
44
- */
45
- getStats(): {
46
- cachedCertificates: number;
47
- defaultCertEnabled: boolean;
48
- };
49
- /**
50
- * Generate a fallback self-signed certificate placeholder
51
- * Note: This is just a placeholder - real apps should provide proper certificates
52
- */
53
- private generateFallbackCertificate;
54
- }
@@ -1,127 +0,0 @@
1
- import * as plugins from '../../plugins.js';
2
- import * as fs from 'fs';
3
- import * as path from 'path';
4
- import { fileURLToPath } from 'url';
5
- import { AsyncFileSystem } from '../../core/utils/fs-utils.js';
6
- /**
7
- * Provides default SSL certificates for HttpProxy.
8
- * This is a minimal replacement for the deprecated CertificateManager.
9
- *
10
- * For production certificate management, use SmartCertManager instead.
11
- */
12
- export class DefaultCertificateProvider {
13
- constructor(logger) {
14
- this.logger = logger;
15
- this.defaultCertificates = null;
16
- this.certificateCache = new Map();
17
- this.initialized = false;
18
- }
19
- /**
20
- * Load default certificates asynchronously (preferred)
21
- */
22
- async loadDefaultCertificatesAsync() {
23
- if (this.defaultCertificates) {
24
- return this.defaultCertificates;
25
- }
26
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
27
- const certPath = path.join(__dirname, '..', '..', '..', 'assets', 'certs');
28
- try {
29
- const [key, cert] = await Promise.all([
30
- AsyncFileSystem.readFile(path.join(certPath, 'key.pem')),
31
- AsyncFileSystem.readFile(path.join(certPath, 'cert.pem'))
32
- ]);
33
- this.defaultCertificates = { key, cert };
34
- this.logger?.info?.('Loaded default certificates from filesystem');
35
- this.initialized = true;
36
- return this.defaultCertificates;
37
- }
38
- catch (error) {
39
- this.logger?.warn?.(`Failed to load default certificates: ${error}`);
40
- this.defaultCertificates = this.generateFallbackCertificate();
41
- this.initialized = true;
42
- return this.defaultCertificates;
43
- }
44
- }
45
- /**
46
- * Load default certificates synchronously (for backward compatibility)
47
- * @deprecated Use loadDefaultCertificatesAsync instead
48
- */
49
- loadDefaultCertificatesSync() {
50
- if (this.defaultCertificates) {
51
- return this.defaultCertificates;
52
- }
53
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
54
- const certPath = path.join(__dirname, '..', '..', '..', 'assets', 'certs');
55
- try {
56
- this.defaultCertificates = {
57
- key: fs.readFileSync(path.join(certPath, 'key.pem'), 'utf8'),
58
- cert: fs.readFileSync(path.join(certPath, 'cert.pem'), 'utf8')
59
- };
60
- this.logger?.info?.('Loaded default certificates from filesystem (sync)');
61
- }
62
- catch (error) {
63
- this.logger?.warn?.(`Failed to load default certificates: ${error}`);
64
- this.defaultCertificates = this.generateFallbackCertificate();
65
- }
66
- this.initialized = true;
67
- return this.defaultCertificates;
68
- }
69
- /**
70
- * Gets the default certificates (loads synchronously if not already loaded)
71
- */
72
- getDefaultCertificates() {
73
- if (!this.defaultCertificates) {
74
- return this.loadDefaultCertificatesSync();
75
- }
76
- return this.defaultCertificates;
77
- }
78
- /**
79
- * Updates a certificate in the cache
80
- */
81
- updateCertificate(domain, cert, key) {
82
- this.certificateCache.set(domain, {
83
- cert,
84
- key,
85
- expires: new Date(Date.now() + 90 * 24 * 60 * 60 * 1000) // 90 days
86
- });
87
- this.logger?.info?.(`Certificate updated for ${domain}`);
88
- }
89
- /**
90
- * Gets a cached certificate
91
- */
92
- getCachedCertificate(domain) {
93
- return this.certificateCache.get(domain) || null;
94
- }
95
- /**
96
- * Gets statistics for metrics
97
- */
98
- getStats() {
99
- return {
100
- cachedCertificates: this.certificateCache.size,
101
- defaultCertEnabled: this.defaultCertificates !== null
102
- };
103
- }
104
- /**
105
- * Generate a fallback self-signed certificate placeholder
106
- * Note: This is just a placeholder - real apps should provide proper certificates
107
- */
108
- generateFallbackCertificate() {
109
- this.logger?.warn?.('Using fallback self-signed certificate placeholder');
110
- // Minimal self-signed certificate for fallback only
111
- // In production, proper certificates should be provided via SmartCertManager
112
- const selfSignedCert = `-----BEGIN CERTIFICATE-----
113
- MIIBkTCB+wIJAKHHIgIIA0/cMA0GCSqGSIb3DQEBBQUAMA0xCzAJBgNVBAYTAlVT
114
- MB4XDTE0MDEwMTAwMDAwMFoXDTI0MDEwMTAwMDAwMFowDTELMAkGA1UEBhMCVVMw
115
- gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMRiH0VwnOH3jCV7c6JFZWYrvuqy
116
- -----END CERTIFICATE-----`;
117
- const selfSignedKey = `-----BEGIN PRIVATE KEY-----
118
- MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMRiH0VwnOH3jCV7
119
- c6JFZWYrvuqyALCLXj0pcr1iqNdHjegNXnkl5zjdaUjq4edNOKl7M1AlFiYjG2xk
120
- -----END PRIVATE KEY-----`;
121
- return {
122
- key: selfSignedKey,
123
- cert: selfSignedCert
124
- };
125
- }
126
- }
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jZXJ0aWZpY2F0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9wcm94aWVzL2h0dHAtcHJveHkvZGVmYXVsdC1jZXJ0aWZpY2F0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVcvRDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTywwQkFBMEI7SUFLckMsWUFBb0IsTUFBZ0I7UUFBaEIsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUo1Qix3QkFBbUIsR0FBZ0MsSUFBSSxDQUFDO1FBQ3hELHFCQUFnQixHQUFtQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzdELGdCQUFXLEdBQUcsS0FBSyxDQUFDO0lBRVcsQ0FBQztJQUV4Qzs7T0FFRztJQUNJLEtBQUssQ0FBQyw0QkFBNEI7UUFDdkMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM3QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUNsQyxDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUzRSxJQUFJLENBQUM7WUFDSCxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDcEMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDeEQsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUMxRCxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ2xDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyx3Q0FBd0MsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7WUFDOUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSSwyQkFBMkI7UUFDaEMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM3QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUNsQyxDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUzRSxJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsbUJBQW1CLEdBQUc7Z0JBQ3pCLEdBQUcsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztnQkFDNUQsSUFBSSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQUUsTUFBTSxDQUFDO2FBQy9ELENBQUM7WUFDRixJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLHdDQUF3QyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNoRSxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksc0JBQXNCO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQzVDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxpQkFBaUIsQ0FBQyxNQUFjLEVBQUUsSUFBWSxFQUFFLEdBQVc7UUFDaEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUU7WUFDaEMsSUFBSTtZQUNKLEdBQUc7WUFDSCxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVO1NBQ3BFLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsMkJBQTJCLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksb0JBQW9CLENBQUMsTUFBYztRQUN4QyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ25ELENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDYixPQUFPO1lBQ0wsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUk7WUFDOUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixLQUFLLElBQUk7U0FDdEQsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSywyQkFBMkI7UUFDakMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBRTFFLG9EQUFvRDtRQUNwRCw2RUFBNkU7UUFDN0UsTUFBTSxjQUFjLEdBQUc7Ozs7MEJBSUQsQ0FBQztRQUV2QixNQUFNLGFBQWEsR0FBRzs7OzBCQUdBLENBQUM7UUFFdkIsT0FBTztZQUNMLEdBQUcsRUFBRSxhQUFhO1lBQ2xCLElBQUksRUFBRSxjQUFjO1NBQ3JCLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
@@ -1,95 +0,0 @@
1
- import type { IRouteContext } from '../../core/models/route-context.js';
2
- import type { ILogger } from './models/types.js';
3
- /**
4
- * Function cache for NetworkProxy function-based targets
5
- *
6
- * This cache improves performance for function-based targets by storing
7
- * the results of function evaluations and reusing them for similar contexts.
8
- */
9
- export declare class FunctionCache {
10
- private hostCache;
11
- private portCache;
12
- private maxCacheSize;
13
- private defaultTtl;
14
- private logger;
15
- private cleanupInterval;
16
- /**
17
- * Creates a new function cache
18
- *
19
- * @param logger Logger for debug output
20
- * @param options Cache options
21
- */
22
- constructor(logger: ILogger, options?: {
23
- maxCacheSize?: number;
24
- defaultTtl?: number;
25
- });
26
- /**
27
- * Compute a hash for a context object
28
- * This is used to identify similar contexts for caching
29
- *
30
- * @param context The route context to hash
31
- * @param functionId Identifier for the function (usually route name or ID)
32
- * @returns A string hash
33
- */
34
- private computeContextHash;
35
- /**
36
- * Get cached host result for a function and context
37
- *
38
- * @param context Route context
39
- * @param functionId Identifier for the function
40
- * @returns Cached host value or undefined if not found
41
- */
42
- getCachedHost(context: IRouteContext, functionId: string): string | string[] | undefined;
43
- /**
44
- * Get cached port result for a function and context
45
- *
46
- * @param context Route context
47
- * @param functionId Identifier for the function
48
- * @returns Cached port value or undefined if not found
49
- */
50
- getCachedPort(context: IRouteContext, functionId: string): number | undefined;
51
- /**
52
- * Store a host function result in the cache
53
- *
54
- * @param context Route context
55
- * @param functionId Identifier for the function
56
- * @param value Host value to cache
57
- * @param ttl Optional TTL in milliseconds
58
- */
59
- cacheHost(context: IRouteContext, functionId: string, value: string | string[], ttl?: number): void;
60
- /**
61
- * Store a port function result in the cache
62
- *
63
- * @param context Route context
64
- * @param functionId Identifier for the function
65
- * @param value Port value to cache
66
- * @param ttl Optional TTL in milliseconds
67
- */
68
- cachePort(context: IRouteContext, functionId: string, value: number, ttl?: number): void;
69
- /**
70
- * Remove expired entries from the cache
71
- */
72
- private cleanupCache;
73
- /**
74
- * Prune oldest entries from a cache map
75
- * Used when the cache exceeds the maximum size
76
- *
77
- * @param cache The cache map to prune
78
- */
79
- private pruneOldestEntries;
80
- /**
81
- * Get current cache stats
82
- */
83
- getStats(): {
84
- hostCacheSize: number;
85
- portCacheSize: number;
86
- };
87
- /**
88
- * Clear all cached entries
89
- */
90
- clearCache(): void;
91
- /**
92
- * Destroy the cache and cleanup resources
93
- */
94
- destroy(): void;
95
- }
@@ -1,215 +0,0 @@
1
- /**
2
- * Function cache for NetworkProxy function-based targets
3
- *
4
- * This cache improves performance for function-based targets by storing
5
- * the results of function evaluations and reusing them for similar contexts.
6
- */
7
- export class FunctionCache {
8
- /**
9
- * Creates a new function cache
10
- *
11
- * @param logger Logger for debug output
12
- * @param options Cache options
13
- */
14
- constructor(logger, options = {}) {
15
- // Cache storage
16
- this.hostCache = new Map();
17
- this.portCache = new Map();
18
- // Cleanup interval timer
19
- this.cleanupInterval = null;
20
- this.logger = logger;
21
- this.maxCacheSize = options.maxCacheSize || 1000;
22
- this.defaultTtl = options.defaultTtl || 5000; // 5 seconds default
23
- // Start the cache cleanup timer
24
- this.cleanupInterval = setInterval(() => this.cleanupCache(), 30000); // Cleanup every 30 seconds
25
- // Make sure the interval doesn't keep the process alive
26
- if (this.cleanupInterval.unref) {
27
- this.cleanupInterval.unref();
28
- }
29
- }
30
- /**
31
- * Compute a hash for a context object
32
- * This is used to identify similar contexts for caching
33
- *
34
- * @param context The route context to hash
35
- * @param functionId Identifier for the function (usually route name or ID)
36
- * @returns A string hash
37
- */
38
- computeContextHash(context, functionId) {
39
- // Extract relevant properties for the hash
40
- const hashBase = {
41
- functionId,
42
- port: context.port,
43
- domain: context.domain,
44
- clientIp: context.clientIp,
45
- path: context.path,
46
- query: context.query,
47
- isTls: context.isTls,
48
- tlsVersion: context.tlsVersion
49
- };
50
- // Generate a hash string
51
- return JSON.stringify(hashBase);
52
- }
53
- /**
54
- * Get cached host result for a function and context
55
- *
56
- * @param context Route context
57
- * @param functionId Identifier for the function
58
- * @returns Cached host value or undefined if not found
59
- */
60
- getCachedHost(context, functionId) {
61
- const hash = this.computeContextHash(context, functionId);
62
- const cached = this.hostCache.get(hash);
63
- // Return if no cached value or expired
64
- if (!cached || cached.expiry < Date.now()) {
65
- if (cached) {
66
- // If expired, remove from cache
67
- this.hostCache.delete(hash);
68
- this.logger.debug(`Cache miss (expired) for host function: ${functionId}`);
69
- }
70
- else {
71
- this.logger.debug(`Cache miss for host function: ${functionId}`);
72
- }
73
- return undefined;
74
- }
75
- this.logger.debug(`Cache hit for host function: ${functionId}`);
76
- return cached.value;
77
- }
78
- /**
79
- * Get cached port result for a function and context
80
- *
81
- * @param context Route context
82
- * @param functionId Identifier for the function
83
- * @returns Cached port value or undefined if not found
84
- */
85
- getCachedPort(context, functionId) {
86
- const hash = this.computeContextHash(context, functionId);
87
- const cached = this.portCache.get(hash);
88
- // Return if no cached value or expired
89
- if (!cached || cached.expiry < Date.now()) {
90
- if (cached) {
91
- // If expired, remove from cache
92
- this.portCache.delete(hash);
93
- this.logger.debug(`Cache miss (expired) for port function: ${functionId}`);
94
- }
95
- else {
96
- this.logger.debug(`Cache miss for port function: ${functionId}`);
97
- }
98
- return undefined;
99
- }
100
- this.logger.debug(`Cache hit for port function: ${functionId}`);
101
- return cached.value;
102
- }
103
- /**
104
- * Store a host function result in the cache
105
- *
106
- * @param context Route context
107
- * @param functionId Identifier for the function
108
- * @param value Host value to cache
109
- * @param ttl Optional TTL in milliseconds
110
- */
111
- cacheHost(context, functionId, value, ttl) {
112
- const hash = this.computeContextHash(context, functionId);
113
- const expiry = Date.now() + (ttl || this.defaultTtl);
114
- // Check if we need to prune the cache before adding
115
- if (this.hostCache.size >= this.maxCacheSize) {
116
- this.pruneOldestEntries(this.hostCache);
117
- }
118
- // Store the result
119
- this.hostCache.set(hash, { value, expiry, hash });
120
- this.logger.debug(`Cached host function result for: ${functionId}`);
121
- }
122
- /**
123
- * Store a port function result in the cache
124
- *
125
- * @param context Route context
126
- * @param functionId Identifier for the function
127
- * @param value Port value to cache
128
- * @param ttl Optional TTL in milliseconds
129
- */
130
- cachePort(context, functionId, value, ttl) {
131
- const hash = this.computeContextHash(context, functionId);
132
- const expiry = Date.now() + (ttl || this.defaultTtl);
133
- // Check if we need to prune the cache before adding
134
- if (this.portCache.size >= this.maxCacheSize) {
135
- this.pruneOldestEntries(this.portCache);
136
- }
137
- // Store the result
138
- this.portCache.set(hash, { value, expiry, hash });
139
- this.logger.debug(`Cached port function result for: ${functionId}`);
140
- }
141
- /**
142
- * Remove expired entries from the cache
143
- */
144
- cleanupCache() {
145
- const now = Date.now();
146
- let expiredCount = 0;
147
- // Clean up host cache
148
- for (const [hash, cached] of this.hostCache.entries()) {
149
- if (cached.expiry < now) {
150
- this.hostCache.delete(hash);
151
- expiredCount++;
152
- }
153
- }
154
- // Clean up port cache
155
- for (const [hash, cached] of this.portCache.entries()) {
156
- if (cached.expiry < now) {
157
- this.portCache.delete(hash);
158
- expiredCount++;
159
- }
160
- }
161
- if (expiredCount > 0) {
162
- this.logger.debug(`Cleaned up ${expiredCount} expired cache entries`);
163
- }
164
- }
165
- /**
166
- * Prune oldest entries from a cache map
167
- * Used when the cache exceeds the maximum size
168
- *
169
- * @param cache The cache map to prune
170
- */
171
- pruneOldestEntries(cache) {
172
- // Find the oldest entries
173
- const now = Date.now();
174
- const itemsToRemove = Math.floor(this.maxCacheSize * 0.2); // Remove 20% of the cache
175
- // Convert to array for sorting
176
- const entries = Array.from(cache.entries());
177
- // Sort by expiry (oldest first)
178
- entries.sort((a, b) => a[1].expiry - b[1].expiry);
179
- // Remove oldest entries
180
- const toRemove = entries.slice(0, itemsToRemove);
181
- for (const [hash] of toRemove) {
182
- cache.delete(hash);
183
- }
184
- this.logger.debug(`Pruned ${toRemove.length} oldest cache entries`);
185
- }
186
- /**
187
- * Get current cache stats
188
- */
189
- getStats() {
190
- return {
191
- hostCacheSize: this.hostCache.size,
192
- portCacheSize: this.portCache.size
193
- };
194
- }
195
- /**
196
- * Clear all cached entries
197
- */
198
- clearCache() {
199
- this.hostCache.clear();
200
- this.portCache.clear();
201
- this.logger.info('Function cache cleared');
202
- }
203
- /**
204
- * Destroy the cache and cleanup resources
205
- */
206
- destroy() {
207
- if (this.cleanupInterval) {
208
- clearInterval(this.cleanupInterval);
209
- this.cleanupInterval = null;
210
- }
211
- this.clearCache();
212
- this.logger.debug('Function cache destroyed');
213
- }
214
- }
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9wcm94aWVzL2h0dHAtcHJveHkvZnVuY3Rpb24tY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUE7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQWlCeEI7Ozs7O09BS0c7SUFDSCxZQUNFLE1BQWUsRUFDZixVQUdJLEVBQUU7UUEzQlIsZ0JBQWdCO1FBQ1IsY0FBUyxHQUFrRCxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3JFLGNBQVMsR0FBdUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQVdsRSx5QkFBeUI7UUFDakIsb0JBQWUsR0FBMEIsSUFBSSxDQUFDO1FBZXBELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUM7UUFDakQsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLG9CQUFvQjtRQUVsRSxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsMkJBQTJCO1FBRWpHLHdEQUF3RDtRQUN4RCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSyxrQkFBa0IsQ0FBQyxPQUFzQixFQUFFLFVBQWtCO1FBQ25FLDJDQUEyQztRQUMzQyxNQUFNLFFBQVEsR0FBRztZQUNmLFVBQVU7WUFDVixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDbEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFN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
@@ -1,4 +0,0 @@
1
- /**
2
- * HTTP handlers for various route types
3
- */
4
- export {};
@@ -1,6 +0,0 @@
1
- /**
2
- * HTTP handlers for various route types
3
- */
4
- export {};
5
- // Empty - all handlers have been removed
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9wcm94aWVzL2h0dHAtcHJveHkvaGFuZGxlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7O0FBRUgseUNBQXlDIn0=
@@ -1,18 +0,0 @@
1
- import * as plugins from '../../../plugins.js';
2
- import type { IRouteConfig } from '../../smart-proxy/models/route-types.js';
3
- import type { ILogger } from '../models/types.js';
4
- export interface IRedirectHandlerContext {
5
- connectionId: string;
6
- connectionManager: any;
7
- settings: any;
8
- logger?: ILogger;
9
- }
10
- /**
11
- * Handles HTTP redirect routes
12
- */
13
- export declare class RedirectHandler {
14
- /**
15
- * Handle redirect routes
16
- */
17
- static handleRedirect(socket: plugins.net.Socket, route: IRouteConfig, context: IRedirectHandlerContext): Promise<void>;
18
- }
@@ -1,78 +0,0 @@
1
- import * as plugins from '../../../plugins.js';
2
- import { createLogger } from '../models/types.js';
3
- import { HttpStatus, getStatusText } from '../models/http-types.js';
4
- /**
5
- * Handles HTTP redirect routes
6
- */
7
- export class RedirectHandler {
8
- /**
9
- * Handle redirect routes
10
- */
11
- static async handleRedirect(socket, route, context) {
12
- const { connectionId, connectionManager, settings } = context;
13
- const logger = context.logger || createLogger(settings.logLevel || 'info');
14
- const action = route.action;
15
- // We should have a redirect configuration
16
- if (!action.redirect) {
17
- logger.error(`[${connectionId}] Redirect action missing redirect configuration`);
18
- socket.end();
19
- connectionManager.cleanupConnection({ id: connectionId }, 'missing_redirect');
20
- return;
21
- }
22
- // For TLS connections, we can't do redirects at the TCP level
23
- // This check should be done before calling this handler
24
- // Wait for the first HTTP request to perform the redirect
25
- const dataListeners = [];
26
- const httpDataHandler = (chunk) => {
27
- // Remove all data listeners to avoid duplicated processing
28
- for (const listener of dataListeners) {
29
- socket.removeListener('data', listener);
30
- }
31
- // Parse HTTP request to get path
32
- try {
33
- const headersEnd = chunk.indexOf('\r\n\r\n');
34
- if (headersEnd === -1) {
35
- // Not a complete HTTP request, need more data
36
- socket.once('data', httpDataHandler);
37
- dataListeners.push(httpDataHandler);
38
- return;
39
- }
40
- const httpHeaders = chunk.slice(0, headersEnd).toString();
41
- const requestLine = httpHeaders.split('\r\n')[0];
42
- const [method, path] = requestLine.split(' ');
43
- // Extract Host header
44
- const hostMatch = httpHeaders.match(/Host: (.+?)(\r\n|\r|\n|$)/i);
45
- const host = hostMatch ? hostMatch[1].trim() : '';
46
- // Process the redirect URL with template variables
47
- let redirectUrl = action.redirect.to;
48
- redirectUrl = redirectUrl.replace(/\{domain\}/g, host);
49
- redirectUrl = redirectUrl.replace(/\{path\}/g, path || '');
50
- redirectUrl = redirectUrl.replace(/\{port\}/g, socket.localPort?.toString() || '80');
51
- // Prepare the HTTP redirect response
52
- const redirectResponse = [
53
- `HTTP/1.1 ${action.redirect.status} Moved`,
54
- `Location: ${redirectUrl}`,
55
- 'Connection: close',
56
- 'Content-Length: 0',
57
- '',
58
- '',
59
- ].join('\r\n');
60
- if (settings.enableDetailedLogging) {
61
- logger.info(`[${connectionId}] Redirecting to ${redirectUrl} with status ${action.redirect.status}`);
62
- }
63
- // Send the redirect response
64
- socket.end(redirectResponse);
65
- connectionManager.initiateCleanupOnce({ id: connectionId }, 'redirect_complete');
66
- }
67
- catch (err) {
68
- logger.error(`[${connectionId}] Error processing HTTP redirect: ${err}`);
69
- socket.end();
70
- connectionManager.initiateCleanupOnce({ id: connectionId }, 'redirect_error');
71
- }
72
- };
73
- // Setup the HTTP data handler
74
- socket.once('data', httpDataHandler);
75
- dataListeners.push(httpDataHandler);
76
- }
77
- }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXJlY3QtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzL3Byb3hpZXMvaHR0cC1wcm94eS9oYW5kbGVycy9yZWRpcmVjdC1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUFJL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFTcEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUMxQjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUNoQyxNQUEwQixFQUMxQixLQUFtQixFQUNuQixPQUFnQztRQUVoQyxNQUFNLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUM5RCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxDQUFDO1FBQzNFLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFFNUIsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckIsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksa0RBQWtELENBQUMsQ0FBQztZQUNqRixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDYixpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQzlFLE9BQU87UUFDVCxDQUFDO1FBRUQsOERBQThEO1FBQzlELHdEQUF3RDtRQUV4RCwwREFBMEQ7UUFDMUQsTUFBTSxhQUFhLEdBQWdDLEVBQUUsQ0FBQztRQUV0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
@@ -1,19 +0,0 @@
1
- import * as plugins from '../../../plugins.js';
2
- import type { IRouteConfig } from '../../smart-proxy/models/route-types.js';
3
- import type { IConnectionRecord } from '../../smart-proxy/models/interfaces.js';
4
- import type { ILogger } from '../models/types.js';
5
- export interface IStaticHandlerContext {
6
- connectionId: string;
7
- connectionManager: any;
8
- settings: any;
9
- logger?: ILogger;
10
- }
11
- /**
12
- * Handles static routes including ACME challenges
13
- */
14
- export declare class StaticHandler {
15
- /**
16
- * Handle static routes
17
- */
18
- static handleStatic(socket: plugins.net.Socket, route: IRouteConfig, context: IStaticHandlerContext, record: IConnectionRecord, initialChunk?: Buffer): Promise<void>;
19
- }