@push.rocks/smartproxy 19.3.2 → 19.3.3
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/forwarding/factory/forwarding-factory.js +29 -1
- package/dist_ts/http/index.d.ts +1 -3
- package/dist_ts/http/index.js +4 -10
- package/dist_ts/http/models/http-types.d.ts +4 -91
- package/dist_ts/http/models/http-types.js +5 -60
- package/dist_ts/http/router/proxy-router.d.ts +1 -1
- package/dist_ts/http/router/route-router.d.ts +1 -1
- package/dist_ts/index.d.ts +9 -7
- package/dist_ts/index.js +10 -7
- package/dist_ts/proxies/{network-proxy → http-proxy}/certificate-manager.d.ts +2 -2
- package/dist_ts/proxies/{network-proxy → http-proxy}/certificate-manager.js +1 -1
- package/dist_ts/proxies/{network-proxy → http-proxy}/connection-pool.d.ts +2 -2
- package/dist_ts/proxies/http-proxy/connection-pool.js +210 -0
- package/dist_ts/proxies/http-proxy/context-creator.js +108 -0
- package/dist_ts/proxies/{network-proxy → http-proxy}/function-cache.js +1 -1
- package/dist_ts/proxies/http-proxy/handlers/index.d.ts +5 -0
- package/dist_ts/proxies/http-proxy/handlers/index.js +6 -0
- package/dist_ts/proxies/http-proxy/handlers/redirect-handler.d.ts +18 -0
- package/dist_ts/proxies/http-proxy/handlers/redirect-handler.js +78 -0
- package/dist_ts/proxies/http-proxy/handlers/static-handler.d.ts +19 -0
- package/dist_ts/proxies/http-proxy/handlers/static-handler.js +203 -0
- package/dist_ts/proxies/{network-proxy/network-proxy.d.ts → http-proxy/http-proxy.d.ts} +10 -9
- package/dist_ts/proxies/{network-proxy/network-proxy.js → http-proxy/http-proxy.js} +13 -12
- package/dist_ts/proxies/{network-proxy → http-proxy}/http-request-handler.js +1 -1
- package/dist_ts/proxies/http-proxy/http2-request-handler.js +201 -0
- package/dist_ts/proxies/{network-proxy → http-proxy}/index.d.ts +2 -2
- package/dist_ts/proxies/http-proxy/index.js +12 -0
- package/dist_ts/proxies/http-proxy/models/http-types.d.ts +119 -0
- package/dist_ts/proxies/http-proxy/models/http-types.js +112 -0
- package/dist_ts/proxies/http-proxy/models/index.d.ts +5 -0
- package/dist_ts/proxies/http-proxy/models/index.js +6 -0
- package/dist_ts/proxies/{network-proxy → http-proxy}/models/types.d.ts +2 -2
- package/dist_ts/proxies/http-proxy/models/types.js +276 -0
- package/dist_ts/proxies/{network-proxy → http-proxy}/request-handler.d.ts +3 -3
- package/dist_ts/proxies/{network-proxy → http-proxy}/request-handler.js +2 -2
- package/dist_ts/proxies/http-proxy/security-manager.js +255 -0
- package/dist_ts/proxies/{network-proxy → http-proxy}/websocket-handler.d.ts +3 -3
- package/dist_ts/proxies/{network-proxy → http-proxy}/websocket-handler.js +2 -2
- package/dist_ts/proxies/index.d.ts +5 -5
- package/dist_ts/proxies/index.js +5 -5
- package/dist_ts/proxies/smart-proxy/certificate-manager.d.ts +4 -4
- package/dist_ts/proxies/smart-proxy/certificate-manager.js +11 -11
- package/dist_ts/proxies/smart-proxy/http-proxy-bridge.d.ts +41 -0
- package/dist_ts/proxies/smart-proxy/http-proxy-bridge.js +121 -0
- package/dist_ts/proxies/smart-proxy/index.d.ts +2 -1
- package/dist_ts/proxies/smart-proxy/index.js +4 -2
- package/dist_ts/proxies/smart-proxy/models/interfaces.d.ts +2 -2
- package/dist_ts/proxies/smart-proxy/port-manager.js +3 -3
- package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +3 -3
- package/dist_ts/proxies/smart-proxy/route-connection-handler.js +24 -265
- package/dist_ts/proxies/smart-proxy/smart-proxy.d.ts +1 -1
- package/dist_ts/proxies/smart-proxy/smart-proxy.js +25 -25
- package/dist_ts/routing/index.d.ts +5 -0
- package/dist_ts/routing/index.js +8 -0
- package/dist_ts/routing/models/http-types.d.ts +6 -0
- package/dist_ts/routing/models/http-types.js +7 -0
- package/dist_ts/routing/router/index.d.ts +8 -0
- package/dist_ts/routing/router/index.js +7 -0
- package/dist_ts/{classes.router.d.ts → routing/router/proxy-router.d.ts} +14 -11
- package/dist_ts/{classes.router.js → routing/router/proxy-router.js} +2 -2
- package/dist_ts/routing/router/route-router.d.ts +108 -0
- package/dist_ts/routing/router/route-router.js +393 -0
- package/package.json +1 -1
- package/readme.md +12 -12
- package/readme.plan.md +152 -257
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/forwarding/factory/forwarding-factory.ts +28 -0
- package/ts/index.ts +13 -9
- package/ts/proxies/{network-proxy → http-proxy}/certificate-manager.ts +2 -2
- package/ts/proxies/{network-proxy → http-proxy}/connection-pool.ts +2 -2
- package/ts/proxies/http-proxy/handlers/index.ts +6 -0
- package/ts/proxies/http-proxy/handlers/redirect-handler.ts +105 -0
- package/ts/proxies/http-proxy/handlers/static-handler.ts +251 -0
- package/ts/proxies/{network-proxy/network-proxy.ts → http-proxy/http-proxy.ts} +15 -14
- package/ts/proxies/{network-proxy → http-proxy}/index.ts +3 -3
- package/ts/proxies/http-proxy/models/http-types.ts +165 -0
- package/ts/proxies/http-proxy/models/index.ts +5 -0
- package/ts/proxies/{network-proxy → http-proxy}/models/types.ts +2 -2
- package/ts/proxies/{network-proxy → http-proxy}/request-handler.ts +3 -3
- package/ts/proxies/{network-proxy → http-proxy}/websocket-handler.ts +3 -3
- package/ts/proxies/index.ts +7 -7
- package/ts/proxies/smart-proxy/certificate-manager.ts +10 -10
- package/ts/proxies/smart-proxy/{network-proxy-bridge.ts → http-proxy-bridge.ts} +44 -44
- package/ts/proxies/smart-proxy/index.ts +4 -1
- package/ts/proxies/smart-proxy/models/interfaces.ts +3 -3
- package/ts/proxies/smart-proxy/port-manager.ts +2 -2
- package/ts/proxies/smart-proxy/route-connection-handler.ts +23 -307
- package/ts/proxies/smart-proxy/smart-proxy.ts +25 -25
- package/ts/routing/index.ts +9 -0
- package/ts/routing/models/http-types.ts +6 -0
- package/ts/{http → routing}/router/proxy-router.ts +1 -1
- package/ts/{http → routing}/router/route-router.ts +1 -1
- package/dist_ts/certificate/acme/acme-factory.d.ts +0 -17
- package/dist_ts/certificate/acme/acme-factory.js +0 -40
- package/dist_ts/certificate/acme/challenge-handler.d.ts +0 -44
- package/dist_ts/certificate/acme/challenge-handler.js +0 -92
- package/dist_ts/certificate/acme/index.d.ts +0 -4
- package/dist_ts/certificate/acme/index.js +0 -5
- package/dist_ts/certificate/certificate-manager.d.ts +0 -150
- package/dist_ts/certificate/certificate-manager.js +0 -505
- package/dist_ts/certificate/events/certificate-events.d.ts +0 -33
- package/dist_ts/certificate/events/certificate-events.js +0 -38
- package/dist_ts/certificate/events/simplified-events.d.ts +0 -56
- package/dist_ts/certificate/events/simplified-events.js +0 -13
- package/dist_ts/certificate/index.d.ts +0 -30
- package/dist_ts/certificate/index.js +0 -37
- package/dist_ts/certificate/models/certificate-errors.d.ts +0 -69
- package/dist_ts/certificate/models/certificate-errors.js +0 -141
- package/dist_ts/certificate/models/certificate-strategy.d.ts +0 -60
- package/dist_ts/certificate/models/certificate-strategy.js +0 -73
- package/dist_ts/certificate/models/certificate-types.d.ts +0 -97
- package/dist_ts/certificate/models/certificate-types.js +0 -2
- package/dist_ts/certificate/providers/cert-provisioner.d.ts +0 -119
- package/dist_ts/certificate/providers/cert-provisioner.js +0 -422
- package/dist_ts/certificate/providers/index.d.ts +0 -4
- package/dist_ts/certificate/providers/index.js +0 -5
- package/dist_ts/certificate/simplified-certificate-manager.d.ts +0 -150
- package/dist_ts/certificate/simplified-certificate-manager.js +0 -501
- package/dist_ts/certificate/storage/file-storage.d.ts +0 -66
- package/dist_ts/certificate/storage/file-storage.js +0 -194
- package/dist_ts/certificate/storage/index.d.ts +0 -4
- package/dist_ts/certificate/storage/index.js +0 -5
- package/dist_ts/certificate/utils/certificate-helpers.d.ts +0 -17
- package/dist_ts/certificate/utils/certificate-helpers.js +0 -45
- package/dist_ts/classes.iptablesproxy.d.ts +0 -112
- package/dist_ts/classes.iptablesproxy.js +0 -765
- package/dist_ts/classes.networkproxy.d.ts +0 -243
- package/dist_ts/classes.networkproxy.js +0 -1424
- package/dist_ts/classes.nftablesproxy.d.ts +0 -219
- package/dist_ts/classes.nftablesproxy.js +0 -1542
- package/dist_ts/classes.port80handler.d.ts +0 -215
- package/dist_ts/classes.port80handler.js +0 -736
- package/dist_ts/classes.portproxy.d.ts +0 -171
- package/dist_ts/classes.portproxy.js +0 -1802
- package/dist_ts/classes.pp.acmemanager.d.ts +0 -34
- package/dist_ts/classes.pp.acmemanager.js +0 -123
- package/dist_ts/classes.pp.connectionhandler.d.ts +0 -39
- package/dist_ts/classes.pp.connectionhandler.js +0 -754
- package/dist_ts/classes.pp.connectionmanager.d.ts +0 -78
- package/dist_ts/classes.pp.connectionmanager.js +0 -378
- package/dist_ts/classes.pp.domainconfigmanager.d.ts +0 -55
- package/dist_ts/classes.pp.domainconfigmanager.js +0 -103
- package/dist_ts/classes.pp.interfaces.d.ts +0 -133
- package/dist_ts/classes.pp.interfaces.js +0 -2
- package/dist_ts/classes.pp.networkproxybridge.d.ts +0 -57
- package/dist_ts/classes.pp.networkproxybridge.js +0 -306
- package/dist_ts/classes.pp.portproxy.d.ts +0 -64
- package/dist_ts/classes.pp.portproxy.js +0 -567
- package/dist_ts/classes.pp.portrangemanager.d.ts +0 -56
- package/dist_ts/classes.pp.portrangemanager.js +0 -179
- package/dist_ts/classes.pp.securitymanager.d.ts +0 -47
- package/dist_ts/classes.pp.securitymanager.js +0 -126
- package/dist_ts/classes.pp.snihandler.d.ts +0 -153
- package/dist_ts/classes.pp.snihandler.js +0 -1053
- package/dist_ts/classes.pp.timeoutmanager.d.ts +0 -47
- package/dist_ts/classes.pp.timeoutmanager.js +0 -154
- package/dist_ts/classes.pp.tlsalert.d.ts +0 -149
- package/dist_ts/classes.pp.tlsalert.js +0 -225
- package/dist_ts/classes.pp.tlsmanager.d.ts +0 -57
- package/dist_ts/classes.pp.tlsmanager.js +0 -132
- package/dist_ts/classes.snihandler.d.ts +0 -198
- package/dist_ts/classes.snihandler.js +0 -1210
- package/dist_ts/classes.sslredirect.d.ts +0 -8
- package/dist_ts/classes.sslredirect.js +0 -28
- package/dist_ts/common/acmeFactory.d.ts +0 -9
- package/dist_ts/common/acmeFactory.js +0 -20
- package/dist_ts/common/port80-adapter.d.ts +0 -11
- package/dist_ts/common/port80-adapter.js +0 -87
- package/dist_ts/examples/forwarding-example.d.ts +0 -1
- package/dist_ts/examples/forwarding-example.js +0 -96
- package/dist_ts/forwarding/config/domain-config.d.ts +0 -12
- package/dist_ts/forwarding/config/domain-config.js +0 -12
- package/dist_ts/forwarding/config/domain-manager.d.ts +0 -86
- package/dist_ts/forwarding/config/domain-manager.js +0 -242
- package/dist_ts/helpers.certificates.d.ts +0 -5
- package/dist_ts/helpers.certificates.js +0 -23
- package/dist_ts/http/port80/acme-interfaces.d.ts +0 -108
- package/dist_ts/http/port80/acme-interfaces.js +0 -51
- package/dist_ts/http/port80/challenge-responder.d.ts +0 -53
- package/dist_ts/http/port80/challenge-responder.js +0 -203
- package/dist_ts/http/port80/index.d.ts +0 -6
- package/dist_ts/http/port80/index.js +0 -9
- package/dist_ts/http/port80/port80-handler.d.ts +0 -136
- package/dist_ts/http/port80/port80-handler.js +0 -592
- package/dist_ts/http/redirects/index.d.ts +0 -4
- package/dist_ts/http/redirects/index.js +0 -5
- package/dist_ts/networkproxy/classes.np.certificatemanager.d.ts +0 -77
- package/dist_ts/networkproxy/classes.np.certificatemanager.js +0 -372
- package/dist_ts/networkproxy/classes.np.connectionpool.d.ts +0 -47
- package/dist_ts/networkproxy/classes.np.connectionpool.js +0 -210
- package/dist_ts/networkproxy/classes.np.networkproxy.d.ts +0 -118
- package/dist_ts/networkproxy/classes.np.networkproxy.js +0 -387
- package/dist_ts/networkproxy/classes.np.requesthandler.d.ts +0 -56
- package/dist_ts/networkproxy/classes.np.requesthandler.js +0 -393
- package/dist_ts/networkproxy/classes.np.types.d.ts +0 -83
- package/dist_ts/networkproxy/classes.np.types.js +0 -35
- package/dist_ts/networkproxy/classes.np.websockethandler.d.ts +0 -38
- package/dist_ts/networkproxy/classes.np.websockethandler.js +0 -188
- package/dist_ts/networkproxy/index.d.ts +0 -1
- package/dist_ts/networkproxy/index.js +0 -4
- package/dist_ts/nfttablesproxy/classes.nftablesproxy.d.ts +0 -219
- package/dist_ts/nfttablesproxy/classes.nftablesproxy.js +0 -1542
- package/dist_ts/port80handler/classes.port80handler.d.ts +0 -10
- package/dist_ts/port80handler/classes.port80handler.js +0 -16
- package/dist_ts/proxies/network-proxy/connection-pool.js +0 -210
- package/dist_ts/proxies/network-proxy/context-creator.js +0 -108
- package/dist_ts/proxies/network-proxy/http2-request-handler.js +0 -201
- package/dist_ts/proxies/network-proxy/index.js +0 -12
- package/dist_ts/proxies/network-proxy/models/index.d.ts +0 -4
- package/dist_ts/proxies/network-proxy/models/index.js +0 -5
- package/dist_ts/proxies/network-proxy/models/types.js +0 -276
- package/dist_ts/proxies/network-proxy/security-manager.js +0 -255
- package/dist_ts/proxies/network-proxy/simplified-certificate-bridge.d.ts +0 -48
- package/dist_ts/proxies/network-proxy/simplified-certificate-bridge.js +0 -76
- package/dist_ts/proxies/smart-proxy/connection-handler.d.ts +0 -39
- package/dist_ts/proxies/smart-proxy/connection-handler.js +0 -894
- package/dist_ts/proxies/smart-proxy/domain-config-manager.d.ts +0 -110
- package/dist_ts/proxies/smart-proxy/domain-config-manager.js +0 -386
- package/dist_ts/proxies/smart-proxy/legacy-smart-proxy.d.ts +0 -168
- package/dist_ts/proxies/smart-proxy/legacy-smart-proxy.js +0 -642
- package/dist_ts/proxies/smart-proxy/models/simplified-smartproxy-config.d.ts +0 -65
- package/dist_ts/proxies/smart-proxy/models/simplified-smartproxy-config.js +0 -31
- package/dist_ts/proxies/smart-proxy/models/smartproxy-options.d.ts +0 -102
- package/dist_ts/proxies/smart-proxy/models/smartproxy-options.js +0 -73
- package/dist_ts/proxies/smart-proxy/network-proxy-bridge.d.ts +0 -41
- package/dist_ts/proxies/smart-proxy/network-proxy-bridge.js +0 -121
- package/dist_ts/proxies/smart-proxy/port-range-manager.d.ts +0 -56
- package/dist_ts/proxies/smart-proxy/port-range-manager.js +0 -176
- package/dist_ts/proxies/smart-proxy/route-helpers/index.d.ts +0 -9
- package/dist_ts/proxies/smart-proxy/route-helpers/index.js +0 -11
- package/dist_ts/proxies/smart-proxy/route-helpers.d.ts +0 -7
- package/dist_ts/proxies/smart-proxy/route-helpers.js +0 -9
- package/dist_ts/proxies/smart-proxy/simplified-smart-proxy.d.ts +0 -41
- package/dist_ts/proxies/smart-proxy/simplified-smart-proxy.js +0 -132
- package/dist_ts/proxies/smart-proxy/utils/route-migration-utils.d.ts +0 -51
- package/dist_ts/proxies/smart-proxy/utils/route-migration-utils.js +0 -124
- package/dist_ts/redirect/classes.redirect.d.ts +0 -96
- package/dist_ts/redirect/classes.redirect.js +0 -194
- package/dist_ts/smartproxy/classes.pp.certprovisioner.d.ts +0 -54
- package/dist_ts/smartproxy/classes.pp.certprovisioner.js +0 -179
- package/dist_ts/smartproxy/classes.pp.connectionhandler.d.ts +0 -39
- package/dist_ts/smartproxy/classes.pp.connectionhandler.js +0 -894
- package/dist_ts/smartproxy/classes.pp.connectionmanager.d.ts +0 -78
- package/dist_ts/smartproxy/classes.pp.connectionmanager.js +0 -378
- package/dist_ts/smartproxy/classes.pp.domainconfigmanager.d.ts +0 -94
- package/dist_ts/smartproxy/classes.pp.domainconfigmanager.js +0 -255
- package/dist_ts/smartproxy/classes.pp.interfaces.d.ts +0 -103
- package/dist_ts/smartproxy/classes.pp.interfaces.js +0 -2
- package/dist_ts/smartproxy/classes.pp.networkproxybridge.d.ts +0 -62
- package/dist_ts/smartproxy/classes.pp.networkproxybridge.js +0 -316
- package/dist_ts/smartproxy/classes.pp.portrangemanager.d.ts +0 -56
- package/dist_ts/smartproxy/classes.pp.portrangemanager.js +0 -176
- package/dist_ts/smartproxy/classes.pp.securitymanager.d.ts +0 -64
- package/dist_ts/smartproxy/classes.pp.securitymanager.js +0 -149
- package/dist_ts/smartproxy/classes.pp.snihandler.d.ts +0 -153
- package/dist_ts/smartproxy/classes.pp.snihandler.js +0 -1053
- package/dist_ts/smartproxy/classes.pp.timeoutmanager.d.ts +0 -47
- package/dist_ts/smartproxy/classes.pp.timeoutmanager.js +0 -154
- package/dist_ts/smartproxy/classes.pp.tlsalert.d.ts +0 -149
- package/dist_ts/smartproxy/classes.pp.tlsalert.js +0 -225
- package/dist_ts/smartproxy/classes.pp.tlsmanager.d.ts +0 -57
- package/dist_ts/smartproxy/classes.pp.tlsmanager.js +0 -132
- package/dist_ts/smartproxy/classes.smartproxy.d.ts +0 -63
- package/dist_ts/smartproxy/classes.smartproxy.js +0 -521
- package/dist_ts/smartproxy/forwarding/domain-config.d.ts +0 -12
- package/dist_ts/smartproxy/forwarding/domain-config.js +0 -12
- package/dist_ts/smartproxy/forwarding/domain-manager.d.ts +0 -86
- package/dist_ts/smartproxy/forwarding/domain-manager.js +0 -241
- package/dist_ts/smartproxy/forwarding/forwarding.factory.d.ts +0 -24
- package/dist_ts/smartproxy/forwarding/forwarding.factory.js +0 -137
- package/dist_ts/smartproxy/forwarding/forwarding.handler.d.ts +0 -55
- package/dist_ts/smartproxy/forwarding/forwarding.handler.js +0 -94
- package/dist_ts/smartproxy/forwarding/http.handler.d.ts +0 -25
- package/dist_ts/smartproxy/forwarding/http.handler.js +0 -123
- package/dist_ts/smartproxy/forwarding/https-passthrough.handler.d.ts +0 -24
- package/dist_ts/smartproxy/forwarding/https-passthrough.handler.js +0 -154
- package/dist_ts/smartproxy/forwarding/https-terminate-to-http.handler.d.ts +0 -36
- package/dist_ts/smartproxy/forwarding/https-terminate-to-http.handler.js +0 -229
- package/dist_ts/smartproxy/forwarding/https-terminate-to-https.handler.d.ts +0 -35
- package/dist_ts/smartproxy/forwarding/https-terminate-to-https.handler.js +0 -254
- package/dist_ts/smartproxy/forwarding/index.d.ts +0 -16
- package/dist_ts/smartproxy/forwarding/index.js +0 -23
- package/dist_ts/smartproxy/types/forwarding.types.d.ts +0 -104
- package/dist_ts/smartproxy/types/forwarding.types.js +0 -50
- package/dist_ts/smartproxy.classes.networkproxy.d.ts +0 -31
- package/dist_ts/smartproxy.classes.networkproxy.js +0 -305
- package/dist_ts/smartproxy.classes.router.d.ts +0 -13
- package/dist_ts/smartproxy.classes.router.js +0 -33
- package/dist_ts/smartproxy.classes.sslredirect.d.ts +0 -8
- package/dist_ts/smartproxy.classes.sslredirect.js +0 -28
- package/dist_ts/smartproxy.helpers.certificates.d.ts +0 -5
- package/dist_ts/smartproxy.helpers.certificates.js +0 -23
- package/dist_ts/smartproxy.plugins.d.ts +0 -18
- package/dist_ts/smartproxy.plugins.js +0 -23
- package/dist_ts/smartproxy.portproxy.d.ts +0 -26
- package/dist_ts/smartproxy.portproxy.js +0 -295
- package/ts/http/index.ts +0 -16
- package/ts/http/models/http-types.ts +0 -108
- package/ts/http/redirects/index.ts +0 -3
- package/ts/proxies/network-proxy/models/index.ts +0 -4
- package/ts/redirect/classes.redirect.ts +0 -295
- /package/dist_ts/proxies/{network-proxy → http-proxy}/context-creator.d.ts +0 -0
- /package/dist_ts/proxies/{network-proxy → http-proxy}/function-cache.d.ts +0 -0
- /package/dist_ts/proxies/{network-proxy → http-proxy}/http-request-handler.d.ts +0 -0
- /package/dist_ts/proxies/{network-proxy → http-proxy}/http2-request-handler.d.ts +0 -0
- /package/dist_ts/proxies/{network-proxy → http-proxy}/security-manager.d.ts +0 -0
- /package/ts/proxies/{network-proxy → http-proxy}/context-creator.ts +0 -0
- /package/ts/proxies/{network-proxy → http-proxy}/function-cache.ts +0 -0
- /package/ts/proxies/{network-proxy → http-proxy}/http-request-handler.ts +0 -0
- /package/ts/proxies/{network-proxy → http-proxy}/http2-request-handler.ts +0 -0
- /package/ts/proxies/{network-proxy → http-proxy}/security-manager.ts +0 -0
- /package/ts/{http → routing}/router/index.ts +0 -0
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import type { IDomainConfig, ISmartProxyOptions } from './models/interfaces.js';
|
|
2
|
-
import type { TForwardingType } from '../../forwarding/config/forwarding-types.js';
|
|
3
|
-
import type { ForwardingHandler } from '../../forwarding/handlers/base-handler.js';
|
|
4
|
-
import { RouteManager } from './route-manager.js';
|
|
5
|
-
/**
|
|
6
|
-
* Manages domain configurations and target selection
|
|
7
|
-
*/
|
|
8
|
-
export declare class DomainConfigManager {
|
|
9
|
-
private settings;
|
|
10
|
-
private domainTargetIndices;
|
|
11
|
-
private forwardingHandlers;
|
|
12
|
-
private derivedDomainConfigs;
|
|
13
|
-
private routeManager?;
|
|
14
|
-
constructor(settings: ISmartProxyOptions);
|
|
15
|
-
/**
|
|
16
|
-
* Set the route manager reference for route-based queries
|
|
17
|
-
*/
|
|
18
|
-
setRouteManager(routeManager: RouteManager): void;
|
|
19
|
-
/**
|
|
20
|
-
* Generate domain configs from routes
|
|
21
|
-
*/
|
|
22
|
-
generateDomainConfigsFromRoutes(): void;
|
|
23
|
-
/**
|
|
24
|
-
* Convert a route to a domain config
|
|
25
|
-
*/
|
|
26
|
-
private routeToDomainConfig;
|
|
27
|
-
/**
|
|
28
|
-
* Updates the domain configurations
|
|
29
|
-
*/
|
|
30
|
-
updateDomainConfigs(newDomainConfigs: IDomainConfig[]): void;
|
|
31
|
-
/**
|
|
32
|
-
* Get all domain configurations
|
|
33
|
-
*/
|
|
34
|
-
getDomainConfigs(): IDomainConfig[];
|
|
35
|
-
/**
|
|
36
|
-
* Find domain config matching a server name
|
|
37
|
-
*/
|
|
38
|
-
findDomainConfig(serverName: string): IDomainConfig | undefined;
|
|
39
|
-
/**
|
|
40
|
-
* Find domain config for a specific port
|
|
41
|
-
*/
|
|
42
|
-
findDomainConfigForPort(port: number): IDomainConfig | undefined;
|
|
43
|
-
/**
|
|
44
|
-
* Check if a port is within any of the given ranges
|
|
45
|
-
*/
|
|
46
|
-
isPortInRanges(port: number, ranges: Array<{
|
|
47
|
-
from: number;
|
|
48
|
-
to: number;
|
|
49
|
-
}>): boolean;
|
|
50
|
-
/**
|
|
51
|
-
* Get target IP with round-robin support
|
|
52
|
-
*/
|
|
53
|
-
getTargetIP(domainConfig: IDomainConfig): string;
|
|
54
|
-
/**
|
|
55
|
-
* Get target host with round-robin support (for tests)
|
|
56
|
-
* This is just an alias for getTargetIP for easier test compatibility
|
|
57
|
-
*/
|
|
58
|
-
getTargetHost(domainConfig: IDomainConfig): string;
|
|
59
|
-
/**
|
|
60
|
-
* Get target port from domain config
|
|
61
|
-
*/
|
|
62
|
-
getTargetPort(domainConfig: IDomainConfig, defaultPort: number): number;
|
|
63
|
-
/**
|
|
64
|
-
* Checks if a domain should use NetworkProxy
|
|
65
|
-
*/
|
|
66
|
-
shouldUseNetworkProxy(domainConfig: IDomainConfig): boolean;
|
|
67
|
-
/**
|
|
68
|
-
* Gets the NetworkProxy port for a domain
|
|
69
|
-
*/
|
|
70
|
-
getNetworkProxyPort(domainConfig: IDomainConfig): number | undefined;
|
|
71
|
-
/**
|
|
72
|
-
* Get effective allowed and blocked IPs for a domain
|
|
73
|
-
*
|
|
74
|
-
* This method combines domain-specific security rules from the forwarding configuration
|
|
75
|
-
* with global security defaults when necessary.
|
|
76
|
-
*/
|
|
77
|
-
getEffectiveIPRules(domainConfig: IDomainConfig): {
|
|
78
|
-
allowedIPs: string[];
|
|
79
|
-
blockedIPs: string[];
|
|
80
|
-
};
|
|
81
|
-
/**
|
|
82
|
-
* Get connection timeout for a domain
|
|
83
|
-
*/
|
|
84
|
-
getConnectionTimeout(domainConfig?: IDomainConfig): number;
|
|
85
|
-
/**
|
|
86
|
-
* Creates a forwarding handler for a domain configuration
|
|
87
|
-
*/
|
|
88
|
-
private createForwardingHandler;
|
|
89
|
-
/**
|
|
90
|
-
* Gets a forwarding handler for a domain config
|
|
91
|
-
* If no handler exists, creates one
|
|
92
|
-
*/
|
|
93
|
-
getForwardingHandler(domainConfig: IDomainConfig): ForwardingHandler;
|
|
94
|
-
/**
|
|
95
|
-
* Gets the forwarding type for a domain config
|
|
96
|
-
*/
|
|
97
|
-
getForwardingType(domainConfig?: IDomainConfig): TForwardingType | undefined;
|
|
98
|
-
/**
|
|
99
|
-
* Checks if the forwarding type requires TLS termination
|
|
100
|
-
*/
|
|
101
|
-
requiresTlsTermination(domainConfig?: IDomainConfig): boolean;
|
|
102
|
-
/**
|
|
103
|
-
* Checks if the forwarding type supports HTTP
|
|
104
|
-
*/
|
|
105
|
-
supportsHttp(domainConfig?: IDomainConfig): boolean;
|
|
106
|
-
/**
|
|
107
|
-
* Checks if HTTP requests should be redirected to HTTPS
|
|
108
|
-
*/
|
|
109
|
-
shouldRedirectToHttps(domainConfig?: IDomainConfig): boolean;
|
|
110
|
-
}
|
|
@@ -1,386 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import { ForwardingHandlerFactory } from '../../forwarding/factory/forwarding-factory.js';
|
|
3
|
-
import { RouteManager } from './route-manager.js';
|
|
4
|
-
/**
|
|
5
|
-
* Manages domain configurations and target selection
|
|
6
|
-
*/
|
|
7
|
-
export class DomainConfigManager {
|
|
8
|
-
constructor(settings) {
|
|
9
|
-
this.settings = settings;
|
|
10
|
-
// Track round-robin indices for domain configs
|
|
11
|
-
this.domainTargetIndices = new Map();
|
|
12
|
-
// Cache forwarding handlers for each domain config
|
|
13
|
-
this.forwardingHandlers = new Map();
|
|
14
|
-
// Store derived domain configs from routes
|
|
15
|
-
this.derivedDomainConfigs = [];
|
|
16
|
-
// Initialize with derived domain configs if using route-based configuration
|
|
17
|
-
if (settings.routes && !settings.domainConfigs) {
|
|
18
|
-
this.generateDomainConfigsFromRoutes();
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Set the route manager reference for route-based queries
|
|
23
|
-
*/
|
|
24
|
-
setRouteManager(routeManager) {
|
|
25
|
-
this.routeManager = routeManager;
|
|
26
|
-
// Regenerate domain configs from routes if needed
|
|
27
|
-
if (this.settings.routes && (!this.settings.domainConfigs || this.settings.domainConfigs.length === 0)) {
|
|
28
|
-
this.generateDomainConfigsFromRoutes();
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Generate domain configs from routes
|
|
33
|
-
*/
|
|
34
|
-
generateDomainConfigsFromRoutes() {
|
|
35
|
-
this.derivedDomainConfigs = [];
|
|
36
|
-
if (!this.settings.routes)
|
|
37
|
-
return;
|
|
38
|
-
for (const route of this.settings.routes) {
|
|
39
|
-
if (route.action.type !== 'forward' || !route.match.domains)
|
|
40
|
-
continue;
|
|
41
|
-
// Convert route to domain config
|
|
42
|
-
const domainConfig = this.routeToDomainConfig(route);
|
|
43
|
-
if (domainConfig) {
|
|
44
|
-
this.derivedDomainConfigs.push(domainConfig);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Convert a route to a domain config
|
|
50
|
-
*/
|
|
51
|
-
routeToDomainConfig(route) {
|
|
52
|
-
if (route.action.type !== 'forward' || !route.action.target)
|
|
53
|
-
return null;
|
|
54
|
-
// Get domains from route
|
|
55
|
-
const domains = Array.isArray(route.match.domains) ?
|
|
56
|
-
route.match.domains :
|
|
57
|
-
(route.match.domains ? [route.match.domains] : []);
|
|
58
|
-
if (domains.length === 0)
|
|
59
|
-
return null;
|
|
60
|
-
// Determine forwarding type based on TLS mode
|
|
61
|
-
let forwardingType = 'http-only';
|
|
62
|
-
if (route.action.tls) {
|
|
63
|
-
switch (route.action.tls.mode) {
|
|
64
|
-
case 'passthrough':
|
|
65
|
-
forwardingType = 'https-passthrough';
|
|
66
|
-
break;
|
|
67
|
-
case 'terminate':
|
|
68
|
-
forwardingType = 'https-terminate-to-http';
|
|
69
|
-
break;
|
|
70
|
-
case 'terminate-and-reencrypt':
|
|
71
|
-
forwardingType = 'https-terminate-to-https';
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
// Create domain config
|
|
76
|
-
return {
|
|
77
|
-
domains,
|
|
78
|
-
forwarding: {
|
|
79
|
-
type: forwardingType,
|
|
80
|
-
target: {
|
|
81
|
-
host: route.action.target.host,
|
|
82
|
-
port: route.action.target.port
|
|
83
|
-
},
|
|
84
|
-
security: route.action.security ? {
|
|
85
|
-
allowedIps: route.action.security.allowedIps,
|
|
86
|
-
blockedIps: route.action.security.blockedIps,
|
|
87
|
-
maxConnections: route.action.security.maxConnections
|
|
88
|
-
} : undefined,
|
|
89
|
-
https: route.action.tls && route.action.tls.certificate !== 'auto' ? {
|
|
90
|
-
customCert: route.action.tls.certificate
|
|
91
|
-
} : undefined,
|
|
92
|
-
advanced: route.action.advanced
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Updates the domain configurations
|
|
98
|
-
*/
|
|
99
|
-
updateDomainConfigs(newDomainConfigs) {
|
|
100
|
-
// If we're using domainConfigs property, update it
|
|
101
|
-
if (this.settings.domainConfigs) {
|
|
102
|
-
this.settings.domainConfigs = newDomainConfigs;
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
// Otherwise update our derived configs
|
|
106
|
-
this.derivedDomainConfigs = newDomainConfigs;
|
|
107
|
-
}
|
|
108
|
-
// Reset target indices for removed configs
|
|
109
|
-
const currentConfigSet = new Set(newDomainConfigs);
|
|
110
|
-
for (const [config] of this.domainTargetIndices) {
|
|
111
|
-
if (!currentConfigSet.has(config)) {
|
|
112
|
-
this.domainTargetIndices.delete(config);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
// Clear handlers for removed configs and create handlers for new configs
|
|
116
|
-
const handlersToRemove = [];
|
|
117
|
-
for (const [config] of this.forwardingHandlers) {
|
|
118
|
-
if (!currentConfigSet.has(config)) {
|
|
119
|
-
handlersToRemove.push(config);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
// Remove handlers that are no longer needed
|
|
123
|
-
for (const config of handlersToRemove) {
|
|
124
|
-
this.forwardingHandlers.delete(config);
|
|
125
|
-
}
|
|
126
|
-
// Create handlers for new configs
|
|
127
|
-
for (const config of newDomainConfigs) {
|
|
128
|
-
if (!this.forwardingHandlers.has(config)) {
|
|
129
|
-
try {
|
|
130
|
-
const handler = this.createForwardingHandler(config);
|
|
131
|
-
this.forwardingHandlers.set(config, handler);
|
|
132
|
-
}
|
|
133
|
-
catch (err) {
|
|
134
|
-
console.log(`Error creating forwarding handler for domain ${config.domains.join(', ')}: ${err}`);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Get all domain configurations
|
|
141
|
-
*/
|
|
142
|
-
getDomainConfigs() {
|
|
143
|
-
// Use domainConfigs from settings if available, otherwise use derived configs
|
|
144
|
-
return this.settings.domainConfigs || this.derivedDomainConfigs;
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Find domain config matching a server name
|
|
148
|
-
*/
|
|
149
|
-
findDomainConfig(serverName) {
|
|
150
|
-
if (!serverName)
|
|
151
|
-
return undefined;
|
|
152
|
-
// Get domain configs from the appropriate source
|
|
153
|
-
const domainConfigs = this.getDomainConfigs();
|
|
154
|
-
// Check for direct match
|
|
155
|
-
for (const config of domainConfigs) {
|
|
156
|
-
if (config.domains.some(d => plugins.minimatch(serverName, d))) {
|
|
157
|
-
return config;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
// No match found
|
|
161
|
-
return undefined;
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Find domain config for a specific port
|
|
165
|
-
*/
|
|
166
|
-
findDomainConfigForPort(port) {
|
|
167
|
-
// Get domain configs from the appropriate source
|
|
168
|
-
const domainConfigs = this.getDomainConfigs();
|
|
169
|
-
// Check if any domain config has a matching port range
|
|
170
|
-
for (const domain of domainConfigs) {
|
|
171
|
-
const portRanges = domain.forwarding?.advanced?.portRanges;
|
|
172
|
-
if (portRanges && portRanges.length > 0 && this.isPortInRanges(port, portRanges)) {
|
|
173
|
-
return domain;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
// If we're in route-based mode, also check routes for this port
|
|
177
|
-
if (this.settings.routes && (!this.settings.domainConfigs || this.settings.domainConfigs.length === 0)) {
|
|
178
|
-
const routesForPort = this.settings.routes.filter(route => {
|
|
179
|
-
// Check if this port is in the route's ports
|
|
180
|
-
if (typeof route.match.ports === 'number') {
|
|
181
|
-
return route.match.ports === port;
|
|
182
|
-
}
|
|
183
|
-
else if (Array.isArray(route.match.ports)) {
|
|
184
|
-
return route.match.ports.some(p => {
|
|
185
|
-
if (typeof p === 'number') {
|
|
186
|
-
return p === port;
|
|
187
|
-
}
|
|
188
|
-
else if (p.from && p.to) {
|
|
189
|
-
return port >= p.from && port <= p.to;
|
|
190
|
-
}
|
|
191
|
-
return false;
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
return false;
|
|
195
|
-
});
|
|
196
|
-
// If we found any routes for this port, convert the first one to a domain config
|
|
197
|
-
if (routesForPort.length > 0 && routesForPort[0].action.type === 'forward') {
|
|
198
|
-
const domainConfig = this.routeToDomainConfig(routesForPort[0]);
|
|
199
|
-
if (domainConfig) {
|
|
200
|
-
return domainConfig;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
return undefined;
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Check if a port is within any of the given ranges
|
|
208
|
-
*/
|
|
209
|
-
isPortInRanges(port, ranges) {
|
|
210
|
-
return ranges.some((range) => port >= range.from && port <= range.to);
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Get target IP with round-robin support
|
|
214
|
-
*/
|
|
215
|
-
getTargetIP(domainConfig) {
|
|
216
|
-
const targetHosts = Array.isArray(domainConfig.forwarding.target.host)
|
|
217
|
-
? domainConfig.forwarding.target.host
|
|
218
|
-
: [domainConfig.forwarding.target.host];
|
|
219
|
-
if (targetHosts.length > 0) {
|
|
220
|
-
const currentIndex = this.domainTargetIndices.get(domainConfig) || 0;
|
|
221
|
-
const ip = targetHosts[currentIndex % targetHosts.length];
|
|
222
|
-
this.domainTargetIndices.set(domainConfig, currentIndex + 1);
|
|
223
|
-
return ip;
|
|
224
|
-
}
|
|
225
|
-
return this.settings.targetIP || 'localhost';
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Get target host with round-robin support (for tests)
|
|
229
|
-
* This is just an alias for getTargetIP for easier test compatibility
|
|
230
|
-
*/
|
|
231
|
-
getTargetHost(domainConfig) {
|
|
232
|
-
return this.getTargetIP(domainConfig);
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Get target port from domain config
|
|
236
|
-
*/
|
|
237
|
-
getTargetPort(domainConfig, defaultPort) {
|
|
238
|
-
return domainConfig.forwarding.target.port || defaultPort;
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* Checks if a domain should use NetworkProxy
|
|
242
|
-
*/
|
|
243
|
-
shouldUseNetworkProxy(domainConfig) {
|
|
244
|
-
const forwardingType = this.getForwardingType(domainConfig);
|
|
245
|
-
return forwardingType === 'https-terminate-to-http' ||
|
|
246
|
-
forwardingType === 'https-terminate-to-https';
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Gets the NetworkProxy port for a domain
|
|
250
|
-
*/
|
|
251
|
-
getNetworkProxyPort(domainConfig) {
|
|
252
|
-
// First check if we should use NetworkProxy at all
|
|
253
|
-
if (!this.shouldUseNetworkProxy(domainConfig)) {
|
|
254
|
-
return undefined;
|
|
255
|
-
}
|
|
256
|
-
return domainConfig.forwarding.advanced?.networkProxyPort || this.settings.networkProxyPort;
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Get effective allowed and blocked IPs for a domain
|
|
260
|
-
*
|
|
261
|
-
* This method combines domain-specific security rules from the forwarding configuration
|
|
262
|
-
* with global security defaults when necessary.
|
|
263
|
-
*/
|
|
264
|
-
getEffectiveIPRules(domainConfig) {
|
|
265
|
-
// Start with empty arrays
|
|
266
|
-
const allowedIPs = [];
|
|
267
|
-
const blockedIPs = [];
|
|
268
|
-
// Add IPs from forwarding security settings if available
|
|
269
|
-
if (domainConfig.forwarding?.security?.allowedIps) {
|
|
270
|
-
allowedIPs.push(...domainConfig.forwarding.security.allowedIps);
|
|
271
|
-
}
|
|
272
|
-
else {
|
|
273
|
-
// If no allowed IPs are specified in forwarding config and global defaults exist, use them
|
|
274
|
-
if (this.settings.defaultAllowedIPs && this.settings.defaultAllowedIPs.length > 0) {
|
|
275
|
-
allowedIPs.push(...this.settings.defaultAllowedIPs);
|
|
276
|
-
}
|
|
277
|
-
else {
|
|
278
|
-
// Default to allow all if no specific rules
|
|
279
|
-
allowedIPs.push('*');
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
// Add blocked IPs from forwarding security settings if available
|
|
283
|
-
if (domainConfig.forwarding?.security?.blockedIps) {
|
|
284
|
-
blockedIPs.push(...domainConfig.forwarding.security.blockedIps);
|
|
285
|
-
}
|
|
286
|
-
// Always add global blocked IPs, even if domain has its own rules
|
|
287
|
-
// This ensures that global blocks take precedence
|
|
288
|
-
if (this.settings.defaultBlockedIPs && this.settings.defaultBlockedIPs.length > 0) {
|
|
289
|
-
// Add only unique IPs that aren't already in the list
|
|
290
|
-
for (const ip of this.settings.defaultBlockedIPs) {
|
|
291
|
-
if (!blockedIPs.includes(ip)) {
|
|
292
|
-
blockedIPs.push(ip);
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
return {
|
|
297
|
-
allowedIPs,
|
|
298
|
-
blockedIPs
|
|
299
|
-
};
|
|
300
|
-
}
|
|
301
|
-
/**
|
|
302
|
-
* Get connection timeout for a domain
|
|
303
|
-
*/
|
|
304
|
-
getConnectionTimeout(domainConfig) {
|
|
305
|
-
if (domainConfig?.forwarding.advanced?.timeout) {
|
|
306
|
-
return domainConfig.forwarding.advanced.timeout;
|
|
307
|
-
}
|
|
308
|
-
return this.settings.maxConnectionLifetime || 86400000; // 24 hours default
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* Creates a forwarding handler for a domain configuration
|
|
312
|
-
*/
|
|
313
|
-
createForwardingHandler(domainConfig) {
|
|
314
|
-
// Create a new handler using the factory
|
|
315
|
-
const handler = ForwardingHandlerFactory.createHandler(domainConfig.forwarding);
|
|
316
|
-
// Initialize the handler
|
|
317
|
-
handler.initialize().catch(err => {
|
|
318
|
-
console.log(`Error initializing forwarding handler for ${domainConfig.domains.join(', ')}: ${err}`);
|
|
319
|
-
});
|
|
320
|
-
return handler;
|
|
321
|
-
}
|
|
322
|
-
/**
|
|
323
|
-
* Gets a forwarding handler for a domain config
|
|
324
|
-
* If no handler exists, creates one
|
|
325
|
-
*/
|
|
326
|
-
getForwardingHandler(domainConfig) {
|
|
327
|
-
// If we already have a handler, return it
|
|
328
|
-
if (this.forwardingHandlers.has(domainConfig)) {
|
|
329
|
-
return this.forwardingHandlers.get(domainConfig);
|
|
330
|
-
}
|
|
331
|
-
// Otherwise create a new handler
|
|
332
|
-
const handler = this.createForwardingHandler(domainConfig);
|
|
333
|
-
this.forwardingHandlers.set(domainConfig, handler);
|
|
334
|
-
return handler;
|
|
335
|
-
}
|
|
336
|
-
/**
|
|
337
|
-
* Gets the forwarding type for a domain config
|
|
338
|
-
*/
|
|
339
|
-
getForwardingType(domainConfig) {
|
|
340
|
-
if (!domainConfig?.forwarding)
|
|
341
|
-
return undefined;
|
|
342
|
-
return domainConfig.forwarding.type;
|
|
343
|
-
}
|
|
344
|
-
/**
|
|
345
|
-
* Checks if the forwarding type requires TLS termination
|
|
346
|
-
*/
|
|
347
|
-
requiresTlsTermination(domainConfig) {
|
|
348
|
-
if (!domainConfig)
|
|
349
|
-
return false;
|
|
350
|
-
const forwardingType = this.getForwardingType(domainConfig);
|
|
351
|
-
return forwardingType === 'https-terminate-to-http' ||
|
|
352
|
-
forwardingType === 'https-terminate-to-https';
|
|
353
|
-
}
|
|
354
|
-
/**
|
|
355
|
-
* Checks if the forwarding type supports HTTP
|
|
356
|
-
*/
|
|
357
|
-
supportsHttp(domainConfig) {
|
|
358
|
-
if (!domainConfig)
|
|
359
|
-
return false;
|
|
360
|
-
const forwardingType = this.getForwardingType(domainConfig);
|
|
361
|
-
// HTTP-only always supports HTTP
|
|
362
|
-
if (forwardingType === 'http-only')
|
|
363
|
-
return true;
|
|
364
|
-
// For termination types, check the HTTP settings
|
|
365
|
-
if (forwardingType === 'https-terminate-to-http' ||
|
|
366
|
-
forwardingType === 'https-terminate-to-https') {
|
|
367
|
-
// HTTP is supported by default for termination types
|
|
368
|
-
return domainConfig.forwarding?.http?.enabled !== false;
|
|
369
|
-
}
|
|
370
|
-
// HTTPS-passthrough doesn't support HTTP
|
|
371
|
-
return false;
|
|
372
|
-
}
|
|
373
|
-
/**
|
|
374
|
-
* Checks if HTTP requests should be redirected to HTTPS
|
|
375
|
-
*/
|
|
376
|
-
shouldRedirectToHttps(domainConfig) {
|
|
377
|
-
if (!domainConfig?.forwarding)
|
|
378
|
-
return false;
|
|
379
|
-
// Only check for redirect if HTTP is enabled
|
|
380
|
-
if (this.supportsHttp(domainConfig)) {
|
|
381
|
-
return !!domainConfig.forwarding.http?.redirectToHttps;
|
|
382
|
-
}
|
|
383
|
-
return false;
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLWNvbmZpZy1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvcHJveGllcy9zbWFydC1wcm94eS9kb21haW4tY29uZmlnLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUk1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUUxRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBYTlCLFlBQW9CLFFBQTRCO1FBQTVCLGFBQVEsR0FBUixRQUFRLENBQW9CO1FBWmhELCtDQUErQztRQUN2Qyx3QkFBbUIsR0FBK0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVwRSxtREFBbUQ7UUFDM0MsdUJBQWtCLEdBQTBDLElBQUksR0FBRyxFQUFFLENBQUM7UUFFOUUsMkNBQTJDO1FBQ25DLHlCQUFvQixHQUFvQixFQUFFLENBQUM7UUFNakQsNEVBQTRFO1FBQzVFLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZUFBZSxDQUFDLFlBQTBCO1FBQy9DLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBRWpDLGtEQUFrRDtRQUNsRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN2RyxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztRQUN6QyxDQUFD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
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import { RouteManager } from './route-manager.js';
|
|
3
|
-
import type { ISmartProxyOptions } from './models/interfaces.js';
|
|
4
|
-
import type { IRouteConfig } from './models/route-types.js';
|
|
5
|
-
/**
|
|
6
|
-
* SmartProxy - Pure route-based API
|
|
7
|
-
*
|
|
8
|
-
* SmartProxy is a unified proxy system that works with routes to define connection handling behavior.
|
|
9
|
-
* Each route contains matching criteria (ports, domains, etc.) and an action to take (forward, redirect, block).
|
|
10
|
-
*
|
|
11
|
-
* Configuration is provided through a set of routes, with each route defining:
|
|
12
|
-
* - What to match (ports, domains, paths, client IPs)
|
|
13
|
-
* - What to do with matching traffic (forward, redirect, block)
|
|
14
|
-
* - How to handle TLS (passthrough, terminate, terminate-and-reencrypt)
|
|
15
|
-
* - Security settings (IP restrictions, connection limits)
|
|
16
|
-
* - Advanced options (timeout, headers, etc.)
|
|
17
|
-
*/
|
|
18
|
-
export declare class SmartProxy extends plugins.EventEmitter {
|
|
19
|
-
private portManager;
|
|
20
|
-
private connectionLogger;
|
|
21
|
-
private isShuttingDown;
|
|
22
|
-
private connectionManager;
|
|
23
|
-
private securityManager;
|
|
24
|
-
private tlsManager;
|
|
25
|
-
private networkProxyBridge;
|
|
26
|
-
private timeoutManager;
|
|
27
|
-
routeManager: RouteManager;
|
|
28
|
-
private routeConnectionHandler;
|
|
29
|
-
private nftablesManager;
|
|
30
|
-
private port80Handler;
|
|
31
|
-
private certProvisioner?;
|
|
32
|
-
/**
|
|
33
|
-
* Constructor for SmartProxy
|
|
34
|
-
*
|
|
35
|
-
* @param settingsArg Configuration options containing routes and other settings
|
|
36
|
-
* Routes define how traffic is matched and handled, with each route having:
|
|
37
|
-
* - match: criteria for matching traffic (ports, domains, paths, IPs)
|
|
38
|
-
* - action: what to do with matched traffic (forward, redirect, block)
|
|
39
|
-
*
|
|
40
|
-
* Example:
|
|
41
|
-
* ```ts
|
|
42
|
-
* const proxy = new SmartProxy({
|
|
43
|
-
* routes: [
|
|
44
|
-
* {
|
|
45
|
-
* match: {
|
|
46
|
-
* ports: 443,
|
|
47
|
-
* domains: ['example.com', '*.example.com']
|
|
48
|
-
* },
|
|
49
|
-
* action: {
|
|
50
|
-
* type: 'forward',
|
|
51
|
-
* target: { host: '10.0.0.1', port: 8443 },
|
|
52
|
-
* tls: { mode: 'passthrough' }
|
|
53
|
-
* }
|
|
54
|
-
* }
|
|
55
|
-
* ],
|
|
56
|
-
* defaults: {
|
|
57
|
-
* target: { host: 'localhost', port: 8080 },
|
|
58
|
-
* security: { ipAllowList: ['*'] }
|
|
59
|
-
* }
|
|
60
|
-
* });
|
|
61
|
-
* ```
|
|
62
|
-
*/
|
|
63
|
-
constructor(settingsArg: ISmartProxyOptions);
|
|
64
|
-
/**
|
|
65
|
-
* The settings for the SmartProxy
|
|
66
|
-
*/
|
|
67
|
-
settings: ISmartProxyOptions;
|
|
68
|
-
/**
|
|
69
|
-
* Initialize the Port80Handler for ACME certificate management
|
|
70
|
-
*/
|
|
71
|
-
private initializePort80Handler;
|
|
72
|
-
/**
|
|
73
|
-
* Start the proxy server with support for both configuration types
|
|
74
|
-
*/
|
|
75
|
-
start(): Promise<void>;
|
|
76
|
-
/**
|
|
77
|
-
* Extract domain configurations from routes for certificate provisioning
|
|
78
|
-
*
|
|
79
|
-
* Note: This method has been removed as we now work directly with routes
|
|
80
|
-
*/
|
|
81
|
-
/**
|
|
82
|
-
* Stop the proxy server
|
|
83
|
-
*/
|
|
84
|
-
stop(): Promise<void>;
|
|
85
|
-
/**
|
|
86
|
-
* Updates the domain configurations for the proxy
|
|
87
|
-
*
|
|
88
|
-
* Note: This legacy method has been removed. Use updateRoutes instead.
|
|
89
|
-
*/
|
|
90
|
-
updateDomainConfigs(): Promise<void>;
|
|
91
|
-
/**
|
|
92
|
-
* Update routes with new configuration
|
|
93
|
-
*
|
|
94
|
-
* This method replaces the current route configuration with the provided routes.
|
|
95
|
-
* It also provisions certificates for routes that require TLS termination and have
|
|
96
|
-
* `certificate: 'auto'` set in their TLS configuration.
|
|
97
|
-
*
|
|
98
|
-
* @param newRoutes Array of route configurations to use
|
|
99
|
-
*
|
|
100
|
-
* Example:
|
|
101
|
-
* ```ts
|
|
102
|
-
* proxy.updateRoutes([
|
|
103
|
-
* {
|
|
104
|
-
* match: { ports: 443, domains: 'secure.example.com' },
|
|
105
|
-
* action: {
|
|
106
|
-
* type: 'forward',
|
|
107
|
-
* target: { host: '10.0.0.1', port: 8443 },
|
|
108
|
-
* tls: { mode: 'terminate', certificate: 'auto' }
|
|
109
|
-
* }
|
|
110
|
-
* }
|
|
111
|
-
* ]);
|
|
112
|
-
* ```
|
|
113
|
-
*/
|
|
114
|
-
updateRoutes(newRoutes: IRouteConfig[]): Promise<void>;
|
|
115
|
-
/**
|
|
116
|
-
* Request a certificate for a specific domain
|
|
117
|
-
*
|
|
118
|
-
* @param domain The domain to request a certificate for
|
|
119
|
-
* @param routeName Optional route name to associate with the certificate
|
|
120
|
-
*/
|
|
121
|
-
requestCertificate(domain: string, routeName?: string): Promise<boolean>;
|
|
122
|
-
/**
|
|
123
|
-
* Validates if a domain name is valid for certificate issuance
|
|
124
|
-
*/
|
|
125
|
-
private isValidDomain;
|
|
126
|
-
/**
|
|
127
|
-
* Add a new listening port without changing the route configuration
|
|
128
|
-
*
|
|
129
|
-
* This allows you to add a port listener without updating routes.
|
|
130
|
-
* Useful for preparing to listen on a port before adding routes for it.
|
|
131
|
-
*
|
|
132
|
-
* @param port The port to start listening on
|
|
133
|
-
* @returns Promise that resolves when the port is listening
|
|
134
|
-
*/
|
|
135
|
-
addListeningPort(port: number): Promise<void>;
|
|
136
|
-
/**
|
|
137
|
-
* Stop listening on a specific port without changing the route configuration
|
|
138
|
-
*
|
|
139
|
-
* This allows you to stop a port listener without updating routes.
|
|
140
|
-
* Useful for temporary maintenance or port changes.
|
|
141
|
-
*
|
|
142
|
-
* @param port The port to stop listening on
|
|
143
|
-
* @returns Promise that resolves when the port is closed
|
|
144
|
-
*/
|
|
145
|
-
removeListeningPort(port: number): Promise<void>;
|
|
146
|
-
/**
|
|
147
|
-
* Get a list of all ports currently being listened on
|
|
148
|
-
*
|
|
149
|
-
* @returns Array of port numbers
|
|
150
|
-
*/
|
|
151
|
-
getListeningPorts(): number[];
|
|
152
|
-
/**
|
|
153
|
-
* Get statistics about current connections
|
|
154
|
-
*/
|
|
155
|
-
getStatistics(): any;
|
|
156
|
-
/**
|
|
157
|
-
* Get a list of eligible domains for ACME certificates
|
|
158
|
-
*/
|
|
159
|
-
getEligibleDomainsForCertificates(): string[];
|
|
160
|
-
/**
|
|
161
|
-
* Get NFTables status
|
|
162
|
-
*/
|
|
163
|
-
getNfTablesStatus(): Promise<Record<string, any>>;
|
|
164
|
-
/**
|
|
165
|
-
* Get status of certificates managed by Port80Handler
|
|
166
|
-
*/
|
|
167
|
-
getCertificateStatus(): any;
|
|
168
|
-
}
|