@push.rocks/smartproxy 12.0.0 → 13.1.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/acme/acme-factory.d.ts +17 -0
- package/dist_ts/certificate/acme/acme-factory.js +40 -0
- package/dist_ts/certificate/acme/challenge-handler.d.ts +44 -0
- package/dist_ts/certificate/acme/challenge-handler.js +92 -0
- package/dist_ts/certificate/acme/index.d.ts +4 -0
- package/dist_ts/certificate/acme/index.js +5 -0
- package/dist_ts/certificate/events/certificate-events.d.ts +33 -0
- package/dist_ts/certificate/events/certificate-events.js +38 -0
- package/dist_ts/certificate/index.d.ts +24 -0
- package/dist_ts/certificate/index.js +39 -0
- package/dist_ts/certificate/models/certificate-types.d.ts +77 -0
- package/dist_ts/certificate/models/certificate-types.js +2 -0
- package/dist_ts/certificate/providers/cert-provisioner.d.ts +93 -0
- package/dist_ts/certificate/providers/cert-provisioner.js +262 -0
- package/dist_ts/certificate/providers/index.d.ts +4 -0
- package/dist_ts/certificate/providers/index.js +5 -0
- package/dist_ts/certificate/storage/file-storage.d.ts +66 -0
- package/dist_ts/certificate/storage/file-storage.js +194 -0
- package/dist_ts/certificate/storage/index.d.ts +4 -0
- package/dist_ts/certificate/storage/index.js +5 -0
- package/dist_ts/certificate/utils/certificate-helpers.d.ts +17 -0
- package/dist_ts/certificate/utils/certificate-helpers.js +45 -0
- package/dist_ts/common/eventUtils.d.ts +1 -1
- package/dist_ts/common/port80-adapter.d.ts +1 -1
- package/dist_ts/core/events/index.d.ts +4 -0
- package/dist_ts/core/events/index.js +5 -0
- package/dist_ts/core/index.d.ts +6 -0
- package/dist_ts/core/index.js +8 -0
- package/dist_ts/core/models/common-types.d.ts +82 -0
- package/dist_ts/core/models/common-types.js +15 -0
- package/dist_ts/core/models/index.d.ts +4 -0
- package/dist_ts/core/models/index.js +5 -0
- package/dist_ts/core/utils/event-utils.d.ts +15 -0
- package/dist_ts/core/utils/event-utils.js +19 -0
- package/dist_ts/core/utils/index.d.ts +6 -0
- package/dist_ts/core/utils/index.js +7 -0
- package/dist_ts/core/utils/ip-utils.d.ts +53 -0
- package/dist_ts/core/utils/ip-utils.js +153 -0
- package/dist_ts/core/utils/validation-utils.d.ts +61 -0
- package/dist_ts/core/utils/validation-utils.js +149 -0
- package/dist_ts/forwarding/config/domain-config.d.ts +12 -0
- package/dist_ts/forwarding/config/domain-config.js +12 -0
- package/dist_ts/forwarding/config/domain-manager.d.ts +86 -0
- package/dist_ts/forwarding/config/domain-manager.js +242 -0
- package/dist_ts/forwarding/config/forwarding-types.d.ts +104 -0
- package/dist_ts/forwarding/config/forwarding-types.js +50 -0
- package/dist_ts/forwarding/config/index.d.ts +6 -0
- package/dist_ts/forwarding/config/index.js +7 -0
- package/dist_ts/forwarding/factory/forwarding-factory.d.ts +25 -0
- package/dist_ts/forwarding/factory/forwarding-factory.js +138 -0
- package/dist_ts/forwarding/factory/index.d.ts +4 -0
- package/dist_ts/forwarding/factory/index.js +5 -0
- package/dist_ts/forwarding/handlers/base-handler.d.ts +55 -0
- package/dist_ts/forwarding/handlers/base-handler.js +94 -0
- package/dist_ts/forwarding/handlers/http-handler.d.ts +30 -0
- package/dist_ts/forwarding/handlers/http-handler.js +131 -0
- package/dist_ts/forwarding/handlers/https-passthrough-handler.d.ts +29 -0
- package/dist_ts/forwarding/handlers/https-passthrough-handler.js +162 -0
- package/dist_ts/forwarding/handlers/https-terminate-to-http-handler.d.ts +36 -0
- package/dist_ts/forwarding/handlers/https-terminate-to-http-handler.js +229 -0
- package/dist_ts/forwarding/handlers/https-terminate-to-https-handler.d.ts +35 -0
- package/dist_ts/forwarding/handlers/https-terminate-to-https-handler.js +254 -0
- package/dist_ts/forwarding/handlers/index.d.ts +8 -0
- package/dist_ts/forwarding/handlers/index.js +9 -0
- package/dist_ts/forwarding/index.d.ts +19 -0
- package/dist_ts/forwarding/index.js +25 -0
- package/dist_ts/http/index.d.ts +15 -0
- package/dist_ts/http/index.js +20 -0
- package/dist_ts/http/models/http-types.d.ts +81 -0
- package/dist_ts/http/models/http-types.js +62 -0
- package/dist_ts/http/port80/acme-interfaces.d.ts +78 -0
- package/dist_ts/http/port80/acme-interfaces.js +6 -0
- package/dist_ts/http/port80/challenge-responder.d.ts +53 -0
- package/dist_ts/http/port80/challenge-responder.js +203 -0
- package/dist_ts/http/port80/index.d.ts +6 -0
- package/dist_ts/http/port80/index.js +9 -0
- package/dist_ts/http/port80/port80-handler.d.ts +121 -0
- package/dist_ts/http/port80/port80-handler.js +554 -0
- package/dist_ts/http/redirects/index.d.ts +4 -0
- package/dist_ts/http/redirects/index.js +5 -0
- package/dist_ts/http/router/index.d.ts +4 -0
- package/dist_ts/http/router/index.js +5 -0
- package/dist_ts/http/router/proxy-router.d.ts +115 -0
- package/dist_ts/http/router/proxy-router.js +325 -0
- package/dist_ts/index.d.ts +15 -8
- package/dist_ts/index.js +26 -10
- package/dist_ts/networkproxy/classes.np.certificatemanager.js +2 -2
- package/dist_ts/networkproxy/index.d.ts +1 -6
- package/dist_ts/networkproxy/index.js +4 -8
- package/dist_ts/plugins.d.ts +2 -1
- package/dist_ts/plugins.js +3 -2
- package/dist_ts/port80handler/classes.port80handler.d.ts +8 -136
- package/dist_ts/port80handler/classes.port80handler.js +14 -567
- package/dist_ts/proxies/index.d.ts +6 -0
- package/dist_ts/proxies/index.js +8 -0
- package/dist_ts/proxies/network-proxy/certificate-manager.d.ts +77 -0
- package/dist_ts/proxies/network-proxy/certificate-manager.js +373 -0
- package/dist_ts/proxies/network-proxy/connection-pool.d.ts +47 -0
- package/dist_ts/proxies/network-proxy/connection-pool.js +210 -0
- package/dist_ts/proxies/network-proxy/index.d.ts +10 -0
- package/dist_ts/proxies/network-proxy/index.js +12 -0
- package/dist_ts/proxies/network-proxy/models/index.d.ts +4 -0
- package/dist_ts/proxies/network-proxy/models/index.js +5 -0
- package/dist_ts/proxies/network-proxy/models/types.d.ts +80 -0
- package/dist_ts/proxies/network-proxy/models/types.js +35 -0
- package/dist_ts/proxies/network-proxy/network-proxy.d.ts +118 -0
- package/dist_ts/proxies/network-proxy/network-proxy.js +387 -0
- package/dist_ts/proxies/network-proxy/request-handler.d.ts +57 -0
- package/dist_ts/proxies/network-proxy/request-handler.js +394 -0
- package/dist_ts/proxies/network-proxy/websocket-handler.d.ts +38 -0
- package/dist_ts/proxies/network-proxy/websocket-handler.js +188 -0
- package/dist_ts/proxies/nftables-proxy/index.d.ts +5 -0
- package/dist_ts/proxies/nftables-proxy/index.js +6 -0
- package/dist_ts/proxies/nftables-proxy/models/errors.d.ts +15 -0
- package/dist_ts/proxies/nftables-proxy/models/errors.js +28 -0
- package/dist_ts/proxies/nftables-proxy/models/index.d.ts +5 -0
- package/dist_ts/proxies/nftables-proxy/models/index.js +6 -0
- package/dist_ts/proxies/nftables-proxy/models/interfaces.d.ts +75 -0
- package/dist_ts/proxies/nftables-proxy/models/interfaces.js +5 -0
- package/dist_ts/proxies/nftables-proxy/nftables-proxy.d.ts +136 -0
- package/dist_ts/proxies/nftables-proxy/nftables-proxy.js +1516 -0
- package/dist_ts/proxies/smart-proxy/connection-handler.d.ts +39 -0
- package/dist_ts/proxies/smart-proxy/connection-handler.js +894 -0
- package/dist_ts/proxies/smart-proxy/connection-manager.d.ts +78 -0
- package/dist_ts/proxies/smart-proxy/connection-manager.js +378 -0
- package/dist_ts/proxies/smart-proxy/domain-config-manager.d.ts +95 -0
- package/dist_ts/proxies/smart-proxy/domain-config-manager.js +255 -0
- package/dist_ts/proxies/smart-proxy/index.d.ts +13 -0
- package/dist_ts/proxies/smart-proxy/index.js +17 -0
- package/dist_ts/proxies/smart-proxy/models/index.d.ts +4 -0
- package/dist_ts/proxies/smart-proxy/models/index.js +5 -0
- package/dist_ts/proxies/smart-proxy/models/interfaces.d.ts +107 -0
- package/dist_ts/proxies/smart-proxy/models/interfaces.js +2 -0
- package/dist_ts/proxies/smart-proxy/network-proxy-bridge.d.ts +62 -0
- package/dist_ts/proxies/smart-proxy/network-proxy-bridge.js +316 -0
- package/dist_ts/proxies/smart-proxy/port-range-manager.d.ts +56 -0
- package/dist_ts/proxies/smart-proxy/port-range-manager.js +176 -0
- package/dist_ts/proxies/smart-proxy/security-manager.d.ts +64 -0
- package/dist_ts/proxies/smart-proxy/security-manager.js +149 -0
- package/dist_ts/proxies/smart-proxy/smart-proxy.d.ts +63 -0
- package/dist_ts/proxies/smart-proxy/smart-proxy.js +523 -0
- package/dist_ts/proxies/smart-proxy/timeout-manager.d.ts +47 -0
- package/dist_ts/proxies/smart-proxy/timeout-manager.js +154 -0
- package/dist_ts/proxies/smart-proxy/tls-manager.d.ts +57 -0
- package/dist_ts/proxies/smart-proxy/tls-manager.js +132 -0
- package/dist_ts/smartproxy/classes.pp.networkproxybridge.d.ts +2 -2
- package/dist_ts/smartproxy/classes.pp.networkproxybridge.js +1 -1
- package/dist_ts/smartproxy/classes.pp.tlsmanager.js +2 -2
- package/dist_ts/smartproxy/classes.smartproxy.js +3 -3
- package/dist_ts/tls/alerts/index.d.ts +4 -0
- package/dist_ts/tls/alerts/index.js +5 -0
- package/dist_ts/tls/alerts/tls-alert.d.ts +150 -0
- package/dist_ts/tls/alerts/tls-alert.js +226 -0
- package/dist_ts/tls/index.d.ts +18 -0
- package/dist_ts/tls/index.js +27 -0
- package/dist_ts/tls/sni/client-hello-parser.d.ts +100 -0
- package/dist_ts/tls/sni/client-hello-parser.js +463 -0
- package/dist_ts/tls/sni/index.d.ts +4 -0
- package/dist_ts/tls/sni/index.js +5 -0
- package/dist_ts/tls/sni/sni-extraction.d.ts +58 -0
- package/dist_ts/tls/sni/sni-extraction.js +275 -0
- package/dist_ts/tls/sni/sni-handler.d.ts +154 -0
- package/dist_ts/tls/sni/sni-handler.js +191 -0
- package/dist_ts/tls/utils/index.d.ts +4 -0
- package/dist_ts/tls/utils/index.js +5 -0
- package/dist_ts/tls/utils/tls-utils.d.ts +158 -0
- package/dist_ts/tls/utils/tls-utils.js +187 -0
- package/package.json +1 -1
- package/readme.md +89 -21
- package/readme.plan.md +253 -469
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/certificate/acme/acme-factory.ts +48 -0
- package/ts/certificate/acme/challenge-handler.ts +110 -0
- package/ts/certificate/acme/index.ts +3 -0
- package/ts/certificate/events/certificate-events.ts +36 -0
- package/ts/certificate/index.ts +67 -0
- package/ts/certificate/models/certificate-types.ts +88 -0
- package/ts/certificate/providers/cert-provisioner.ts +326 -0
- package/ts/certificate/providers/index.ts +3 -0
- package/ts/certificate/storage/file-storage.ts +234 -0
- package/ts/certificate/storage/index.ts +3 -0
- package/ts/certificate/utils/certificate-helpers.ts +50 -0
- package/ts/common/eventUtils.ts +1 -1
- package/ts/common/port80-adapter.ts +1 -1
- package/ts/core/events/index.ts +3 -0
- package/ts/core/index.ts +8 -0
- package/ts/core/models/common-types.ts +91 -0
- package/ts/core/models/index.ts +5 -0
- package/ts/core/utils/event-utils.ts +34 -0
- package/ts/core/utils/index.ts +7 -0
- package/ts/core/utils/ip-utils.ts +175 -0
- package/ts/core/utils/validation-utils.ts +177 -0
- package/ts/{smartproxy/forwarding → forwarding/config}/domain-config.ts +1 -1
- package/ts/{smartproxy/forwarding → forwarding/config}/domain-manager.ts +8 -8
- package/ts/{smartproxy/types/forwarding.types.ts → forwarding/config/forwarding-types.ts} +6 -6
- package/ts/forwarding/config/index.ts +7 -0
- package/ts/{smartproxy/forwarding/forwarding.factory.ts → forwarding/factory/forwarding-factory.ts} +12 -11
- package/ts/forwarding/factory/index.ts +5 -0
- package/ts/{smartproxy/forwarding/forwarding.handler.ts → forwarding/handlers/base-handler.ts} +2 -2
- package/ts/{smartproxy/forwarding/http.handler.ts → forwarding/handlers/http-handler.ts} +13 -4
- package/ts/{smartproxy/forwarding/https-passthrough.handler.ts → forwarding/handlers/https-passthrough-handler.ts} +13 -4
- package/ts/{smartproxy/forwarding/https-terminate-to-http.handler.ts → forwarding/handlers/https-terminate-to-http-handler.ts} +3 -3
- package/ts/{smartproxy/forwarding/https-terminate-to-https.handler.ts → forwarding/handlers/https-terminate-to-https-handler.ts} +3 -3
- package/ts/forwarding/handlers/index.ts +9 -0
- package/ts/forwarding/index.ts +34 -0
- package/ts/http/index.ts +23 -0
- package/ts/http/models/http-types.ts +105 -0
- package/ts/http/port80/acme-interfaces.ts +85 -0
- package/ts/http/port80/challenge-responder.ts +246 -0
- package/ts/http/port80/index.ts +13 -0
- package/ts/{port80handler/classes.port80handler.ts → http/port80/port80-handler.ts} +164 -161
- package/ts/http/redirects/index.ts +3 -0
- package/ts/http/router/index.ts +5 -0
- package/ts/{classes.router.ts → http/router/proxy-router.ts} +27 -20
- package/ts/index.ts +32 -9
- package/ts/plugins.ts +2 -1
- package/ts/proxies/index.ts +8 -0
- package/ts/{networkproxy/classes.np.certificatemanager.ts → proxies/network-proxy/certificate-manager.ts} +17 -16
- package/ts/{networkproxy/classes.np.connectionpool.ts → proxies/network-proxy/connection-pool.ts} +3 -3
- package/ts/proxies/network-proxy/index.ts +13 -0
- package/ts/proxies/network-proxy/models/index.ts +4 -0
- package/ts/{networkproxy/classes.np.types.ts → proxies/network-proxy/models/types.ts} +7 -11
- package/ts/{networkproxy/classes.np.networkproxy.ts → proxies/network-proxy/network-proxy.ts} +31 -24
- package/ts/{networkproxy/classes.np.requesthandler.ts → proxies/network-proxy/request-handler.ts} +12 -7
- package/ts/{networkproxy/classes.np.websockethandler.ts → proxies/network-proxy/websocket-handler.ts} +6 -6
- package/ts/proxies/nftables-proxy/index.ts +5 -0
- package/ts/proxies/nftables-proxy/models/errors.ts +30 -0
- package/ts/proxies/nftables-proxy/models/index.ts +5 -0
- package/ts/proxies/nftables-proxy/models/interfaces.ts +94 -0
- package/ts/{nfttablesproxy/classes.nftablesproxy.ts → proxies/nftables-proxy/nftables-proxy.ts} +24 -126
- package/ts/{smartproxy/classes.pp.connectionhandler.ts → proxies/smart-proxy/connection-handler.ts} +12 -12
- package/ts/{smartproxy/classes.pp.connectionmanager.ts → proxies/smart-proxy/connection-manager.ts} +8 -8
- package/ts/{smartproxy/classes.pp.domainconfigmanager.ts → proxies/smart-proxy/domain-config-manager.ts} +15 -14
- package/ts/proxies/smart-proxy/index.ts +18 -0
- package/ts/proxies/smart-proxy/models/index.ts +4 -0
- package/ts/{smartproxy/classes.pp.interfaces.ts → proxies/smart-proxy/models/interfaces.ts} +12 -8
- package/ts/{smartproxy/classes.pp.networkproxybridge.ts → proxies/smart-proxy/network-proxy-bridge.ts} +14 -14
- package/ts/{smartproxy/classes.pp.portrangemanager.ts → proxies/smart-proxy/port-range-manager.ts} +1 -1
- package/ts/{smartproxy/classes.pp.securitymanager.ts → proxies/smart-proxy/security-manager.ts} +3 -3
- package/ts/{smartproxy/classes.smartproxy.ts → proxies/smart-proxy/smart-proxy.ts} +29 -24
- package/ts/{smartproxy/classes.pp.timeoutmanager.ts → proxies/smart-proxy/timeout-manager.ts} +3 -3
- package/ts/{smartproxy/classes.pp.tlsmanager.ts → proxies/smart-proxy/tls-manager.ts} +3 -3
- package/ts/tls/alerts/index.ts +3 -0
- package/ts/{smartproxy/classes.pp.tlsalert.ts → tls/alerts/tls-alert.ts} +44 -43
- package/ts/tls/index.ts +33 -0
- package/ts/tls/sni/client-hello-parser.ts +629 -0
- package/ts/tls/sni/index.ts +3 -0
- package/ts/tls/sni/sni-extraction.ts +353 -0
- package/ts/tls/sni/sni-handler.ts +264 -0
- package/ts/tls/utils/index.ts +3 -0
- package/ts/tls/utils/tls-utils.ts +201 -0
- package/ts/common/acmeFactory.ts +0 -23
- package/ts/helpers.certificates.ts +0 -30
- package/ts/networkproxy/index.ts +0 -7
- package/ts/smartproxy/classes.pp.certprovisioner.ts +0 -200
- package/ts/smartproxy/classes.pp.snihandler.ts +0 -1281
- package/ts/smartproxy/forwarding/index.ts +0 -52
|
@@ -1,21 +1,26 @@
|
|
|
1
|
-
import * as plugins from '
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
import {
|
|
15
|
-
import
|
|
16
|
-
import {
|
|
17
|
-
|
|
18
|
-
import type {
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
2
|
+
|
|
3
|
+
// Importing from the new structure
|
|
4
|
+
import { ConnectionManager } from './connection-manager.js';
|
|
5
|
+
import { SecurityManager } from './security-manager.js';
|
|
6
|
+
import { DomainConfigManager } from './domain-config-manager.js';
|
|
7
|
+
import { TlsManager } from './tls-manager.js';
|
|
8
|
+
import { NetworkProxyBridge } from './network-proxy-bridge.js';
|
|
9
|
+
import { TimeoutManager } from './timeout-manager.js';
|
|
10
|
+
import { PortRangeManager } from './port-range-manager.js';
|
|
11
|
+
import { ConnectionHandler } from './connection-handler.js';
|
|
12
|
+
|
|
13
|
+
// External dependencies from migrated modules
|
|
14
|
+
import { Port80Handler } from '../../http/port80/port80-handler.js';
|
|
15
|
+
import { CertProvisioner } from '../../certificate/providers/cert-provisioner.js';
|
|
16
|
+
import type { ICertificateData } from '../../certificate/models/certificate-types.js';
|
|
17
|
+
import { buildPort80Handler } from '../../certificate/acme/acme-factory.js';
|
|
18
|
+
import type { TForwardingType } from '../../forwarding/config/forwarding-types.js';
|
|
19
|
+
import { createPort80HandlerOptions } from '../../common/port80-adapter.js';
|
|
20
|
+
|
|
21
|
+
// Import types from models
|
|
22
|
+
import type { ISmartProxyOptions, IDomainConfig } from './models/interfaces.js';
|
|
23
|
+
// Provide backward compatibility types
|
|
19
24
|
export type { ISmartProxyOptions as IPortProxySettings, IDomainConfig };
|
|
20
25
|
|
|
21
26
|
/**
|
|
@@ -58,12 +63,12 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
58
63
|
keepAliveInitialDelay: settingsArg.keepAliveInitialDelay || 10000,
|
|
59
64
|
maxPendingDataSize: settingsArg.maxPendingDataSize || 10 * 1024 * 1024,
|
|
60
65
|
disableInactivityCheck: settingsArg.disableInactivityCheck || false,
|
|
61
|
-
enableKeepAliveProbes:
|
|
66
|
+
enableKeepAliveProbes:
|
|
62
67
|
settingsArg.enableKeepAliveProbes !== undefined ? settingsArg.enableKeepAliveProbes : true,
|
|
63
68
|
enableDetailedLogging: settingsArg.enableDetailedLogging || false,
|
|
64
69
|
enableTlsDebugLogging: settingsArg.enableTlsDebugLogging || false,
|
|
65
70
|
enableRandomizedTimeouts: settingsArg.enableRandomizedTimeouts || false,
|
|
66
|
-
allowSessionTicket:
|
|
71
|
+
allowSessionTicket:
|
|
67
72
|
settingsArg.allowSessionTicket !== undefined ? settingsArg.allowSessionTicket : true,
|
|
68
73
|
maxConnectionsPerIP: settingsArg.maxConnectionsPerIP || 100,
|
|
69
74
|
connectionRateLimitPerMinute: settingsArg.connectionRateLimitPerMinute || 300,
|
|
@@ -154,7 +159,7 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
154
159
|
public async start() {
|
|
155
160
|
// Don't start if already shutting down
|
|
156
161
|
if (this.isShuttingDown) {
|
|
157
|
-
console.log("Cannot start
|
|
162
|
+
console.log("Cannot start SmartProxy while it's shutting down");
|
|
158
163
|
return;
|
|
159
164
|
}
|
|
160
165
|
|
|
@@ -262,7 +267,7 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
262
267
|
server.listen(port, () => {
|
|
263
268
|
const isNetworkProxyPort = this.settings.useNetworkProxy?.includes(port);
|
|
264
269
|
console.log(
|
|
265
|
-
`
|
|
270
|
+
`SmartProxy -> OK: Now listening on port ${port}${
|
|
266
271
|
this.settings.sniEnabled && !isNetworkProxyPort ? ' (SNI passthrough enabled)' : ''
|
|
267
272
|
}${isNetworkProxyPort ? ' (NetworkProxy forwarding enabled)' : ''}`
|
|
268
273
|
);
|
|
@@ -347,7 +352,7 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
347
352
|
* Stop the proxy server
|
|
348
353
|
*/
|
|
349
354
|
public async stop() {
|
|
350
|
-
console.log('
|
|
355
|
+
console.log('SmartProxy shutting down...');
|
|
351
356
|
this.isShuttingDown = true;
|
|
352
357
|
// Stop CertProvisioner if active
|
|
353
358
|
if (this.certProvisioner) {
|
|
@@ -402,7 +407,7 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
402
407
|
// Clear all servers
|
|
403
408
|
this.netServers = [];
|
|
404
409
|
|
|
405
|
-
console.log('
|
|
410
|
+
console.log('SmartProxy shutdown complete.');
|
|
406
411
|
}
|
|
407
412
|
|
|
408
413
|
/**
|
package/ts/{smartproxy/classes.pp.timeoutmanager.ts → proxies/smart-proxy/timeout-manager.ts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IConnectionRecord, ISmartProxyOptions } from './
|
|
1
|
+
import type { IConnectionRecord, ISmartProxyOptions } from './models/interfaces.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Manages timeouts and inactivity tracking for connections
|
|
@@ -36,7 +36,7 @@ export class TimeoutManager {
|
|
|
36
36
|
record.inactivityWarningIssued = false;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
|
|
39
|
+
|
|
40
40
|
/**
|
|
41
41
|
* Calculate effective inactivity timeout based on connection type
|
|
42
42
|
*/
|
|
@@ -91,7 +91,7 @@ export class TimeoutManager {
|
|
|
91
91
|
* @returns The cleanup timer
|
|
92
92
|
*/
|
|
93
93
|
public setupConnectionTimeout(
|
|
94
|
-
record: IConnectionRecord,
|
|
94
|
+
record: IConnectionRecord,
|
|
95
95
|
onTimeout: (record: IConnectionRecord, reason: string) => void
|
|
96
96
|
): NodeJS.Timeout {
|
|
97
97
|
// Clear any existing timer
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as plugins from '
|
|
2
|
-
import type { ISmartProxyOptions } from './
|
|
3
|
-
import { SniHandler } from '
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
2
|
+
import type { ISmartProxyOptions } from './models/interfaces.js';
|
|
3
|
+
import { SniHandler } from '../../tls/sni/sni-handler.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Interface for connection information used for SNI extraction
|
|
@@ -1,52 +1,53 @@
|
|
|
1
|
-
import * as plugins from '
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
2
|
+
import { TlsAlertLevel, TlsAlertDescription, TlsVersion } from '../utils/tls-utils.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
|
-
* TlsAlert class for
|
|
5
|
+
* TlsAlert class for creating and sending TLS alert messages
|
|
5
6
|
*/
|
|
6
7
|
export class TlsAlert {
|
|
7
|
-
//
|
|
8
|
-
static readonly LEVEL_WARNING =
|
|
9
|
-
static readonly LEVEL_FATAL =
|
|
10
|
-
|
|
11
|
-
//
|
|
12
|
-
static readonly CLOSE_NOTIFY =
|
|
13
|
-
static readonly UNEXPECTED_MESSAGE =
|
|
14
|
-
static readonly BAD_RECORD_MAC =
|
|
15
|
-
static readonly DECRYPTION_FAILED =
|
|
16
|
-
static readonly RECORD_OVERFLOW =
|
|
17
|
-
static readonly DECOMPRESSION_FAILURE =
|
|
18
|
-
static readonly HANDSHAKE_FAILURE =
|
|
19
|
-
static readonly NO_CERTIFICATE =
|
|
20
|
-
static readonly BAD_CERTIFICATE =
|
|
21
|
-
static readonly UNSUPPORTED_CERTIFICATE =
|
|
22
|
-
static readonly CERTIFICATE_REVOKED =
|
|
23
|
-
static readonly CERTIFICATE_EXPIRED =
|
|
24
|
-
static readonly CERTIFICATE_UNKNOWN =
|
|
25
|
-
static readonly ILLEGAL_PARAMETER =
|
|
26
|
-
static readonly UNKNOWN_CA =
|
|
27
|
-
static readonly ACCESS_DENIED =
|
|
28
|
-
static readonly DECODE_ERROR =
|
|
29
|
-
static readonly DECRYPT_ERROR =
|
|
30
|
-
static readonly EXPORT_RESTRICTION =
|
|
31
|
-
static readonly PROTOCOL_VERSION =
|
|
32
|
-
static readonly INSUFFICIENT_SECURITY =
|
|
33
|
-
static readonly INTERNAL_ERROR =
|
|
34
|
-
static readonly INAPPROPRIATE_FALLBACK =
|
|
35
|
-
static readonly USER_CANCELED =
|
|
36
|
-
static readonly NO_RENEGOTIATION =
|
|
37
|
-
static readonly MISSING_EXTENSION =
|
|
38
|
-
static readonly UNSUPPORTED_EXTENSION =
|
|
39
|
-
static readonly CERTIFICATE_REQUIRED =
|
|
40
|
-
static readonly UNRECOGNIZED_NAME =
|
|
41
|
-
static readonly BAD_CERTIFICATE_STATUS_RESPONSE =
|
|
42
|
-
static readonly BAD_CERTIFICATE_HASH_VALUE =
|
|
43
|
-
static readonly UNKNOWN_PSK_IDENTITY =
|
|
44
|
-
static readonly CERTIFICATE_REQUIRED_1_3 =
|
|
45
|
-
static readonly NO_APPLICATION_PROTOCOL =
|
|
8
|
+
// Use enum values from TlsAlertLevel
|
|
9
|
+
static readonly LEVEL_WARNING = TlsAlertLevel.WARNING;
|
|
10
|
+
static readonly LEVEL_FATAL = TlsAlertLevel.FATAL;
|
|
11
|
+
|
|
12
|
+
// Use enum values from TlsAlertDescription
|
|
13
|
+
static readonly CLOSE_NOTIFY = TlsAlertDescription.CLOSE_NOTIFY;
|
|
14
|
+
static readonly UNEXPECTED_MESSAGE = TlsAlertDescription.UNEXPECTED_MESSAGE;
|
|
15
|
+
static readonly BAD_RECORD_MAC = TlsAlertDescription.BAD_RECORD_MAC;
|
|
16
|
+
static readonly DECRYPTION_FAILED = TlsAlertDescription.DECRYPTION_FAILED;
|
|
17
|
+
static readonly RECORD_OVERFLOW = TlsAlertDescription.RECORD_OVERFLOW;
|
|
18
|
+
static readonly DECOMPRESSION_FAILURE = TlsAlertDescription.DECOMPRESSION_FAILURE;
|
|
19
|
+
static readonly HANDSHAKE_FAILURE = TlsAlertDescription.HANDSHAKE_FAILURE;
|
|
20
|
+
static readonly NO_CERTIFICATE = TlsAlertDescription.NO_CERTIFICATE;
|
|
21
|
+
static readonly BAD_CERTIFICATE = TlsAlertDescription.BAD_CERTIFICATE;
|
|
22
|
+
static readonly UNSUPPORTED_CERTIFICATE = TlsAlertDescription.UNSUPPORTED_CERTIFICATE;
|
|
23
|
+
static readonly CERTIFICATE_REVOKED = TlsAlertDescription.CERTIFICATE_REVOKED;
|
|
24
|
+
static readonly CERTIFICATE_EXPIRED = TlsAlertDescription.CERTIFICATE_EXPIRED;
|
|
25
|
+
static readonly CERTIFICATE_UNKNOWN = TlsAlertDescription.CERTIFICATE_UNKNOWN;
|
|
26
|
+
static readonly ILLEGAL_PARAMETER = TlsAlertDescription.ILLEGAL_PARAMETER;
|
|
27
|
+
static readonly UNKNOWN_CA = TlsAlertDescription.UNKNOWN_CA;
|
|
28
|
+
static readonly ACCESS_DENIED = TlsAlertDescription.ACCESS_DENIED;
|
|
29
|
+
static readonly DECODE_ERROR = TlsAlertDescription.DECODE_ERROR;
|
|
30
|
+
static readonly DECRYPT_ERROR = TlsAlertDescription.DECRYPT_ERROR;
|
|
31
|
+
static readonly EXPORT_RESTRICTION = TlsAlertDescription.EXPORT_RESTRICTION;
|
|
32
|
+
static readonly PROTOCOL_VERSION = TlsAlertDescription.PROTOCOL_VERSION;
|
|
33
|
+
static readonly INSUFFICIENT_SECURITY = TlsAlertDescription.INSUFFICIENT_SECURITY;
|
|
34
|
+
static readonly INTERNAL_ERROR = TlsAlertDescription.INTERNAL_ERROR;
|
|
35
|
+
static readonly INAPPROPRIATE_FALLBACK = TlsAlertDescription.INAPPROPRIATE_FALLBACK;
|
|
36
|
+
static readonly USER_CANCELED = TlsAlertDescription.USER_CANCELED;
|
|
37
|
+
static readonly NO_RENEGOTIATION = TlsAlertDescription.NO_RENEGOTIATION;
|
|
38
|
+
static readonly MISSING_EXTENSION = TlsAlertDescription.MISSING_EXTENSION;
|
|
39
|
+
static readonly UNSUPPORTED_EXTENSION = TlsAlertDescription.UNSUPPORTED_EXTENSION;
|
|
40
|
+
static readonly CERTIFICATE_REQUIRED = TlsAlertDescription.CERTIFICATE_REQUIRED;
|
|
41
|
+
static readonly UNRECOGNIZED_NAME = TlsAlertDescription.UNRECOGNIZED_NAME;
|
|
42
|
+
static readonly BAD_CERTIFICATE_STATUS_RESPONSE = TlsAlertDescription.BAD_CERTIFICATE_STATUS_RESPONSE;
|
|
43
|
+
static readonly BAD_CERTIFICATE_HASH_VALUE = TlsAlertDescription.BAD_CERTIFICATE_HASH_VALUE;
|
|
44
|
+
static readonly UNKNOWN_PSK_IDENTITY = TlsAlertDescription.UNKNOWN_PSK_IDENTITY;
|
|
45
|
+
static readonly CERTIFICATE_REQUIRED_1_3 = TlsAlertDescription.CERTIFICATE_REQUIRED_1_3;
|
|
46
|
+
static readonly NO_APPLICATION_PROTOCOL = TlsAlertDescription.NO_APPLICATION_PROTOCOL;
|
|
46
47
|
|
|
47
48
|
/**
|
|
48
49
|
* Create a TLS alert buffer with the specified level and description code
|
|
49
|
-
*
|
|
50
|
+
*
|
|
50
51
|
* @param level Alert level (warning or fatal)
|
|
51
52
|
* @param description Alert description code
|
|
52
53
|
* @param tlsVersion TLS version bytes (default is TLS 1.2: 0x0303)
|
|
@@ -55,7 +56,7 @@ export class TlsAlert {
|
|
|
55
56
|
static create(
|
|
56
57
|
level: number,
|
|
57
58
|
description: number,
|
|
58
|
-
tlsVersion: [number, number] = [
|
|
59
|
+
tlsVersion: [number, number] = [TlsVersion.TLS1_2[0], TlsVersion.TLS1_2[1]]
|
|
59
60
|
): Buffer {
|
|
60
61
|
return Buffer.from([
|
|
61
62
|
0x15, // Alert record type
|
package/ts/tls/index.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TLS module providing SNI extraction, TLS alerts, and other TLS-related utilities
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// Export TLS alert functionality
|
|
6
|
+
export * from './alerts/tls-alert.js';
|
|
7
|
+
|
|
8
|
+
// Export SNI handling
|
|
9
|
+
export * from './sni/sni-handler.js';
|
|
10
|
+
export * from './sni/sni-extraction.js';
|
|
11
|
+
export * from './sni/client-hello-parser.js';
|
|
12
|
+
|
|
13
|
+
// Export TLS utilities
|
|
14
|
+
export * from './utils/tls-utils.js';
|
|
15
|
+
|
|
16
|
+
// Create a namespace for SNI utilities
|
|
17
|
+
import { SniHandler } from './sni/sni-handler.js';
|
|
18
|
+
import { SniExtraction } from './sni/sni-extraction.js';
|
|
19
|
+
import { ClientHelloParser } from './sni/client-hello-parser.js';
|
|
20
|
+
|
|
21
|
+
// Export utility objects for convenience
|
|
22
|
+
export const SNI = {
|
|
23
|
+
// Main handler class (for backward compatibility)
|
|
24
|
+
Handler: SniHandler,
|
|
25
|
+
|
|
26
|
+
// Utility classes
|
|
27
|
+
Extraction: SniExtraction,
|
|
28
|
+
Parser: ClientHelloParser,
|
|
29
|
+
|
|
30
|
+
// Convenience functions
|
|
31
|
+
extractSNI: SniHandler.extractSNI,
|
|
32
|
+
processTlsPacket: SniHandler.processTlsPacket,
|
|
33
|
+
};
|