@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.
- package/changelog.md +18 -0
- package/dist_rust/{rustproxy → rustproxy_linux_amd64} +0 -0
- package/dist_rust/rustproxy_linux_arm64 +0 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/index.d.ts +0 -1
- package/dist_ts/index.js +1 -3
- package/dist_ts/plugins.d.ts +2 -1
- package/dist_ts/plugins.js +3 -2
- package/dist_ts/proxies/index.d.ts +0 -1
- package/dist_ts/proxies/index.js +1 -3
- package/dist_ts/proxies/smart-proxy/models/route-types.js +1 -1
- package/dist_ts/proxies/smart-proxy/rust-proxy-bridge.d.ts +9 -21
- package/dist_ts/proxies/smart-proxy/rust-proxy-bridge.js +83 -212
- package/dist_ts/proxies/smart-proxy/smart-proxy.js +2 -3
- package/npmextra.json +3 -0
- package/package.json +13 -11
- package/readme.md +35 -31
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/index.ts +0 -3
- package/ts/plugins.ts +2 -0
- package/ts/proxies/index.ts +0 -3
- package/ts/proxies/smart-proxy/models/route-types.ts +0 -2
- package/ts/proxies/smart-proxy/rust-proxy-bridge.ts +102 -233
- package/ts/proxies/smart-proxy/smart-proxy.ts +1 -2
- package/dist_ts/common/eventUtils.d.ts +0 -14
- package/dist_ts/common/eventUtils.js +0 -20
- package/dist_ts/common/types.d.ts +0 -82
- package/dist_ts/common/types.js +0 -15
- package/dist_ts/core/utils/event-system.d.ts +0 -200
- package/dist_ts/core/utils/event-system.js +0 -224
- package/dist_ts/core/utils/event-utils.d.ts +0 -15
- package/dist_ts/core/utils/event-utils.js +0 -11
- package/dist_ts/core/utils/route-manager.d.ts +0 -88
- package/dist_ts/core/utils/route-manager.js +0 -342
- package/dist_ts/core/utils/route-utils.d.ts +0 -28
- package/dist_ts/core/utils/route-utils.js +0 -67
- package/dist_ts/detection/detectors/http-detector-v2.d.ts +0 -33
- package/dist_ts/detection/detectors/http-detector-v2.js +0 -87
- package/dist_ts/detection/detectors/tls-detector-v2.d.ts +0 -33
- package/dist_ts/detection/detectors/tls-detector-v2.js +0 -80
- package/dist_ts/detection/protocol-detector-v2.d.ts +0 -46
- package/dist_ts/detection/protocol-detector-v2.js +0 -116
- package/dist_ts/forwarding/config/forwarding-types.d.ts +0 -42
- package/dist_ts/forwarding/config/forwarding-types.js +0 -18
- package/dist_ts/forwarding/config/index.d.ts +0 -9
- package/dist_ts/forwarding/config/index.js +0 -10
- package/dist_ts/forwarding/factory/forwarding-factory.d.ts +0 -25
- package/dist_ts/forwarding/factory/forwarding-factory.js +0 -172
- package/dist_ts/forwarding/factory/index.d.ts +0 -4
- package/dist_ts/forwarding/factory/index.js +0 -5
- package/dist_ts/forwarding/handlers/base-handler.d.ts +0 -62
- package/dist_ts/forwarding/handlers/base-handler.js +0 -121
- package/dist_ts/forwarding/handlers/http-handler.d.ts +0 -30
- package/dist_ts/forwarding/handlers/http-handler.js +0 -143
- package/dist_ts/forwarding/handlers/https-passthrough-handler.d.ts +0 -29
- package/dist_ts/forwarding/handlers/https-passthrough-handler.js +0 -156
- package/dist_ts/forwarding/handlers/https-terminate-to-http-handler.d.ts +0 -36
- package/dist_ts/forwarding/handlers/https-terminate-to-http-handler.js +0 -276
- package/dist_ts/forwarding/handlers/https-terminate-to-https-handler.d.ts +0 -35
- package/dist_ts/forwarding/handlers/https-terminate-to-https-handler.js +0 -261
- package/dist_ts/forwarding/handlers/index.d.ts +0 -8
- package/dist_ts/forwarding/handlers/index.js +0 -9
- package/dist_ts/forwarding/index.d.ts +0 -13
- package/dist_ts/forwarding/index.js +0 -16
- package/dist_ts/http/index.d.ts +0 -5
- package/dist_ts/http/index.js +0 -8
- package/dist_ts/http/models/http-types.d.ts +0 -6
- package/dist_ts/http/models/http-types.js +0 -7
- package/dist_ts/http/router/index.d.ts +0 -8
- package/dist_ts/http/router/index.js +0 -7
- package/dist_ts/http/router/proxy-router.d.ts +0 -115
- package/dist_ts/http/router/proxy-router.js +0 -325
- package/dist_ts/http/router/route-router.d.ts +0 -108
- package/dist_ts/http/router/route-router.js +0 -393
- package/dist_ts/protocols/tls/constants.d.ts +0 -122
- package/dist_ts/protocols/tls/constants.js +0 -135
- package/dist_ts/protocols/tls/parser.d.ts +0 -53
- package/dist_ts/protocols/tls/parser.js +0 -294
- package/dist_ts/protocols/tls/types.d.ts +0 -65
- package/dist_ts/protocols/tls/types.js +0 -5
- package/dist_ts/proxies/http-proxy/certificate-manager.d.ts +0 -95
- package/dist_ts/proxies/http-proxy/certificate-manager.js +0 -214
- package/dist_ts/proxies/http-proxy/connection-pool.d.ts +0 -47
- package/dist_ts/proxies/http-proxy/connection-pool.js +0 -195
- package/dist_ts/proxies/http-proxy/context-creator.d.ts +0 -34
- package/dist_ts/proxies/http-proxy/context-creator.js +0 -108
- package/dist_ts/proxies/http-proxy/default-certificates.d.ts +0 -54
- package/dist_ts/proxies/http-proxy/default-certificates.js +0 -127
- package/dist_ts/proxies/http-proxy/function-cache.d.ts +0 -95
- package/dist_ts/proxies/http-proxy/function-cache.js +0 -215
- package/dist_ts/proxies/http-proxy/handlers/index.d.ts +0 -4
- package/dist_ts/proxies/http-proxy/handlers/index.js +0 -6
- package/dist_ts/proxies/http-proxy/handlers/redirect-handler.d.ts +0 -18
- package/dist_ts/proxies/http-proxy/handlers/redirect-handler.js +0 -78
- package/dist_ts/proxies/http-proxy/handlers/static-handler.d.ts +0 -19
- package/dist_ts/proxies/http-proxy/handlers/static-handler.js +0 -211
- package/dist_ts/proxies/http-proxy/http-proxy.d.ts +0 -117
- package/dist_ts/proxies/http-proxy/http-proxy.js +0 -521
- package/dist_ts/proxies/http-proxy/http-request-handler.d.ts +0 -40
- package/dist_ts/proxies/http-proxy/http-request-handler.js +0 -257
- package/dist_ts/proxies/http-proxy/http2-request-handler.d.ts +0 -24
- package/dist_ts/proxies/http-proxy/http2-request-handler.js +0 -201
- package/dist_ts/proxies/http-proxy/index.d.ts +0 -14
- package/dist_ts/proxies/http-proxy/index.js +0 -16
- package/dist_ts/proxies/http-proxy/models/http-types.d.ts +0 -117
- package/dist_ts/proxies/http-proxy/models/http-types.js +0 -92
- package/dist_ts/proxies/http-proxy/models/index.d.ts +0 -5
- package/dist_ts/proxies/http-proxy/models/index.js +0 -6
- package/dist_ts/proxies/http-proxy/models/types.d.ts +0 -75
- package/dist_ts/proxies/http-proxy/models/types.js +0 -35
- package/dist_ts/proxies/http-proxy/request-handler.d.ts +0 -97
- package/dist_ts/proxies/http-proxy/request-handler.js +0 -737
- package/dist_ts/proxies/http-proxy/security-manager.d.ts +0 -98
- package/dist_ts/proxies/http-proxy/security-manager.js +0 -341
- package/dist_ts/proxies/http-proxy/websocket-handler.d.ts +0 -50
- package/dist_ts/proxies/http-proxy/websocket-handler.js +0 -505
- package/dist_ts/proxies/nftables-proxy/index.d.ts +0 -6
- package/dist_ts/proxies/nftables-proxy/index.js +0 -7
- package/dist_ts/proxies/nftables-proxy/models/errors.d.ts +0 -15
- package/dist_ts/proxies/nftables-proxy/models/errors.js +0 -28
- package/dist_ts/proxies/nftables-proxy/models/index.d.ts +0 -5
- package/dist_ts/proxies/nftables-proxy/models/index.js +0 -6
- package/dist_ts/proxies/nftables-proxy/models/interfaces.d.ts +0 -75
- package/dist_ts/proxies/nftables-proxy/models/interfaces.js +0 -5
- package/dist_ts/proxies/nftables-proxy/nftables-proxy.d.ts +0 -124
- package/dist_ts/proxies/nftables-proxy/nftables-proxy.js +0 -1374
- package/dist_ts/proxies/nftables-proxy/utils/index.d.ts +0 -9
- package/dist_ts/proxies/nftables-proxy/utils/index.js +0 -12
- package/dist_ts/proxies/nftables-proxy/utils/nft-command-executor.d.ts +0 -66
- package/dist_ts/proxies/nftables-proxy/utils/nft-command-executor.js +0 -131
- package/dist_ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.d.ts +0 -39
- package/dist_ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.js +0 -112
- package/dist_ts/proxies/nftables-proxy/utils/nft-rule-validator.d.ts +0 -59
- package/dist_ts/proxies/nftables-proxy/utils/nft-rule-validator.js +0 -130
- package/dist_ts/proxies/smart-proxy/acme-state-manager.d.ts +0 -42
- package/dist_ts/proxies/smart-proxy/acme-state-manager.js +0 -101
- package/dist_ts/proxies/smart-proxy/cert-store.d.ts +0 -10
- package/dist_ts/proxies/smart-proxy/cert-store.js +0 -72
- package/dist_ts/proxies/smart-proxy/certificate-manager.d.ts +0 -164
- package/dist_ts/proxies/smart-proxy/certificate-manager.js +0 -745
- package/dist_ts/proxies/smart-proxy/connection-manager.d.ts +0 -128
- package/dist_ts/proxies/smart-proxy/connection-manager.js +0 -689
- package/dist_ts/proxies/smart-proxy/http-proxy-bridge.d.ts +0 -43
- package/dist_ts/proxies/smart-proxy/http-proxy-bridge.js +0 -180
- package/dist_ts/proxies/smart-proxy/metrics-collector.d.ts +0 -98
- package/dist_ts/proxies/smart-proxy/metrics-collector.js +0 -355
- package/dist_ts/proxies/smart-proxy/nftables-manager.d.ts +0 -82
- package/dist_ts/proxies/smart-proxy/nftables-manager.js +0 -237
- package/dist_ts/proxies/smart-proxy/port-manager.d.ts +0 -117
- package/dist_ts/proxies/smart-proxy/port-manager.js +0 -318
- package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +0 -60
- package/dist_ts/proxies/smart-proxy/route-connection-handler.js +0 -1407
- package/dist_ts/proxies/smart-proxy/route-manager.d.ts +0 -112
- package/dist_ts/proxies/smart-proxy/route-manager.js +0 -453
- package/dist_ts/proxies/smart-proxy/route-orchestrator.d.ts +0 -56
- package/dist_ts/proxies/smart-proxy/route-orchestrator.js +0 -204
- package/dist_ts/proxies/smart-proxy/rust-binary-locator.d.ts +0 -23
- package/dist_ts/proxies/smart-proxy/rust-binary-locator.js +0 -104
- package/dist_ts/proxies/smart-proxy/security-manager.d.ts +0 -74
- package/dist_ts/proxies/smart-proxy/security-manager.js +0 -227
- package/dist_ts/proxies/smart-proxy/throughput-tracker.d.ts +0 -36
- package/dist_ts/proxies/smart-proxy/throughput-tracker.js +0 -115
- package/dist_ts/proxies/smart-proxy/timeout-manager.d.ts +0 -48
- package/dist_ts/proxies/smart-proxy/timeout-manager.js +0 -158
- package/dist_ts/proxies/smart-proxy/tls-manager.d.ts +0 -50
- package/dist_ts/proxies/smart-proxy/tls-manager.js +0 -110
- package/dist_ts/proxies/smart-proxy/utils/route-patterns.d.ts +0 -161
- package/dist_ts/proxies/smart-proxy/utils/route-patterns.js +0 -282
- package/dist_ts/proxies/smart-proxy/utils/route-validators.d.ts +0 -73
- package/dist_ts/proxies/smart-proxy/utils/route-validators.js +0 -259
- package/dist_ts/routing/router/proxy-router.d.ts +0 -115
- package/dist_ts/routing/router/proxy-router.js +0 -325
- package/dist_ts/routing/router/route-router.d.ts +0 -108
- package/dist_ts/routing/router/route-router.js +0 -393
- package/dist_ts/tls/alerts/index.d.ts +0 -4
- package/dist_ts/tls/alerts/index.js +0 -5
- package/dist_ts/tls/alerts/tls-alert.d.ts +0 -150
- package/dist_ts/tls/alerts/tls-alert.js +0 -226
- package/dist_ts/tls/sni/client-hello-parser.d.ts +0 -100
- package/dist_ts/tls/sni/client-hello-parser.js +0 -464
- package/dist_ts/tls/sni/sni-extraction.d.ts +0 -58
- package/dist_ts/tls/sni/sni-extraction.js +0 -275
- package/dist_ts/tls/utils/index.d.ts +0 -4
- package/dist_ts/tls/utils/index.js +0 -5
- package/dist_ts/tls/utils/tls-utils.d.ts +0 -49
- package/dist_ts/tls/utils/tls-utils.js +0 -75
- package/ts/proxies/nftables-proxy/index.ts +0 -6
- package/ts/proxies/nftables-proxy/models/errors.ts +0 -30
- package/ts/proxies/nftables-proxy/models/index.ts +0 -5
- package/ts/proxies/nftables-proxy/models/interfaces.ts +0 -94
- package/ts/proxies/nftables-proxy/nftables-proxy.ts +0 -1754
- package/ts/proxies/nftables-proxy/utils/index.ts +0 -38
- package/ts/proxies/nftables-proxy/utils/nft-command-executor.ts +0 -162
- package/ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.ts +0 -125
- package/ts/proxies/nftables-proxy/utils/nft-rule-validator.ts +0 -156
- package/ts/proxies/smart-proxy/rust-binary-locator.ts +0 -112
|
@@ -1,211 +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 static routes including ACME challenges
|
|
6
|
-
*/
|
|
7
|
-
export class StaticHandler {
|
|
8
|
-
/**
|
|
9
|
-
* Handle static routes
|
|
10
|
-
*/
|
|
11
|
-
static async handleStatic(socket, route, context, record, initialChunk) {
|
|
12
|
-
const { connectionId, connectionManager, settings } = context;
|
|
13
|
-
const logger = context.logger || createLogger(settings.logLevel || 'info');
|
|
14
|
-
if (!route.action.handler) {
|
|
15
|
-
logger.error(`[${connectionId}] Static route '${route.name}' has no handler`);
|
|
16
|
-
socket.end();
|
|
17
|
-
connectionManager.cleanupConnection(record, 'no_handler');
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
let buffer = Buffer.alloc(0);
|
|
21
|
-
let processingData = false;
|
|
22
|
-
const handleHttpData = async (chunk) => {
|
|
23
|
-
// Accumulate the data
|
|
24
|
-
buffer = Buffer.concat([buffer, chunk]);
|
|
25
|
-
// Prevent concurrent processing of the same buffer
|
|
26
|
-
if (processingData)
|
|
27
|
-
return;
|
|
28
|
-
processingData = true;
|
|
29
|
-
try {
|
|
30
|
-
// Process data until we have a complete request or need more data
|
|
31
|
-
await processBuffer();
|
|
32
|
-
}
|
|
33
|
-
finally {
|
|
34
|
-
processingData = false;
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
const processBuffer = async () => {
|
|
38
|
-
// Look for end of HTTP headers
|
|
39
|
-
const headerEndIndex = buffer.indexOf('\r\n\r\n');
|
|
40
|
-
if (headerEndIndex === -1) {
|
|
41
|
-
// Need more data
|
|
42
|
-
if (buffer.length > 8192) {
|
|
43
|
-
// Prevent excessive buffering
|
|
44
|
-
logger.error(`[${connectionId}] HTTP headers too large`);
|
|
45
|
-
socket.end();
|
|
46
|
-
connectionManager.cleanupConnection(record, 'headers_too_large');
|
|
47
|
-
}
|
|
48
|
-
return; // Wait for more data to arrive
|
|
49
|
-
}
|
|
50
|
-
// Parse the HTTP request
|
|
51
|
-
const headerBuffer = buffer.slice(0, headerEndIndex);
|
|
52
|
-
const headers = headerBuffer.toString();
|
|
53
|
-
const lines = headers.split('\r\n');
|
|
54
|
-
if (lines.length === 0) {
|
|
55
|
-
logger.error(`[${connectionId}] Invalid HTTP request`);
|
|
56
|
-
socket.end();
|
|
57
|
-
connectionManager.cleanupConnection(record, 'invalid_request');
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
// Parse request line
|
|
61
|
-
const requestLine = lines[0];
|
|
62
|
-
const requestParts = requestLine.split(' ');
|
|
63
|
-
if (requestParts.length < 3) {
|
|
64
|
-
logger.error(`[${connectionId}] Invalid HTTP request line`);
|
|
65
|
-
socket.end();
|
|
66
|
-
connectionManager.cleanupConnection(record, 'invalid_request_line');
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
const [method, path, httpVersion] = requestParts;
|
|
70
|
-
// Parse headers
|
|
71
|
-
const headersMap = {};
|
|
72
|
-
for (let i = 1; i < lines.length; i++) {
|
|
73
|
-
const colonIndex = lines[i].indexOf(':');
|
|
74
|
-
if (colonIndex > 0) {
|
|
75
|
-
const key = lines[i].slice(0, colonIndex).trim().toLowerCase();
|
|
76
|
-
const value = lines[i].slice(colonIndex + 1).trim();
|
|
77
|
-
headersMap[key] = value;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
// Check for Content-Length to handle request body
|
|
81
|
-
const requestBodyLength = parseInt(headersMap['content-length'] || '0', 10);
|
|
82
|
-
const bodyStartIndex = headerEndIndex + 4; // Skip the \r\n\r\n
|
|
83
|
-
// If there's a body, ensure we have the full body
|
|
84
|
-
if (requestBodyLength > 0) {
|
|
85
|
-
const totalExpectedLength = bodyStartIndex + requestBodyLength;
|
|
86
|
-
// If we don't have the complete body yet, wait for more data
|
|
87
|
-
if (buffer.length < totalExpectedLength) {
|
|
88
|
-
// Implement a reasonable body size limit to prevent memory issues
|
|
89
|
-
if (requestBodyLength > 1024 * 1024) {
|
|
90
|
-
// 1MB limit
|
|
91
|
-
logger.error(`[${connectionId}] Request body too large`);
|
|
92
|
-
socket.end();
|
|
93
|
-
connectionManager.cleanupConnection(record, 'body_too_large');
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
return; // Wait for more data
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
// Extract query string if present
|
|
100
|
-
let pathname = path;
|
|
101
|
-
let query;
|
|
102
|
-
const queryIndex = path.indexOf('?');
|
|
103
|
-
if (queryIndex !== -1) {
|
|
104
|
-
pathname = path.slice(0, queryIndex);
|
|
105
|
-
query = path.slice(queryIndex + 1);
|
|
106
|
-
}
|
|
107
|
-
try {
|
|
108
|
-
// Get request body if present
|
|
109
|
-
let requestBody;
|
|
110
|
-
if (requestBodyLength > 0) {
|
|
111
|
-
requestBody = buffer.slice(bodyStartIndex, bodyStartIndex + requestBodyLength);
|
|
112
|
-
}
|
|
113
|
-
// Pause socket to prevent data loss during async processing
|
|
114
|
-
socket.pause();
|
|
115
|
-
// Remove the data listener since we're handling the request
|
|
116
|
-
socket.removeListener('data', handleHttpData);
|
|
117
|
-
// Build route context with parsed HTTP information
|
|
118
|
-
const context = {
|
|
119
|
-
port: record.localPort,
|
|
120
|
-
domain: record.lockedDomain || headersMap['host']?.split(':')[0],
|
|
121
|
-
clientIp: record.remoteIP,
|
|
122
|
-
serverIp: socket.localAddress,
|
|
123
|
-
path: pathname,
|
|
124
|
-
query: query,
|
|
125
|
-
headers: headersMap,
|
|
126
|
-
isTls: record.isTLS,
|
|
127
|
-
tlsVersion: record.tlsVersion,
|
|
128
|
-
routeName: route.name,
|
|
129
|
-
routeId: route.id,
|
|
130
|
-
timestamp: Date.now(),
|
|
131
|
-
connectionId,
|
|
132
|
-
};
|
|
133
|
-
// Since IRouteContext doesn't have a body property,
|
|
134
|
-
// we need an alternative approach to handle the body
|
|
135
|
-
let response;
|
|
136
|
-
if (requestBody) {
|
|
137
|
-
if (settings.enableDetailedLogging) {
|
|
138
|
-
logger.info(`[${connectionId}] Processing request with body (${requestBody.length} bytes)`);
|
|
139
|
-
}
|
|
140
|
-
// Pass the body as an additional parameter by extending the context object
|
|
141
|
-
// This is not type-safe, but it allows handlers that expect a body to work
|
|
142
|
-
const extendedContext = {
|
|
143
|
-
...context,
|
|
144
|
-
// Provide both raw buffer and string representation
|
|
145
|
-
requestBody: requestBody,
|
|
146
|
-
requestBodyText: requestBody.toString(),
|
|
147
|
-
method: method,
|
|
148
|
-
};
|
|
149
|
-
// Call the handler with the extended context
|
|
150
|
-
// The handler needs to know to look for the non-standard properties
|
|
151
|
-
response = await route.action.handler(extendedContext);
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
// Call the handler with the standard context
|
|
155
|
-
const extendedContext = {
|
|
156
|
-
...context,
|
|
157
|
-
method: method,
|
|
158
|
-
};
|
|
159
|
-
response = await route.action.handler(extendedContext);
|
|
160
|
-
}
|
|
161
|
-
// Prepare the HTTP response
|
|
162
|
-
const responseHeaders = response.headers || {};
|
|
163
|
-
const contentLength = Buffer.byteLength(response.body || '');
|
|
164
|
-
responseHeaders['Content-Length'] = contentLength.toString();
|
|
165
|
-
if (!responseHeaders['Content-Type']) {
|
|
166
|
-
responseHeaders['Content-Type'] = 'text/plain';
|
|
167
|
-
}
|
|
168
|
-
// Build the response
|
|
169
|
-
let httpResponse = `HTTP/1.1 ${response.status} ${getStatusText(response.status)}\r\n`;
|
|
170
|
-
for (const [key, value] of Object.entries(responseHeaders)) {
|
|
171
|
-
httpResponse += `${key}: ${value}\r\n`;
|
|
172
|
-
}
|
|
173
|
-
httpResponse += '\r\n';
|
|
174
|
-
// Send response
|
|
175
|
-
socket.write(httpResponse);
|
|
176
|
-
if (response.body) {
|
|
177
|
-
socket.write(response.body);
|
|
178
|
-
}
|
|
179
|
-
socket.end();
|
|
180
|
-
connectionManager.cleanupConnection(record, 'completed');
|
|
181
|
-
}
|
|
182
|
-
catch (error) {
|
|
183
|
-
logger.error(`[${connectionId}] Error in static handler: ${error}`);
|
|
184
|
-
// Send error response
|
|
185
|
-
const errorResponse = 'HTTP/1.1 500 Internal Server Error\r\n' +
|
|
186
|
-
'Content-Type: text/plain\r\n' +
|
|
187
|
-
'Content-Length: 21\r\n' +
|
|
188
|
-
'\r\n' +
|
|
189
|
-
'Internal Server Error';
|
|
190
|
-
socket.write(errorResponse);
|
|
191
|
-
socket.end();
|
|
192
|
-
connectionManager.cleanupConnection(record, 'handler_error');
|
|
193
|
-
}
|
|
194
|
-
};
|
|
195
|
-
// Process initial chunk if provided
|
|
196
|
-
if (initialChunk && initialChunk.length > 0) {
|
|
197
|
-
if (settings.enableDetailedLogging) {
|
|
198
|
-
logger.info(`[${connectionId}] Processing initial data chunk (${initialChunk.length} bytes)`);
|
|
199
|
-
}
|
|
200
|
-
// Process the initial chunk immediately
|
|
201
|
-
handleHttpData(initialChunk);
|
|
202
|
-
}
|
|
203
|
-
// Listen for additional data
|
|
204
|
-
socket.on('data', handleHttpData);
|
|
205
|
-
// Ensure cleanup on socket close
|
|
206
|
-
socket.once('close', () => {
|
|
207
|
-
socket.removeListener('data', handleHttpData);
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9wcm94aWVzL2h0dHAtcHJveHkvaGFuZGxlcnMvc3RhdGljLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQztBQUkvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQVNwRTs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBQ3hCOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQzlCLE1BQTBCLEVBQzFCLEtBQW1CLEVBQ25CLE9BQThCLEVBQzlCLE1BQXlCLEVBQ3pCLFlBQXFCO1FBRXJCLE1BQU0sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQzlELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLENBQUM7UUFFM0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksbUJBQW1CLEtBQUssQ0FBQyxJQUFJLGtCQUFrQixDQUFDLENBQUM7WUFDOUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2IsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQzFELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFFM0IsTUFBTSxj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
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import type { IHttpProxyOptions } from './models/types.js';
|
|
3
|
-
import type { IRouteConfig } from '../smart-proxy/models/route-types.js';
|
|
4
|
-
import { type IMetricsTracker } from './request-handler.js';
|
|
5
|
-
/**
|
|
6
|
-
* HttpProxy provides a reverse proxy with TLS termination, WebSocket support,
|
|
7
|
-
* automatic certificate management, and high-performance connection pooling.
|
|
8
|
-
* Handles all HTTP/HTTPS traffic including redirects, ACME challenges, and static routes.
|
|
9
|
-
*/
|
|
10
|
-
export declare class HttpProxy implements IMetricsTracker {
|
|
11
|
-
toJSON(): any;
|
|
12
|
-
options: IHttpProxyOptions;
|
|
13
|
-
routes: IRouteConfig[];
|
|
14
|
-
httpsServer: plugins.http2.Http2SecureServer;
|
|
15
|
-
private defaultCertProvider;
|
|
16
|
-
private connectionPool;
|
|
17
|
-
private requestHandler;
|
|
18
|
-
private webSocketHandler;
|
|
19
|
-
private router;
|
|
20
|
-
private routeManager;
|
|
21
|
-
private functionCache;
|
|
22
|
-
private securityManager;
|
|
23
|
-
socketMap: plugins.lik.ObjectMap<plugins.net.Socket>;
|
|
24
|
-
activeContexts: Set<string>;
|
|
25
|
-
connectedClients: number;
|
|
26
|
-
startTime: number;
|
|
27
|
-
requestsServed: number;
|
|
28
|
-
failedRequests: number;
|
|
29
|
-
private portProxyConnections;
|
|
30
|
-
private tlsTerminatedConnections;
|
|
31
|
-
private metricsInterval;
|
|
32
|
-
private connectionPoolCleanupInterval;
|
|
33
|
-
private logger;
|
|
34
|
-
/**
|
|
35
|
-
* Creates a new HttpProxy instance
|
|
36
|
-
*/
|
|
37
|
-
constructor(optionsArg: IHttpProxyOptions);
|
|
38
|
-
/**
|
|
39
|
-
* Implements IMetricsTracker interface to increment request counters
|
|
40
|
-
*/
|
|
41
|
-
incrementRequestsServed(): void;
|
|
42
|
-
/**
|
|
43
|
-
* Implements IMetricsTracker interface to increment failed request counters
|
|
44
|
-
*/
|
|
45
|
-
incrementFailedRequests(): void;
|
|
46
|
-
/**
|
|
47
|
-
* Returns the port number this HttpProxy is listening on
|
|
48
|
-
* Useful for SmartProxy to determine where to forward connections
|
|
49
|
-
*/
|
|
50
|
-
getListeningPort(): number;
|
|
51
|
-
/**
|
|
52
|
-
* Updates the server capacity settings
|
|
53
|
-
* @param maxConnections Maximum number of simultaneous connections
|
|
54
|
-
* @param keepAliveTimeout Keep-alive timeout in milliseconds
|
|
55
|
-
* @param connectionPoolSize Size of the connection pool per backend
|
|
56
|
-
*/
|
|
57
|
-
updateCapacity(maxConnections?: number, keepAliveTimeout?: number, connectionPoolSize?: number): void;
|
|
58
|
-
/**
|
|
59
|
-
* Returns current server metrics
|
|
60
|
-
* Useful for SmartProxy to determine which HttpProxy to use for load balancing
|
|
61
|
-
*/
|
|
62
|
-
getMetrics(): any;
|
|
63
|
-
/**
|
|
64
|
-
* Starts the proxy server
|
|
65
|
-
*/
|
|
66
|
-
start(): Promise<void>;
|
|
67
|
-
/**
|
|
68
|
-
* Check if an address is a loopback address (IPv4 or IPv6)
|
|
69
|
-
*/
|
|
70
|
-
private isLoopback;
|
|
71
|
-
/**
|
|
72
|
-
* Sets up tracking of TCP connections
|
|
73
|
-
*/
|
|
74
|
-
private setupConnectionTracking;
|
|
75
|
-
/**
|
|
76
|
-
* Sets up metrics collection
|
|
77
|
-
*/
|
|
78
|
-
private setupMetricsCollection;
|
|
79
|
-
/**
|
|
80
|
-
* Updates the route configurations - this is the primary method for configuring HttpProxy
|
|
81
|
-
* @param routes The new route configurations to use
|
|
82
|
-
*/
|
|
83
|
-
updateRouteConfigs(routes: IRouteConfig[]): Promise<void>;
|
|
84
|
-
/**
|
|
85
|
-
* Adds default headers to be included in all responses
|
|
86
|
-
*/
|
|
87
|
-
addDefaultHeaders(headersArg: {
|
|
88
|
-
[key: string]: string;
|
|
89
|
-
}): Promise<void>;
|
|
90
|
-
/**
|
|
91
|
-
* Stops the proxy server
|
|
92
|
-
*/
|
|
93
|
-
stop(): Promise<void>;
|
|
94
|
-
/**
|
|
95
|
-
* Requests a new certificate for a domain
|
|
96
|
-
* This can be used to manually trigger certificate issuance
|
|
97
|
-
* @param domain The domain to request a certificate for
|
|
98
|
-
* @returns A promise that resolves when the request is submitted (not when the certificate is issued)
|
|
99
|
-
*/
|
|
100
|
-
requestCertificate(domain: string): Promise<boolean>;
|
|
101
|
-
/**
|
|
102
|
-
* Update certificate for a domain
|
|
103
|
-
*
|
|
104
|
-
* This method allows direct updates of certificates from external sources
|
|
105
|
-
* like Port80Handler or custom certificate providers.
|
|
106
|
-
*
|
|
107
|
-
* @param domain The domain to update certificate for
|
|
108
|
-
* @param certificate The new certificate (public key)
|
|
109
|
-
* @param privateKey The new private key
|
|
110
|
-
* @param expiryDate Optional expiry date
|
|
111
|
-
*/
|
|
112
|
-
updateCertificate(domain: string, certificate: string, privateKey: string, expiryDate?: Date): void;
|
|
113
|
-
/**
|
|
114
|
-
* Gets all route configurations currently in use
|
|
115
|
-
*/
|
|
116
|
-
getRouteConfigs(): IRouteConfig[];
|
|
117
|
-
}
|