@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.
Files changed (80) hide show
  1. package/dist_ts/00_commitinfo_data.js +1 -1
  2. package/dist_ts/certificate/index.d.ts +10 -4
  3. package/dist_ts/certificate/index.js +5 -7
  4. package/dist_ts/certificate/models/certificate-types.d.ts +35 -15
  5. package/dist_ts/certificate/providers/cert-provisioner.d.ts +41 -15
  6. package/dist_ts/certificate/providers/cert-provisioner.js +201 -41
  7. package/dist_ts/forwarding/config/forwarding-types.d.ts +40 -76
  8. package/dist_ts/forwarding/config/forwarding-types.js +19 -18
  9. package/dist_ts/forwarding/config/index.d.ts +4 -2
  10. package/dist_ts/forwarding/config/index.js +5 -3
  11. package/dist_ts/forwarding/handlers/base-handler.js +3 -1
  12. package/dist_ts/forwarding/index.d.ts +5 -6
  13. package/dist_ts/forwarding/index.js +3 -3
  14. package/dist_ts/http/models/http-types.js +1 -1
  15. package/dist_ts/http/port80/acme-interfaces.d.ts +30 -0
  16. package/dist_ts/http/port80/acme-interfaces.js +46 -1
  17. package/dist_ts/http/port80/port80-handler.d.ts +17 -2
  18. package/dist_ts/http/port80/port80-handler.js +49 -11
  19. package/dist_ts/proxies/smart-proxy/models/interfaces.d.ts +2 -61
  20. package/dist_ts/proxies/smart-proxy/models/interfaces.js +5 -4
  21. package/dist_ts/proxies/smart-proxy/models/route-types.d.ts +118 -4
  22. package/dist_ts/proxies/smart-proxy/network-proxy-bridge.d.ts +70 -4
  23. package/dist_ts/proxies/smart-proxy/network-proxy-bridge.js +193 -43
  24. package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +2 -5
  25. package/dist_ts/proxies/smart-proxy/route-connection-handler.js +25 -146
  26. package/dist_ts/proxies/smart-proxy/route-helpers/index.d.ts +7 -0
  27. package/dist_ts/proxies/smart-proxy/route-helpers/index.js +9 -0
  28. package/dist_ts/proxies/smart-proxy/route-helpers.d.ts +54 -1
  29. package/dist_ts/proxies/smart-proxy/route-helpers.js +102 -1
  30. package/dist_ts/proxies/smart-proxy/route-manager.d.ts +3 -9
  31. package/dist_ts/proxies/smart-proxy/route-manager.js +3 -115
  32. package/dist_ts/proxies/smart-proxy/smart-proxy.d.ts +72 -10
  33. package/dist_ts/proxies/smart-proxy/smart-proxy.js +135 -268
  34. package/dist_ts/proxies/smart-proxy/timeout-manager.js +3 -3
  35. package/dist_ts/proxies/smart-proxy/utils/index.d.ts +12 -0
  36. package/dist_ts/proxies/smart-proxy/utils/index.js +19 -0
  37. package/dist_ts/proxies/smart-proxy/utils/route-helpers.d.ts +174 -0
  38. package/dist_ts/proxies/smart-proxy/utils/route-helpers.js +332 -0
  39. package/dist_ts/proxies/smart-proxy/utils/route-migration-utils.d.ts +51 -0
  40. package/dist_ts/proxies/smart-proxy/utils/route-migration-utils.js +124 -0
  41. package/dist_ts/proxies/smart-proxy/utils/route-patterns.d.ts +131 -0
  42. package/dist_ts/proxies/smart-proxy/utils/route-patterns.js +217 -0
  43. package/dist_ts/proxies/smart-proxy/utils/route-utils.d.ts +79 -0
  44. package/dist_ts/proxies/smart-proxy/utils/route-utils.js +266 -0
  45. package/dist_ts/proxies/smart-proxy/utils/route-validators.d.ts +73 -0
  46. package/dist_ts/proxies/smart-proxy/utils/route-validators.js +242 -0
  47. package/package.json +1 -1
  48. package/readme.md +139 -111
  49. package/readme.plan.md +164 -312
  50. package/ts/00_commitinfo_data.ts +1 -1
  51. package/ts/certificate/index.ts +17 -9
  52. package/ts/certificate/models/certificate-types.ts +37 -16
  53. package/ts/certificate/providers/cert-provisioner.ts +247 -54
  54. package/ts/forwarding/config/forwarding-types.ts +79 -107
  55. package/ts/forwarding/config/index.ts +4 -2
  56. package/ts/forwarding/handlers/base-handler.ts +4 -2
  57. package/ts/forwarding/index.ts +3 -2
  58. package/ts/http/models/http-types.ts +0 -1
  59. package/ts/http/port80/acme-interfaces.ts +84 -0
  60. package/ts/http/port80/port80-handler.ts +61 -15
  61. package/ts/proxies/smart-proxy/models/interfaces.ts +7 -64
  62. package/ts/proxies/smart-proxy/models/route-types.ts +152 -22
  63. package/ts/proxies/smart-proxy/network-proxy-bridge.ts +226 -55
  64. package/ts/proxies/smart-proxy/route-connection-handler.ts +36 -205
  65. package/ts/proxies/smart-proxy/route-helpers/index.ts +9 -0
  66. package/ts/proxies/smart-proxy/route-helpers.ts +165 -11
  67. package/ts/proxies/smart-proxy/route-manager.ts +3 -130
  68. package/ts/proxies/smart-proxy/smart-proxy.ts +157 -329
  69. package/ts/proxies/smart-proxy/timeout-manager.ts +2 -2
  70. package/ts/proxies/smart-proxy/utils/index.ts +40 -0
  71. package/ts/proxies/smart-proxy/utils/route-helpers.ts +455 -0
  72. package/ts/proxies/smart-proxy/utils/route-migration-utils.ts +165 -0
  73. package/ts/proxies/smart-proxy/utils/route-patterns.ts +309 -0
  74. package/ts/proxies/smart-proxy/utils/route-utils.ts +330 -0
  75. package/ts/proxies/smart-proxy/utils/route-validators.ts +269 -0
  76. package/ts/forwarding/config/domain-config.ts +0 -28
  77. package/ts/forwarding/config/domain-manager.ts +0 -283
  78. package/ts/proxies/smart-proxy/connection-handler.ts +0 -1240
  79. package/ts/proxies/smart-proxy/port-range-manager.ts +0 -211
  80. /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
- }