@push.rocks/smartproxy 25.17.10 → 26.0.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 +8 -0
- package/dist_rust/rustproxy_linux_amd64 +0 -0
- package/dist_rust/rustproxy_linux_arm64 +0 -0
- package/dist_ts/00_commitinfo_data.js +2 -2
- package/dist_ts/core/index.d.ts +0 -1
- package/dist_ts/core/index.js +1 -2
- package/dist_ts/core/models/index.d.ts +0 -1
- package/dist_ts/core/models/index.js +1 -2
- package/dist_ts/core/utils/index.d.ts +0 -12
- package/dist_ts/core/utils/index.js +1 -13
- package/dist_ts/index.d.ts +0 -3
- package/dist_ts/index.js +2 -7
- package/dist_ts/protocols/http/index.d.ts +0 -1
- package/dist_ts/protocols/http/index.js +1 -2
- package/dist_ts/protocols/index.d.ts +0 -7
- package/dist_ts/protocols/index.js +1 -8
- package/dist_ts/proxies/smart-proxy/socket-handler-server.js +6 -1
- package/dist_ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.d.ts +0 -7
- package/dist_ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.js +50 -51
- package/dist_ts/routing/index.d.ts +0 -1
- package/dist_ts/routing/index.js +1 -3
- package/package.json +1 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/core/index.ts +0 -1
- package/ts/core/models/index.ts +0 -1
- package/ts/core/utils/index.ts +0 -12
- package/ts/index.ts +1 -7
- package/ts/protocols/http/index.ts +1 -2
- package/ts/protocols/index.ts +0 -7
- package/ts/proxies/smart-proxy/socket-handler-server.ts +6 -0
- package/ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.ts +60 -59
- package/ts/routing/index.ts +0 -3
- package/dist_ts/core/events/index.d.ts +0 -4
- package/dist_ts/core/events/index.js +0 -5
- package/dist_ts/core/models/socket-augmentation.d.ts +0 -15
- package/dist_ts/core/models/socket-augmentation.js +0 -18
- package/dist_ts/core/utils/async-utils.d.ts +0 -81
- package/dist_ts/core/utils/async-utils.js +0 -216
- package/dist_ts/core/utils/binary-heap.d.ts +0 -73
- package/dist_ts/core/utils/binary-heap.js +0 -193
- package/dist_ts/core/utils/enhanced-connection-pool.d.ts +0 -110
- package/dist_ts/core/utils/enhanced-connection-pool.js +0 -325
- package/dist_ts/core/utils/fs-utils.d.ts +0 -144
- package/dist_ts/core/utils/fs-utils.js +0 -252
- package/dist_ts/core/utils/ip-utils.d.ts +0 -69
- package/dist_ts/core/utils/ip-utils.js +0 -270
- package/dist_ts/core/utils/lifecycle-component.d.ts +0 -59
- package/dist_ts/core/utils/lifecycle-component.js +0 -211
- package/dist_ts/core/utils/log-deduplicator.d.ts +0 -39
- package/dist_ts/core/utils/log-deduplicator.js +0 -305
- package/dist_ts/core/utils/security-utils.d.ts +0 -111
- package/dist_ts/core/utils/security-utils.js +0 -212
- package/dist_ts/core/utils/shared-security-manager.d.ts +0 -128
- package/dist_ts/core/utils/shared-security-manager.js +0 -362
- package/dist_ts/core/utils/socket-utils.d.ts +0 -63
- package/dist_ts/core/utils/socket-utils.js +0 -249
- package/dist_ts/core/utils/template-utils.d.ts +0 -37
- package/dist_ts/core/utils/template-utils.js +0 -104
- package/dist_ts/core/utils/validation-utils.d.ts +0 -61
- package/dist_ts/core/utils/validation-utils.js +0 -149
- package/dist_ts/core/utils/websocket-utils.d.ts +0 -22
- package/dist_ts/core/utils/websocket-utils.js +0 -30
- package/dist_ts/detection/detectors/http-detector.d.ts +0 -33
- package/dist_ts/detection/detectors/http-detector.js +0 -101
- package/dist_ts/detection/detectors/quick-detector.d.ts +0 -28
- package/dist_ts/detection/detectors/quick-detector.js +0 -131
- package/dist_ts/detection/detectors/routing-extractor.d.ts +0 -28
- package/dist_ts/detection/detectors/routing-extractor.js +0 -122
- package/dist_ts/detection/detectors/tls-detector.d.ts +0 -47
- package/dist_ts/detection/detectors/tls-detector.js +0 -183
- package/dist_ts/detection/index.d.ts +0 -17
- package/dist_ts/detection/index.js +0 -22
- package/dist_ts/detection/models/detection-types.d.ts +0 -87
- package/dist_ts/detection/models/detection-types.js +0 -5
- package/dist_ts/detection/models/interfaces.d.ts +0 -97
- package/dist_ts/detection/models/interfaces.js +0 -5
- package/dist_ts/detection/protocol-detector.d.ts +0 -79
- package/dist_ts/detection/protocol-detector.js +0 -253
- package/dist_ts/detection/utils/buffer-utils.d.ts +0 -61
- package/dist_ts/detection/utils/buffer-utils.js +0 -127
- package/dist_ts/detection/utils/fragment-manager.d.ts +0 -31
- package/dist_ts/detection/utils/fragment-manager.js +0 -53
- package/dist_ts/detection/utils/parser-utils.d.ts +0 -42
- package/dist_ts/detection/utils/parser-utils.js +0 -63
- package/dist_ts/protocols/common/fragment-handler.d.ts +0 -73
- package/dist_ts/protocols/common/fragment-handler.js +0 -121
- package/dist_ts/protocols/common/index.d.ts +0 -7
- package/dist_ts/protocols/common/index.js +0 -8
- package/dist_ts/protocols/common/types.d.ts +0 -68
- package/dist_ts/protocols/common/types.js +0 -7
- package/dist_ts/protocols/http/parser.d.ts +0 -58
- package/dist_ts/protocols/http/parser.js +0 -184
- package/dist_ts/protocols/proxy/index.d.ts +0 -5
- package/dist_ts/protocols/proxy/index.js +0 -6
- package/dist_ts/protocols/proxy/types.d.ts +0 -47
- package/dist_ts/protocols/proxy/types.js +0 -6
- package/dist_ts/protocols/tls/alerts/index.d.ts +0 -4
- package/dist_ts/protocols/tls/alerts/index.js +0 -5
- package/dist_ts/protocols/tls/alerts/tls-alert.d.ts +0 -150
- package/dist_ts/protocols/tls/alerts/tls-alert.js +0 -226
- package/dist_ts/protocols/tls/index.d.ts +0 -12
- package/dist_ts/protocols/tls/index.js +0 -27
- package/dist_ts/protocols/tls/sni/client-hello-parser.d.ts +0 -100
- package/dist_ts/protocols/tls/sni/client-hello-parser.js +0 -463
- package/dist_ts/protocols/tls/sni/index.d.ts +0 -5
- package/dist_ts/protocols/tls/sni/index.js +0 -6
- package/dist_ts/protocols/tls/sni/sni-extraction.d.ts +0 -58
- package/dist_ts/protocols/tls/sni/sni-extraction.js +0 -275
- package/dist_ts/protocols/tls/utils/index.d.ts +0 -4
- package/dist_ts/protocols/tls/utils/index.js +0 -5
- package/dist_ts/protocols/tls/utils/tls-utils.d.ts +0 -158
- package/dist_ts/protocols/tls/utils/tls-utils.js +0 -187
- package/dist_ts/protocols/websocket/constants.d.ts +0 -55
- package/dist_ts/protocols/websocket/constants.js +0 -58
- package/dist_ts/protocols/websocket/index.d.ts +0 -7
- package/dist_ts/protocols/websocket/index.js +0 -8
- package/dist_ts/protocols/websocket/types.d.ts +0 -47
- package/dist_ts/protocols/websocket/types.js +0 -5
- package/dist_ts/protocols/websocket/utils.d.ts +0 -25
- package/dist_ts/protocols/websocket/utils.js +0 -103
- package/dist_ts/routing/router/http-router.d.ts +0 -89
- package/dist_ts/routing/router/http-router.js +0 -205
- package/dist_ts/routing/router/index.d.ts +0 -5
- package/dist_ts/routing/router/index.js +0 -6
- package/dist_ts/tls/index.d.ts +0 -16
- package/dist_ts/tls/index.js +0 -24
- package/dist_ts/tls/sni/index.d.ts +0 -4
- package/dist_ts/tls/sni/index.js +0 -5
- package/dist_ts/tls/sni/sni-handler.d.ts +0 -154
- package/dist_ts/tls/sni/sni-handler.js +0 -191
- package/ts/core/events/index.ts +0 -3
- package/ts/core/models/socket-augmentation.ts +0 -38
- package/ts/core/utils/async-utils.ts +0 -275
- package/ts/core/utils/binary-heap.ts +0 -225
- package/ts/core/utils/enhanced-connection-pool.ts +0 -425
- package/ts/core/utils/fs-utils.ts +0 -270
- package/ts/core/utils/ip-utils.ts +0 -303
- package/ts/core/utils/lifecycle-component.ts +0 -251
- package/ts/core/utils/log-deduplicator.ts +0 -370
- package/ts/core/utils/security-utils.ts +0 -305
- package/ts/core/utils/shared-security-manager.ts +0 -470
- package/ts/core/utils/socket-utils.ts +0 -322
- package/ts/core/utils/template-utils.ts +0 -124
- package/ts/core/utils/validation-utils.ts +0 -177
- package/ts/core/utils/websocket-utils.ts +0 -33
- package/ts/detection/detectors/http-detector.ts +0 -127
- package/ts/detection/detectors/quick-detector.ts +0 -148
- package/ts/detection/detectors/routing-extractor.ts +0 -147
- package/ts/detection/detectors/tls-detector.ts +0 -223
- package/ts/detection/index.ts +0 -25
- package/ts/detection/models/detection-types.ts +0 -102
- package/ts/detection/models/interfaces.ts +0 -115
- package/ts/detection/protocol-detector.ts +0 -319
- package/ts/detection/utils/buffer-utils.ts +0 -141
- package/ts/detection/utils/fragment-manager.ts +0 -64
- package/ts/detection/utils/parser-utils.ts +0 -77
- package/ts/protocols/common/fragment-handler.ts +0 -167
- package/ts/protocols/common/index.ts +0 -8
- package/ts/protocols/common/types.ts +0 -76
- package/ts/protocols/http/parser.ts +0 -219
- package/ts/protocols/proxy/index.ts +0 -6
- package/ts/protocols/proxy/types.ts +0 -53
- package/ts/protocols/tls/alerts/index.ts +0 -3
- package/ts/protocols/tls/alerts/tls-alert.ts +0 -259
- package/ts/protocols/tls/index.ts +0 -37
- package/ts/protocols/tls/sni/client-hello-parser.ts +0 -629
- package/ts/protocols/tls/sni/index.ts +0 -6
- package/ts/protocols/tls/sni/sni-extraction.ts +0 -353
- package/ts/protocols/tls/utils/index.ts +0 -3
- package/ts/protocols/tls/utils/tls-utils.ts +0 -201
- package/ts/protocols/websocket/constants.ts +0 -60
- package/ts/protocols/websocket/index.ts +0 -8
- package/ts/protocols/websocket/types.ts +0 -53
- package/ts/protocols/websocket/utils.ts +0 -98
- package/ts/routing/router/http-router.ts +0 -266
- package/ts/routing/router/index.ts +0 -7
- package/ts/tls/index.ts +0 -29
- package/ts/tls/sni/index.ts +0 -3
- package/ts/tls/sni/sni-handler.ts +0 -264
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared Fragment Handler for Protocol Detection
|
|
3
|
-
*
|
|
4
|
-
* Provides unified fragment buffering and reassembly for protocols
|
|
5
|
-
* that may span multiple TCP packets.
|
|
6
|
-
*/
|
|
7
|
-
import { Buffer } from 'node:buffer';
|
|
8
|
-
/**
|
|
9
|
-
* Fragment tracking information
|
|
10
|
-
*/
|
|
11
|
-
export interface IFragmentInfo {
|
|
12
|
-
buffer: Buffer;
|
|
13
|
-
timestamp: number;
|
|
14
|
-
connectionId: string;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Options for fragment handling
|
|
18
|
-
*/
|
|
19
|
-
export interface IFragmentOptions {
|
|
20
|
-
maxBufferSize?: number;
|
|
21
|
-
timeout?: number;
|
|
22
|
-
cleanupInterval?: number;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Result of fragment processing
|
|
26
|
-
*/
|
|
27
|
-
export interface IFragmentResult {
|
|
28
|
-
isComplete: boolean;
|
|
29
|
-
buffer?: Buffer;
|
|
30
|
-
needsMoreData: boolean;
|
|
31
|
-
error?: string;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Shared fragment handler for protocol detection
|
|
35
|
-
*/
|
|
36
|
-
export declare class FragmentHandler {
|
|
37
|
-
private options;
|
|
38
|
-
private fragments;
|
|
39
|
-
private cleanupTimer?;
|
|
40
|
-
constructor(options?: IFragmentOptions);
|
|
41
|
-
/**
|
|
42
|
-
* Add a fragment for a connection
|
|
43
|
-
*/
|
|
44
|
-
addFragment(connectionId: string, fragment: Buffer): IFragmentResult;
|
|
45
|
-
/**
|
|
46
|
-
* Get the current buffer for a connection
|
|
47
|
-
*/
|
|
48
|
-
getBuffer(connectionId: string): Buffer | undefined;
|
|
49
|
-
/**
|
|
50
|
-
* Mark a connection as complete and clean up
|
|
51
|
-
*/
|
|
52
|
-
complete(connectionId: string): void;
|
|
53
|
-
/**
|
|
54
|
-
* Check if we're tracking a connection
|
|
55
|
-
*/
|
|
56
|
-
hasConnection(connectionId: string): boolean;
|
|
57
|
-
/**
|
|
58
|
-
* Clean up expired fragments
|
|
59
|
-
*/
|
|
60
|
-
cleanup(): void;
|
|
61
|
-
/**
|
|
62
|
-
* Clear all fragments
|
|
63
|
-
*/
|
|
64
|
-
clear(): void;
|
|
65
|
-
/**
|
|
66
|
-
* Destroy the handler and clean up resources
|
|
67
|
-
*/
|
|
68
|
-
destroy(): void;
|
|
69
|
-
/**
|
|
70
|
-
* Get the number of tracked connections
|
|
71
|
-
*/
|
|
72
|
-
get size(): number;
|
|
73
|
-
}
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared Fragment Handler for Protocol Detection
|
|
3
|
-
*
|
|
4
|
-
* Provides unified fragment buffering and reassembly for protocols
|
|
5
|
-
* that may span multiple TCP packets.
|
|
6
|
-
*/
|
|
7
|
-
import { Buffer } from 'node:buffer';
|
|
8
|
-
/**
|
|
9
|
-
* Shared fragment handler for protocol detection
|
|
10
|
-
*/
|
|
11
|
-
export class FragmentHandler {
|
|
12
|
-
constructor(options = {}) {
|
|
13
|
-
this.options = options;
|
|
14
|
-
this.fragments = new Map();
|
|
15
|
-
// Start cleanup timer if not already running
|
|
16
|
-
if (options.cleanupInterval && !this.cleanupTimer) {
|
|
17
|
-
this.cleanupTimer = setInterval(() => this.cleanup(), options.cleanupInterval);
|
|
18
|
-
// Don't let this timer prevent process exit
|
|
19
|
-
if (this.cleanupTimer.unref) {
|
|
20
|
-
this.cleanupTimer.unref();
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Add a fragment for a connection
|
|
26
|
-
*/
|
|
27
|
-
addFragment(connectionId, fragment) {
|
|
28
|
-
const existing = this.fragments.get(connectionId);
|
|
29
|
-
if (existing) {
|
|
30
|
-
// Append to existing buffer
|
|
31
|
-
const newBuffer = Buffer.concat([existing.buffer, fragment]);
|
|
32
|
-
// Check size limit
|
|
33
|
-
const maxSize = this.options.maxBufferSize || 65536;
|
|
34
|
-
if (newBuffer.length > maxSize) {
|
|
35
|
-
this.fragments.delete(connectionId);
|
|
36
|
-
return {
|
|
37
|
-
isComplete: false,
|
|
38
|
-
needsMoreData: false,
|
|
39
|
-
error: 'Buffer size exceeded maximum allowed'
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
// Update fragment info
|
|
43
|
-
this.fragments.set(connectionId, {
|
|
44
|
-
buffer: newBuffer,
|
|
45
|
-
timestamp: Date.now(),
|
|
46
|
-
connectionId
|
|
47
|
-
});
|
|
48
|
-
return {
|
|
49
|
-
isComplete: false,
|
|
50
|
-
buffer: newBuffer,
|
|
51
|
-
needsMoreData: true
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
// New fragment
|
|
56
|
-
this.fragments.set(connectionId, {
|
|
57
|
-
buffer: fragment,
|
|
58
|
-
timestamp: Date.now(),
|
|
59
|
-
connectionId
|
|
60
|
-
});
|
|
61
|
-
return {
|
|
62
|
-
isComplete: false,
|
|
63
|
-
buffer: fragment,
|
|
64
|
-
needsMoreData: true
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Get the current buffer for a connection
|
|
70
|
-
*/
|
|
71
|
-
getBuffer(connectionId) {
|
|
72
|
-
return this.fragments.get(connectionId)?.buffer;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Mark a connection as complete and clean up
|
|
76
|
-
*/
|
|
77
|
-
complete(connectionId) {
|
|
78
|
-
this.fragments.delete(connectionId);
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Check if we're tracking a connection
|
|
82
|
-
*/
|
|
83
|
-
hasConnection(connectionId) {
|
|
84
|
-
return this.fragments.has(connectionId);
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Clean up expired fragments
|
|
88
|
-
*/
|
|
89
|
-
cleanup() {
|
|
90
|
-
const now = Date.now();
|
|
91
|
-
const timeout = this.options.timeout || 5000;
|
|
92
|
-
for (const [connectionId, info] of this.fragments.entries()) {
|
|
93
|
-
if (now - info.timestamp > timeout) {
|
|
94
|
-
this.fragments.delete(connectionId);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Clear all fragments
|
|
100
|
-
*/
|
|
101
|
-
clear() {
|
|
102
|
-
this.fragments.clear();
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Destroy the handler and clean up resources
|
|
106
|
-
*/
|
|
107
|
-
destroy() {
|
|
108
|
-
if (this.cleanupTimer) {
|
|
109
|
-
clearInterval(this.cleanupTimer);
|
|
110
|
-
this.cleanupTimer = undefined;
|
|
111
|
-
}
|
|
112
|
-
this.clear();
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Get the number of tracked connections
|
|
116
|
-
*/
|
|
117
|
-
get size() {
|
|
118
|
-
return this.fragments.size;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhZ21lbnQtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL3Byb3RvY29scy9jb21tb24vZnJhZ21lbnQtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUE4QnJDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFBb0IsVUFBNEIsRUFBRTtRQUE5QixZQUFPLEdBQVAsT0FBTyxDQUF1QjtRQUgxQyxjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7UUFJbkQsNkNBQTZDO1FBQzdDLElBQUksT0FBTyxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUNwQixPQUFPLENBQUMsZUFBZSxDQUN4QixDQUFDO1lBQ0YsNENBQTRDO1lBQzVDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM1QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxZQUFvQixFQUFFLFFBQWdCO1FBQ2hELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWxELElBQUksUUFBUSxFQUFFLENBQUM7WUFDYiw0QkFBNEI7WUFDNUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUU3RCxtQkFBbUI7WUFDbkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxD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
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Common Protocol Infrastructure
|
|
3
|
-
*
|
|
4
|
-
* Shared utilities and types for protocol handling
|
|
5
|
-
*/
|
|
6
|
-
export * from './fragment-handler.js';
|
|
7
|
-
export * from './types.js';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9wcm90b2NvbHMvY29tbW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsWUFBWSxDQUFDIn0=
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Common Protocol Types
|
|
3
|
-
*
|
|
4
|
-
* Shared types used across different protocol implementations
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Supported protocol types
|
|
8
|
-
*/
|
|
9
|
-
export type TProtocolType = 'tls' | 'http' | 'https' | 'websocket' | 'unknown';
|
|
10
|
-
/**
|
|
11
|
-
* Protocol detection result
|
|
12
|
-
*/
|
|
13
|
-
export interface IProtocolDetectionResult {
|
|
14
|
-
protocol: TProtocolType;
|
|
15
|
-
confidence: number;
|
|
16
|
-
requiresMoreData?: boolean;
|
|
17
|
-
metadata?: {
|
|
18
|
-
version?: string;
|
|
19
|
-
method?: string;
|
|
20
|
-
[key: string]: any;
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Routing information extracted from protocols
|
|
25
|
-
*/
|
|
26
|
-
export interface IRoutingInfo {
|
|
27
|
-
domain?: string;
|
|
28
|
-
port?: number;
|
|
29
|
-
path?: string;
|
|
30
|
-
protocol: TProtocolType;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Connection context for protocol operations
|
|
34
|
-
*/
|
|
35
|
-
export interface IConnectionContext {
|
|
36
|
-
id: string;
|
|
37
|
-
sourceIp?: string;
|
|
38
|
-
sourcePort?: number;
|
|
39
|
-
destIp?: string;
|
|
40
|
-
destPort?: number;
|
|
41
|
-
timestamp?: number;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Protocol detection options
|
|
45
|
-
*/
|
|
46
|
-
export interface IProtocolDetectionOptions {
|
|
47
|
-
quickMode?: boolean;
|
|
48
|
-
extractRouting?: boolean;
|
|
49
|
-
maxWaitTime?: number;
|
|
50
|
-
maxBufferSize?: number;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Base interface for protocol detectors
|
|
54
|
-
*/
|
|
55
|
-
export interface IProtocolDetector {
|
|
56
|
-
/**
|
|
57
|
-
* Check if this detector can handle the data
|
|
58
|
-
*/
|
|
59
|
-
canHandle(data: Buffer): boolean;
|
|
60
|
-
/**
|
|
61
|
-
* Perform quick detection (first few bytes only)
|
|
62
|
-
*/
|
|
63
|
-
quickDetect(data: Buffer): IProtocolDetectionResult;
|
|
64
|
-
/**
|
|
65
|
-
* Extract routing information if possible
|
|
66
|
-
*/
|
|
67
|
-
extractRouting?(data: Buffer, context?: IConnectionContext): IRoutingInfo | null;
|
|
68
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Common Protocol Types
|
|
3
|
-
*
|
|
4
|
-
* Shared types used across different protocol implementations
|
|
5
|
-
*/
|
|
6
|
-
export {};
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9wcm90b2NvbHMvY29tbW9uL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUcifQ==
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTTP Protocol Parser
|
|
3
|
-
* Generic HTTP parsing utilities
|
|
4
|
-
*/
|
|
5
|
-
import { type THttpMethod } from './constants.js';
|
|
6
|
-
import type { IHttpRequestLine, IHttpHeader } from './types.js';
|
|
7
|
-
/**
|
|
8
|
-
* HTTP parser utilities
|
|
9
|
-
*/
|
|
10
|
-
export declare class HttpParser {
|
|
11
|
-
/**
|
|
12
|
-
* Check if string is a valid HTTP method
|
|
13
|
-
*/
|
|
14
|
-
static isHttpMethod(str: string): str is THttpMethod;
|
|
15
|
-
/**
|
|
16
|
-
* Parse HTTP request line
|
|
17
|
-
*/
|
|
18
|
-
static parseRequestLine(line: string): IHttpRequestLine | null;
|
|
19
|
-
/**
|
|
20
|
-
* Parse HTTP header line
|
|
21
|
-
*/
|
|
22
|
-
static parseHeaderLine(line: string): IHttpHeader | null;
|
|
23
|
-
/**
|
|
24
|
-
* Parse HTTP headers from lines
|
|
25
|
-
*/
|
|
26
|
-
static parseHeaders(lines: string[]): Record<string, string>;
|
|
27
|
-
/**
|
|
28
|
-
* Extract domain from Host header value
|
|
29
|
-
*/
|
|
30
|
-
static extractDomainFromHost(hostHeader: string): string;
|
|
31
|
-
/**
|
|
32
|
-
* Validate domain name
|
|
33
|
-
*/
|
|
34
|
-
static isValidDomain(domain: string): boolean;
|
|
35
|
-
/**
|
|
36
|
-
* Extract line from buffer
|
|
37
|
-
*/
|
|
38
|
-
static extractLine(buffer: Buffer, offset?: number): {
|
|
39
|
-
line: string;
|
|
40
|
-
nextOffset: number;
|
|
41
|
-
} | null;
|
|
42
|
-
/**
|
|
43
|
-
* Check if buffer contains printable ASCII
|
|
44
|
-
*/
|
|
45
|
-
static isPrintableAscii(buffer: Buffer, length?: number): boolean;
|
|
46
|
-
/**
|
|
47
|
-
* Quick check if buffer starts with HTTP method
|
|
48
|
-
*/
|
|
49
|
-
static quickCheck(buffer: Buffer): boolean;
|
|
50
|
-
/**
|
|
51
|
-
* Parse query string
|
|
52
|
-
*/
|
|
53
|
-
static parseQueryString(queryString: string): Record<string, string>;
|
|
54
|
-
/**
|
|
55
|
-
* Build query string from params
|
|
56
|
-
*/
|
|
57
|
-
static buildQueryString(params: Record<string, string>): string;
|
|
58
|
-
}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTTP Protocol Parser
|
|
3
|
-
* Generic HTTP parsing utilities
|
|
4
|
-
*/
|
|
5
|
-
import { HTTP_METHODS } from './constants.js';
|
|
6
|
-
/**
|
|
7
|
-
* HTTP parser utilities
|
|
8
|
-
*/
|
|
9
|
-
export class HttpParser {
|
|
10
|
-
/**
|
|
11
|
-
* Check if string is a valid HTTP method
|
|
12
|
-
*/
|
|
13
|
-
static isHttpMethod(str) {
|
|
14
|
-
return HTTP_METHODS.includes(str);
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Parse HTTP request line
|
|
18
|
-
*/
|
|
19
|
-
static parseRequestLine(line) {
|
|
20
|
-
const parts = line.trim().split(' ');
|
|
21
|
-
if (parts.length !== 3) {
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
const [method, path, version] = parts;
|
|
25
|
-
// Validate method
|
|
26
|
-
if (!this.isHttpMethod(method)) {
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
// Validate version
|
|
30
|
-
if (!version.startsWith('HTTP/')) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
return {
|
|
34
|
-
method: method,
|
|
35
|
-
path,
|
|
36
|
-
version: version
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Parse HTTP header line
|
|
41
|
-
*/
|
|
42
|
-
static parseHeaderLine(line) {
|
|
43
|
-
const colonIndex = line.indexOf(':');
|
|
44
|
-
if (colonIndex === -1) {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
const name = line.slice(0, colonIndex).trim();
|
|
48
|
-
const value = line.slice(colonIndex + 1).trim();
|
|
49
|
-
if (!name) {
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
return { name, value };
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Parse HTTP headers from lines
|
|
56
|
-
*/
|
|
57
|
-
static parseHeaders(lines) {
|
|
58
|
-
const headers = {};
|
|
59
|
-
for (const line of lines) {
|
|
60
|
-
const header = this.parseHeaderLine(line);
|
|
61
|
-
if (header) {
|
|
62
|
-
// Convert header names to lowercase for consistency
|
|
63
|
-
headers[header.name.toLowerCase()] = header.value;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return headers;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Extract domain from Host header value
|
|
70
|
-
*/
|
|
71
|
-
static extractDomainFromHost(hostHeader) {
|
|
72
|
-
// Remove port if present
|
|
73
|
-
const colonIndex = hostHeader.lastIndexOf(':');
|
|
74
|
-
if (colonIndex !== -1) {
|
|
75
|
-
// Check if it's not part of IPv6 address
|
|
76
|
-
const beforeColon = hostHeader.slice(0, colonIndex);
|
|
77
|
-
if (!beforeColon.includes(']')) {
|
|
78
|
-
return beforeColon;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
return hostHeader;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Validate domain name
|
|
85
|
-
*/
|
|
86
|
-
static isValidDomain(domain) {
|
|
87
|
-
// Basic domain validation
|
|
88
|
-
if (!domain || domain.length > 253) {
|
|
89
|
-
return false;
|
|
90
|
-
}
|
|
91
|
-
// Check for valid characters and structure
|
|
92
|
-
const domainRegex = /^(?!-)[A-Za-z0-9-]{1,63}(?<!-)(\.[A-Za-z0-9-]{1,63})*$/;
|
|
93
|
-
return domainRegex.test(domain);
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Extract line from buffer
|
|
97
|
-
*/
|
|
98
|
-
static extractLine(buffer, offset = 0) {
|
|
99
|
-
// Look for CRLF
|
|
100
|
-
const crlfIndex = buffer.indexOf('\r\n', offset);
|
|
101
|
-
if (crlfIndex === -1) {
|
|
102
|
-
// Look for just LF
|
|
103
|
-
const lfIndex = buffer.indexOf('\n', offset);
|
|
104
|
-
if (lfIndex === -1) {
|
|
105
|
-
return null;
|
|
106
|
-
}
|
|
107
|
-
return {
|
|
108
|
-
line: buffer.slice(offset, lfIndex).toString('utf8'),
|
|
109
|
-
nextOffset: lfIndex + 1
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
return {
|
|
113
|
-
line: buffer.slice(offset, crlfIndex).toString('utf8'),
|
|
114
|
-
nextOffset: crlfIndex + 2
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Check if buffer contains printable ASCII
|
|
119
|
-
*/
|
|
120
|
-
static isPrintableAscii(buffer, length) {
|
|
121
|
-
const checkLength = Math.min(length || buffer.length, buffer.length);
|
|
122
|
-
for (let i = 0; i < checkLength; i++) {
|
|
123
|
-
const byte = buffer[i];
|
|
124
|
-
// Allow printable ASCII (32-126) plus tab (9), LF (10), and CR (13)
|
|
125
|
-
if (byte < 32 || byte > 126) {
|
|
126
|
-
if (byte !== 9 && byte !== 10 && byte !== 13) {
|
|
127
|
-
return false;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
return true;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Quick check if buffer starts with HTTP method
|
|
135
|
-
*/
|
|
136
|
-
static quickCheck(buffer) {
|
|
137
|
-
if (buffer.length < 3) {
|
|
138
|
-
return false;
|
|
139
|
-
}
|
|
140
|
-
// Check common HTTP methods
|
|
141
|
-
const start = buffer.slice(0, 7).toString('ascii');
|
|
142
|
-
return start.startsWith('GET ') ||
|
|
143
|
-
start.startsWith('POST ') ||
|
|
144
|
-
start.startsWith('PUT ') ||
|
|
145
|
-
start.startsWith('DELETE ') ||
|
|
146
|
-
start.startsWith('HEAD ') ||
|
|
147
|
-
start.startsWith('OPTIONS') ||
|
|
148
|
-
start.startsWith('PATCH ') ||
|
|
149
|
-
start.startsWith('CONNECT') ||
|
|
150
|
-
start.startsWith('TRACE ');
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Parse query string
|
|
154
|
-
*/
|
|
155
|
-
static parseQueryString(queryString) {
|
|
156
|
-
const params = {};
|
|
157
|
-
if (!queryString) {
|
|
158
|
-
return params;
|
|
159
|
-
}
|
|
160
|
-
// Remove leading '?' if present
|
|
161
|
-
if (queryString.startsWith('?')) {
|
|
162
|
-
queryString = queryString.slice(1);
|
|
163
|
-
}
|
|
164
|
-
const pairs = queryString.split('&');
|
|
165
|
-
for (const pair of pairs) {
|
|
166
|
-
const [key, value] = pair.split('=');
|
|
167
|
-
if (key) {
|
|
168
|
-
params[decodeURIComponent(key)] = value ? decodeURIComponent(value) : '';
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
return params;
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Build query string from params
|
|
175
|
-
*/
|
|
176
|
-
static buildQueryString(params) {
|
|
177
|
-
const pairs = [];
|
|
178
|
-
for (const [key, value] of Object.entries(params)) {
|
|
179
|
-
pairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);
|
|
180
|
-
}
|
|
181
|
-
return pairs.length > 0 ? '?' + pairs.join('&') : '';
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvcHJvdG9jb2xzL2h0dHAvcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQXVDLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkY7O0dBRUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUNyQjs7T0FFRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBVztRQUM3QixPQUFPLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBa0IsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFZO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFckMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUV0QyxrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPO1lBQ0wsTUFBTSxFQUFFLE1BQXFCO1lBQzdCLElBQUk7WUFDSixPQUFPLEVBQUUsT0FBdUI7U0FDakMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBWTtRQUNqQyxNQUFNLFVBQVUs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
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PROXY Protocol Module
|
|
3
|
-
* Type definitions for HAProxy PROXY protocol v1/v2
|
|
4
|
-
*/
|
|
5
|
-
export * from './types.js';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9wcm90b2NvbHMvcHJveHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsY0FBYyxZQUFZLENBQUMifQ==
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PROXY Protocol Type Definitions
|
|
3
|
-
* Based on HAProxy PROXY protocol specification
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* PROXY protocol version
|
|
7
|
-
*/
|
|
8
|
-
export type TProxyProtocolVersion = 'v1' | 'v2';
|
|
9
|
-
/**
|
|
10
|
-
* Connection protocol type
|
|
11
|
-
*/
|
|
12
|
-
export type TProxyProtocol = 'TCP4' | 'TCP6' | 'UDP4' | 'UDP6' | 'UNKNOWN';
|
|
13
|
-
/**
|
|
14
|
-
* Interface representing parsed PROXY protocol information
|
|
15
|
-
*/
|
|
16
|
-
export interface IProxyInfo {
|
|
17
|
-
protocol: TProxyProtocol;
|
|
18
|
-
sourceIP: string;
|
|
19
|
-
sourcePort: number;
|
|
20
|
-
destinationIP: string;
|
|
21
|
-
destinationPort: number;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Interface for parse result including remaining data
|
|
25
|
-
*/
|
|
26
|
-
export interface IProxyParseResult {
|
|
27
|
-
proxyInfo: IProxyInfo | null;
|
|
28
|
-
remainingData: Buffer;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* PROXY protocol v2 header format
|
|
32
|
-
*/
|
|
33
|
-
export interface IProxyV2Header {
|
|
34
|
-
signature: Buffer;
|
|
35
|
-
versionCommand: number;
|
|
36
|
-
family: number;
|
|
37
|
-
length: number;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Connection information for PROXY protocol
|
|
41
|
-
*/
|
|
42
|
-
export interface IProxyConnectionInfo {
|
|
43
|
-
sourceIp?: string;
|
|
44
|
-
sourcePort?: number;
|
|
45
|
-
destIp?: string;
|
|
46
|
-
destPort?: number;
|
|
47
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PROXY Protocol Type Definitions
|
|
3
|
-
* Based on HAProxy PROXY protocol specification
|
|
4
|
-
*/
|
|
5
|
-
export {};
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9wcm90b2NvbHMvcHJveHkvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHIn0=
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
/**
|
|
3
|
-
* TLS alerts
|
|
4
|
-
*/
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9wcm90b2NvbHMvdGxzL2FsZXJ0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUcifQ==
|