@push.rocks/smartproxy 15.0.2 → 16.0.2
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/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/certificate/index.d.ts +10 -4
- package/dist_ts/certificate/index.js +5 -7
- package/dist_ts/certificate/models/certificate-types.d.ts +35 -15
- package/dist_ts/certificate/providers/cert-provisioner.d.ts +41 -15
- package/dist_ts/certificate/providers/cert-provisioner.js +201 -41
- package/dist_ts/forwarding/config/forwarding-types.d.ts +40 -76
- package/dist_ts/forwarding/config/forwarding-types.js +19 -18
- package/dist_ts/forwarding/config/index.d.ts +4 -2
- package/dist_ts/forwarding/config/index.js +5 -3
- package/dist_ts/forwarding/handlers/base-handler.js +3 -1
- package/dist_ts/forwarding/index.d.ts +5 -6
- package/dist_ts/forwarding/index.js +3 -3
- package/dist_ts/http/models/http-types.js +1 -1
- package/dist_ts/http/port80/acme-interfaces.d.ts +30 -0
- package/dist_ts/http/port80/acme-interfaces.js +46 -1
- package/dist_ts/http/port80/port80-handler.d.ts +17 -2
- package/dist_ts/http/port80/port80-handler.js +49 -11
- package/dist_ts/proxies/smart-proxy/models/interfaces.d.ts +2 -61
- package/dist_ts/proxies/smart-proxy/models/interfaces.js +5 -4
- package/dist_ts/proxies/smart-proxy/models/route-types.d.ts +118 -4
- package/dist_ts/proxies/smart-proxy/network-proxy-bridge.d.ts +70 -4
- package/dist_ts/proxies/smart-proxy/network-proxy-bridge.js +193 -43
- package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +2 -5
- package/dist_ts/proxies/smart-proxy/route-connection-handler.js +25 -146
- package/dist_ts/proxies/smart-proxy/route-helpers/index.d.ts +7 -0
- package/dist_ts/proxies/smart-proxy/route-helpers/index.js +9 -0
- package/dist_ts/proxies/smart-proxy/route-helpers.d.ts +54 -1
- package/dist_ts/proxies/smart-proxy/route-helpers.js +102 -1
- package/dist_ts/proxies/smart-proxy/route-manager.d.ts +3 -9
- package/dist_ts/proxies/smart-proxy/route-manager.js +3 -115
- package/dist_ts/proxies/smart-proxy/smart-proxy.d.ts +72 -10
- package/dist_ts/proxies/smart-proxy/smart-proxy.js +135 -268
- package/dist_ts/proxies/smart-proxy/timeout-manager.js +3 -3
- package/dist_ts/proxies/smart-proxy/utils/index.d.ts +12 -0
- package/dist_ts/proxies/smart-proxy/utils/index.js +19 -0
- package/dist_ts/proxies/smart-proxy/utils/route-helpers.d.ts +174 -0
- package/dist_ts/proxies/smart-proxy/utils/route-helpers.js +332 -0
- package/dist_ts/proxies/smart-proxy/utils/route-migration-utils.d.ts +51 -0
- package/dist_ts/proxies/smart-proxy/utils/route-migration-utils.js +124 -0
- package/dist_ts/proxies/smart-proxy/utils/route-patterns.d.ts +131 -0
- package/dist_ts/proxies/smart-proxy/utils/route-patterns.js +217 -0
- package/dist_ts/proxies/smart-proxy/utils/route-utils.d.ts +79 -0
- package/dist_ts/proxies/smart-proxy/utils/route-utils.js +266 -0
- package/dist_ts/proxies/smart-proxy/utils/route-validators.d.ts +73 -0
- package/dist_ts/proxies/smart-proxy/utils/route-validators.js +242 -0
- package/package.json +1 -1
- package/readme.md +139 -111
- package/readme.plan.md +164 -312
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/certificate/index.ts +17 -9
- package/ts/certificate/models/certificate-types.ts +37 -16
- package/ts/certificate/providers/cert-provisioner.ts +247 -54
- package/ts/forwarding/config/forwarding-types.ts +79 -107
- package/ts/forwarding/config/index.ts +4 -2
- package/ts/forwarding/handlers/base-handler.ts +4 -2
- package/ts/forwarding/index.ts +3 -2
- package/ts/http/models/http-types.ts +0 -1
- package/ts/http/port80/acme-interfaces.ts +84 -0
- package/ts/http/port80/port80-handler.ts +61 -15
- package/ts/proxies/smart-proxy/models/interfaces.ts +7 -64
- package/ts/proxies/smart-proxy/models/route-types.ts +152 -22
- package/ts/proxies/smart-proxy/network-proxy-bridge.ts +226 -55
- package/ts/proxies/smart-proxy/route-connection-handler.ts +36 -205
- package/ts/proxies/smart-proxy/route-helpers/index.ts +9 -0
- package/ts/proxies/smart-proxy/route-helpers.ts +165 -11
- package/ts/proxies/smart-proxy/route-manager.ts +3 -130
- package/ts/proxies/smart-proxy/smart-proxy.ts +157 -329
- package/ts/proxies/smart-proxy/timeout-manager.ts +2 -2
- package/ts/proxies/smart-proxy/utils/index.ts +40 -0
- package/ts/proxies/smart-proxy/utils/route-helpers.ts +455 -0
- package/ts/proxies/smart-proxy/utils/route-migration-utils.ts +165 -0
- package/ts/proxies/smart-proxy/utils/route-patterns.ts +309 -0
- package/ts/proxies/smart-proxy/utils/route-utils.ts +330 -0
- package/ts/proxies/smart-proxy/utils/route-validators.ts +269 -0
- package/ts/forwarding/config/domain-config.ts +0 -28
- package/ts/forwarding/config/domain-manager.ts +0 -283
- package/ts/proxies/smart-proxy/connection-handler.ts +0 -1240
- package/ts/proxies/smart-proxy/port-range-manager.ts +0 -211
- /package/ts/proxies/smart-proxy/{domain-config-manager.ts → domain-config-manager.ts.bak} +0 -0
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
import type { ISmartProxyOptions } from './models/interfaces.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Manages port ranges and port-based configuration
|
|
5
|
-
*/
|
|
6
|
-
export class PortRangeManager {
|
|
7
|
-
constructor(private settings: ISmartProxyOptions) {}
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Get all ports that should be listened on
|
|
11
|
-
*/
|
|
12
|
-
public getListeningPorts(): Set<number> {
|
|
13
|
-
const listeningPorts = new Set<number>();
|
|
14
|
-
|
|
15
|
-
// Always include the main fromPort
|
|
16
|
-
listeningPorts.add(this.settings.fromPort);
|
|
17
|
-
|
|
18
|
-
// Add ports from global port ranges if defined
|
|
19
|
-
if (this.settings.globalPortRanges && this.settings.globalPortRanges.length > 0) {
|
|
20
|
-
for (const range of this.settings.globalPortRanges) {
|
|
21
|
-
for (let port = range.from; port <= range.to; port++) {
|
|
22
|
-
listeningPorts.add(port);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return listeningPorts;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Check if a port should use NetworkProxy for forwarding
|
|
32
|
-
*/
|
|
33
|
-
public shouldUseNetworkProxy(port: number): boolean {
|
|
34
|
-
return !!this.settings.useNetworkProxy && this.settings.useNetworkProxy.includes(port);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Check if port should use global forwarding
|
|
39
|
-
*/
|
|
40
|
-
public shouldUseGlobalForwarding(port: number): boolean {
|
|
41
|
-
return (
|
|
42
|
-
!!this.settings.forwardAllGlobalRanges &&
|
|
43
|
-
this.isPortInGlobalRanges(port)
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Check if a port is in global ranges
|
|
49
|
-
*/
|
|
50
|
-
public isPortInGlobalRanges(port: number): boolean {
|
|
51
|
-
return (
|
|
52
|
-
this.settings.globalPortRanges &&
|
|
53
|
-
this.isPortInRanges(port, this.settings.globalPortRanges)
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Check if a port falls within the specified ranges
|
|
59
|
-
*/
|
|
60
|
-
public isPortInRanges(port: number, ranges: Array<{ from: number; to: number }>): boolean {
|
|
61
|
-
return ranges.some((range) => port >= range.from && port <= range.to);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Get forwarding port for a specific listening port
|
|
66
|
-
* This determines what port to connect to on the target
|
|
67
|
-
*/
|
|
68
|
-
public getForwardingPort(listeningPort: number): number {
|
|
69
|
-
// If using global forwarding, forward to the original port
|
|
70
|
-
if (this.settings.forwardAllGlobalRanges && this.isPortInGlobalRanges(listeningPort)) {
|
|
71
|
-
return listeningPort;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// Otherwise use the configured toPort
|
|
75
|
-
return this.settings.toPort;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Find domain-specific port ranges that include a given port
|
|
80
|
-
*/
|
|
81
|
-
public findDomainPortRange(port: number): {
|
|
82
|
-
domainIndex: number,
|
|
83
|
-
range: { from: number, to: number }
|
|
84
|
-
} | undefined {
|
|
85
|
-
for (let i = 0; i < this.settings.domainConfigs.length; i++) {
|
|
86
|
-
const domain = this.settings.domainConfigs[i];
|
|
87
|
-
// Get port ranges from forwarding.advanced if available
|
|
88
|
-
const portRanges = domain.forwarding?.advanced?.portRanges;
|
|
89
|
-
if (portRanges && portRanges.length > 0) {
|
|
90
|
-
for (const range of portRanges) {
|
|
91
|
-
if (port >= range.from && port <= range.to) {
|
|
92
|
-
return { domainIndex: i, range };
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
return undefined;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Get a list of all configured ports
|
|
102
|
-
* This includes the fromPort, NetworkProxy ports, and ports from all ranges
|
|
103
|
-
*/
|
|
104
|
-
public getAllConfiguredPorts(): number[] {
|
|
105
|
-
const ports = new Set<number>();
|
|
106
|
-
|
|
107
|
-
// Add main listening port
|
|
108
|
-
ports.add(this.settings.fromPort);
|
|
109
|
-
|
|
110
|
-
// Add NetworkProxy port if configured
|
|
111
|
-
if (this.settings.networkProxyPort) {
|
|
112
|
-
ports.add(this.settings.networkProxyPort);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// Add NetworkProxy ports
|
|
116
|
-
if (this.settings.useNetworkProxy) {
|
|
117
|
-
for (const port of this.settings.useNetworkProxy) {
|
|
118
|
-
ports.add(port);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
// Add global port ranges
|
|
124
|
-
if (this.settings.globalPortRanges) {
|
|
125
|
-
for (const range of this.settings.globalPortRanges) {
|
|
126
|
-
for (let port = range.from; port <= range.to; port++) {
|
|
127
|
-
ports.add(port);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
// Add domain-specific port ranges
|
|
133
|
-
for (const domain of this.settings.domainConfigs) {
|
|
134
|
-
// Get port ranges from forwarding.advanced
|
|
135
|
-
const portRanges = domain.forwarding?.advanced?.portRanges;
|
|
136
|
-
if (portRanges && portRanges.length > 0) {
|
|
137
|
-
for (const range of portRanges) {
|
|
138
|
-
for (let port = range.from; port <= range.to; port++) {
|
|
139
|
-
ports.add(port);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
// Add domain-specific NetworkProxy port if configured in forwarding.advanced
|
|
145
|
-
const networkProxyPort = domain.forwarding?.advanced?.networkProxyPort;
|
|
146
|
-
if (networkProxyPort) {
|
|
147
|
-
ports.add(networkProxyPort);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
return Array.from(ports);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Validate port configuration
|
|
156
|
-
* Returns array of warning messages
|
|
157
|
-
*/
|
|
158
|
-
public validateConfiguration(): string[] {
|
|
159
|
-
const warnings: string[] = [];
|
|
160
|
-
|
|
161
|
-
// Check for overlapping port ranges
|
|
162
|
-
const portMappings = new Map<number, string[]>();
|
|
163
|
-
|
|
164
|
-
// Track global port ranges
|
|
165
|
-
if (this.settings.globalPortRanges) {
|
|
166
|
-
for (const range of this.settings.globalPortRanges) {
|
|
167
|
-
for (let port = range.from; port <= range.to; port++) {
|
|
168
|
-
if (!portMappings.has(port)) {
|
|
169
|
-
portMappings.set(port, []);
|
|
170
|
-
}
|
|
171
|
-
portMappings.get(port)!.push('Global Port Range');
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// Track domain-specific port ranges
|
|
177
|
-
for (const domain of this.settings.domainConfigs) {
|
|
178
|
-
// Get port ranges from forwarding.advanced
|
|
179
|
-
const portRanges = domain.forwarding?.advanced?.portRanges;
|
|
180
|
-
if (portRanges && portRanges.length > 0) {
|
|
181
|
-
for (const range of portRanges) {
|
|
182
|
-
for (let port = range.from; port <= range.to; port++) {
|
|
183
|
-
if (!portMappings.has(port)) {
|
|
184
|
-
portMappings.set(port, []);
|
|
185
|
-
}
|
|
186
|
-
portMappings.get(port)!.push(`Domain: ${domain.domains.join(', ')}`);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
// Check for ports with multiple mappings
|
|
193
|
-
for (const [port, mappings] of portMappings.entries()) {
|
|
194
|
-
if (mappings.length > 1) {
|
|
195
|
-
warnings.push(`Port ${port} has multiple mappings: ${mappings.join(', ')}`);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
// Check if main ports are used elsewhere
|
|
200
|
-
if (portMappings.has(this.settings.fromPort) && portMappings.get(this.settings.fromPort)!.length > 0) {
|
|
201
|
-
warnings.push(`Main listening port ${this.settings.fromPort} is also used in port ranges`);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
if (this.settings.networkProxyPort && portMappings.has(this.settings.networkProxyPort)) {
|
|
205
|
-
warnings.push(`NetworkProxy port ${this.settings.networkProxyPort} is also used in port ranges`);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
return warnings;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
File without changes
|