@push.rocks/smartproxy 19.3.2 → 19.3.4
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 +18 -35
- package/readme.plan.md +173 -271
- 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,86 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import type { IDomainConfig } from './domain-config.js';
|
|
3
|
-
import type { IForwardingHandler } from '../types/forwarding.types.js';
|
|
4
|
-
/**
|
|
5
|
-
* Events emitted by the DomainManager
|
|
6
|
-
*/
|
|
7
|
-
export declare enum DomainManagerEvents {
|
|
8
|
-
DOMAIN_ADDED = "domain-added",
|
|
9
|
-
DOMAIN_REMOVED = "domain-removed",
|
|
10
|
-
DOMAIN_MATCHED = "domain-matched",
|
|
11
|
-
DOMAIN_MATCH_FAILED = "domain-match-failed",
|
|
12
|
-
CERTIFICATE_NEEDED = "certificate-needed",
|
|
13
|
-
CERTIFICATE_LOADED = "certificate-loaded",
|
|
14
|
-
ERROR = "error"
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Manages domains and their forwarding handlers
|
|
18
|
-
*/
|
|
19
|
-
export declare class DomainManager extends plugins.EventEmitter {
|
|
20
|
-
private domainConfigs;
|
|
21
|
-
private domainHandlers;
|
|
22
|
-
/**
|
|
23
|
-
* Create a new DomainManager
|
|
24
|
-
* @param initialDomains Optional initial domain configurations
|
|
25
|
-
*/
|
|
26
|
-
constructor(initialDomains?: IDomainConfig[]);
|
|
27
|
-
/**
|
|
28
|
-
* Set or replace all domain configurations
|
|
29
|
-
* @param configs Array of domain configurations
|
|
30
|
-
*/
|
|
31
|
-
setDomainConfigs(configs: IDomainConfig[]): Promise<void>;
|
|
32
|
-
/**
|
|
33
|
-
* Add a new domain configuration
|
|
34
|
-
* @param config The domain configuration to add
|
|
35
|
-
*/
|
|
36
|
-
addDomainConfig(config: IDomainConfig): Promise<void>;
|
|
37
|
-
/**
|
|
38
|
-
* Remove a domain configuration
|
|
39
|
-
* @param domain The domain to remove
|
|
40
|
-
* @returns True if the domain was found and removed
|
|
41
|
-
*/
|
|
42
|
-
removeDomainConfig(domain: string): boolean;
|
|
43
|
-
/**
|
|
44
|
-
* Find the handler for a domain
|
|
45
|
-
* @param domain The domain to find a handler for
|
|
46
|
-
* @returns The handler or undefined if no match
|
|
47
|
-
*/
|
|
48
|
-
findHandlerForDomain(domain: string): IForwardingHandler | undefined;
|
|
49
|
-
/**
|
|
50
|
-
* Handle a connection for a domain
|
|
51
|
-
* @param domain The domain
|
|
52
|
-
* @param socket The client socket
|
|
53
|
-
* @returns True if the connection was handled
|
|
54
|
-
*/
|
|
55
|
-
handleConnection(domain: string, socket: plugins.net.Socket): boolean;
|
|
56
|
-
/**
|
|
57
|
-
* Handle an HTTP request for a domain
|
|
58
|
-
* @param domain The domain
|
|
59
|
-
* @param req The HTTP request
|
|
60
|
-
* @param res The HTTP response
|
|
61
|
-
* @returns True if the request was handled
|
|
62
|
-
*/
|
|
63
|
-
handleHttpRequest(domain: string, req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse): boolean;
|
|
64
|
-
/**
|
|
65
|
-
* Create handlers for a domain configuration
|
|
66
|
-
* @param config The domain configuration
|
|
67
|
-
*/
|
|
68
|
-
private createHandlersForDomain;
|
|
69
|
-
/**
|
|
70
|
-
* Set up event forwarding from a handler
|
|
71
|
-
* @param handler The handler
|
|
72
|
-
* @param config The domain configuration for this handler
|
|
73
|
-
*/
|
|
74
|
-
private setupHandlerEvents;
|
|
75
|
-
/**
|
|
76
|
-
* Find a handler for a domain using wildcard matching
|
|
77
|
-
* @param domain The domain to find a handler for
|
|
78
|
-
* @returns The handler or undefined if no match
|
|
79
|
-
*/
|
|
80
|
-
private findWildcardHandler;
|
|
81
|
-
/**
|
|
82
|
-
* Get all domain configurations
|
|
83
|
-
* @returns Array of domain configurations
|
|
84
|
-
*/
|
|
85
|
-
getDomainConfigs(): IDomainConfig[];
|
|
86
|
-
}
|
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import { ForwardingHandlerEvents } from '../types/forwarding.types.js';
|
|
3
|
-
import { ForwardingHandlerFactory } from './forwarding.factory.js';
|
|
4
|
-
/**
|
|
5
|
-
* Events emitted by the DomainManager
|
|
6
|
-
*/
|
|
7
|
-
export var DomainManagerEvents;
|
|
8
|
-
(function (DomainManagerEvents) {
|
|
9
|
-
DomainManagerEvents["DOMAIN_ADDED"] = "domain-added";
|
|
10
|
-
DomainManagerEvents["DOMAIN_REMOVED"] = "domain-removed";
|
|
11
|
-
DomainManagerEvents["DOMAIN_MATCHED"] = "domain-matched";
|
|
12
|
-
DomainManagerEvents["DOMAIN_MATCH_FAILED"] = "domain-match-failed";
|
|
13
|
-
DomainManagerEvents["CERTIFICATE_NEEDED"] = "certificate-needed";
|
|
14
|
-
DomainManagerEvents["CERTIFICATE_LOADED"] = "certificate-loaded";
|
|
15
|
-
DomainManagerEvents["ERROR"] = "error";
|
|
16
|
-
})(DomainManagerEvents || (DomainManagerEvents = {}));
|
|
17
|
-
/**
|
|
18
|
-
* Manages domains and their forwarding handlers
|
|
19
|
-
*/
|
|
20
|
-
export class DomainManager extends plugins.EventEmitter {
|
|
21
|
-
/**
|
|
22
|
-
* Create a new DomainManager
|
|
23
|
-
* @param initialDomains Optional initial domain configurations
|
|
24
|
-
*/
|
|
25
|
-
constructor(initialDomains) {
|
|
26
|
-
super();
|
|
27
|
-
this.domainConfigs = [];
|
|
28
|
-
this.domainHandlers = new Map();
|
|
29
|
-
if (initialDomains) {
|
|
30
|
-
this.setDomainConfigs(initialDomains);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Set or replace all domain configurations
|
|
35
|
-
* @param configs Array of domain configurations
|
|
36
|
-
*/
|
|
37
|
-
async setDomainConfigs(configs) {
|
|
38
|
-
// Clear existing handlers
|
|
39
|
-
this.domainHandlers.clear();
|
|
40
|
-
// Store new configurations
|
|
41
|
-
this.domainConfigs = [...configs];
|
|
42
|
-
// Initialize handlers for each domain
|
|
43
|
-
for (const config of this.domainConfigs) {
|
|
44
|
-
await this.createHandlersForDomain(config);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Add a new domain configuration
|
|
49
|
-
* @param config The domain configuration to add
|
|
50
|
-
*/
|
|
51
|
-
async addDomainConfig(config) {
|
|
52
|
-
// Check if any of these domains already exist
|
|
53
|
-
for (const domain of config.domains) {
|
|
54
|
-
if (this.domainHandlers.has(domain)) {
|
|
55
|
-
// Remove existing handler for this domain
|
|
56
|
-
this.domainHandlers.delete(domain);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
// Add the new configuration
|
|
60
|
-
this.domainConfigs.push(config);
|
|
61
|
-
// Create handlers for the new domain
|
|
62
|
-
await this.createHandlersForDomain(config);
|
|
63
|
-
this.emit(DomainManagerEvents.DOMAIN_ADDED, {
|
|
64
|
-
domains: config.domains,
|
|
65
|
-
forwardingType: config.forwarding.type
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Remove a domain configuration
|
|
70
|
-
* @param domain The domain to remove
|
|
71
|
-
* @returns True if the domain was found and removed
|
|
72
|
-
*/
|
|
73
|
-
removeDomainConfig(domain) {
|
|
74
|
-
// Find the config that includes this domain
|
|
75
|
-
const index = this.domainConfigs.findIndex(config => config.domains.includes(domain));
|
|
76
|
-
if (index === -1) {
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
// Get the config
|
|
80
|
-
const config = this.domainConfigs[index];
|
|
81
|
-
// Remove all handlers for this config
|
|
82
|
-
for (const domainName of config.domains) {
|
|
83
|
-
this.domainHandlers.delete(domainName);
|
|
84
|
-
}
|
|
85
|
-
// Remove the config
|
|
86
|
-
this.domainConfigs.splice(index, 1);
|
|
87
|
-
this.emit(DomainManagerEvents.DOMAIN_REMOVED, {
|
|
88
|
-
domains: config.domains
|
|
89
|
-
});
|
|
90
|
-
return true;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Find the handler for a domain
|
|
94
|
-
* @param domain The domain to find a handler for
|
|
95
|
-
* @returns The handler or undefined if no match
|
|
96
|
-
*/
|
|
97
|
-
findHandlerForDomain(domain) {
|
|
98
|
-
// Try exact match
|
|
99
|
-
if (this.domainHandlers.has(domain)) {
|
|
100
|
-
return this.domainHandlers.get(domain);
|
|
101
|
-
}
|
|
102
|
-
// Try wildcard matches
|
|
103
|
-
const wildcardHandler = this.findWildcardHandler(domain);
|
|
104
|
-
if (wildcardHandler) {
|
|
105
|
-
return wildcardHandler;
|
|
106
|
-
}
|
|
107
|
-
// No match found
|
|
108
|
-
return undefined;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Handle a connection for a domain
|
|
112
|
-
* @param domain The domain
|
|
113
|
-
* @param socket The client socket
|
|
114
|
-
* @returns True if the connection was handled
|
|
115
|
-
*/
|
|
116
|
-
handleConnection(domain, socket) {
|
|
117
|
-
const handler = this.findHandlerForDomain(domain);
|
|
118
|
-
if (!handler) {
|
|
119
|
-
this.emit(DomainManagerEvents.DOMAIN_MATCH_FAILED, {
|
|
120
|
-
domain,
|
|
121
|
-
remoteAddress: socket.remoteAddress
|
|
122
|
-
});
|
|
123
|
-
return false;
|
|
124
|
-
}
|
|
125
|
-
this.emit(DomainManagerEvents.DOMAIN_MATCHED, {
|
|
126
|
-
domain,
|
|
127
|
-
handlerType: handler.constructor.name,
|
|
128
|
-
remoteAddress: socket.remoteAddress
|
|
129
|
-
});
|
|
130
|
-
// Handle the connection
|
|
131
|
-
handler.handleConnection(socket);
|
|
132
|
-
return true;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Handle an HTTP request for a domain
|
|
136
|
-
* @param domain The domain
|
|
137
|
-
* @param req The HTTP request
|
|
138
|
-
* @param res The HTTP response
|
|
139
|
-
* @returns True if the request was handled
|
|
140
|
-
*/
|
|
141
|
-
handleHttpRequest(domain, req, res) {
|
|
142
|
-
const handler = this.findHandlerForDomain(domain);
|
|
143
|
-
if (!handler) {
|
|
144
|
-
this.emit(DomainManagerEvents.DOMAIN_MATCH_FAILED, {
|
|
145
|
-
domain,
|
|
146
|
-
remoteAddress: req.socket.remoteAddress
|
|
147
|
-
});
|
|
148
|
-
return false;
|
|
149
|
-
}
|
|
150
|
-
this.emit(DomainManagerEvents.DOMAIN_MATCHED, {
|
|
151
|
-
domain,
|
|
152
|
-
handlerType: handler.constructor.name,
|
|
153
|
-
remoteAddress: req.socket.remoteAddress
|
|
154
|
-
});
|
|
155
|
-
// Handle the request
|
|
156
|
-
handler.handleHttpRequest(req, res);
|
|
157
|
-
return true;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Create handlers for a domain configuration
|
|
161
|
-
* @param config The domain configuration
|
|
162
|
-
*/
|
|
163
|
-
async createHandlersForDomain(config) {
|
|
164
|
-
try {
|
|
165
|
-
// Create a handler for this forwarding configuration
|
|
166
|
-
const handler = ForwardingHandlerFactory.createHandler(config.forwarding);
|
|
167
|
-
// Initialize the handler
|
|
168
|
-
await handler.initialize();
|
|
169
|
-
// Set up event forwarding
|
|
170
|
-
this.setupHandlerEvents(handler, config);
|
|
171
|
-
// Store the handler for each domain in the config
|
|
172
|
-
for (const domain of config.domains) {
|
|
173
|
-
this.domainHandlers.set(domain, handler);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
catch (error) {
|
|
177
|
-
this.emit(DomainManagerEvents.ERROR, {
|
|
178
|
-
domains: config.domains,
|
|
179
|
-
error: error instanceof Error ? error.message : String(error)
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Set up event forwarding from a handler
|
|
185
|
-
* @param handler The handler
|
|
186
|
-
* @param config The domain configuration for this handler
|
|
187
|
-
*/
|
|
188
|
-
setupHandlerEvents(handler, config) {
|
|
189
|
-
// Forward relevant events
|
|
190
|
-
handler.on(ForwardingHandlerEvents.CERTIFICATE_NEEDED, (data) => {
|
|
191
|
-
this.emit(DomainManagerEvents.CERTIFICATE_NEEDED, {
|
|
192
|
-
...data,
|
|
193
|
-
domains: config.domains
|
|
194
|
-
});
|
|
195
|
-
});
|
|
196
|
-
handler.on(ForwardingHandlerEvents.CERTIFICATE_LOADED, (data) => {
|
|
197
|
-
this.emit(DomainManagerEvents.CERTIFICATE_LOADED, {
|
|
198
|
-
...data,
|
|
199
|
-
domains: config.domains
|
|
200
|
-
});
|
|
201
|
-
});
|
|
202
|
-
handler.on(ForwardingHandlerEvents.ERROR, (data) => {
|
|
203
|
-
this.emit(DomainManagerEvents.ERROR, {
|
|
204
|
-
...data,
|
|
205
|
-
domains: config.domains
|
|
206
|
-
});
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Find a handler for a domain using wildcard matching
|
|
211
|
-
* @param domain The domain to find a handler for
|
|
212
|
-
* @returns The handler or undefined if no match
|
|
213
|
-
*/
|
|
214
|
-
findWildcardHandler(domain) {
|
|
215
|
-
// Exact match already checked in findHandlerForDomain
|
|
216
|
-
// Try subdomain wildcard (*.example.com)
|
|
217
|
-
if (domain.includes('.')) {
|
|
218
|
-
const parts = domain.split('.');
|
|
219
|
-
if (parts.length > 2) {
|
|
220
|
-
const wildcardDomain = `*.${parts.slice(1).join('.')}`;
|
|
221
|
-
if (this.domainHandlers.has(wildcardDomain)) {
|
|
222
|
-
return this.domainHandlers.get(wildcardDomain);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
// Try full wildcard
|
|
227
|
-
if (this.domainHandlers.has('*')) {
|
|
228
|
-
return this.domainHandlers.get('*');
|
|
229
|
-
}
|
|
230
|
-
// No match found
|
|
231
|
-
return undefined;
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Get all domain configurations
|
|
235
|
-
* @returns Array of domain configurations
|
|
236
|
-
*/
|
|
237
|
-
getDomainConfigs() {
|
|
238
|
-
return [...this.domainConfigs];
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9zbWFydHByb3h5L2ZvcndhcmRpbmcvZG9tYWluLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUc1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRTs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLG1CQVFYO0FBUkQsV0FBWSxtQkFBbUI7SUFDN0Isb0RBQTZCLENBQUE7SUFDN0Isd0RBQWlDLENBQUE7SUFDakMsd0RBQWlDLENBQUE7SUFDakMsa0VBQTJDLENBQUE7SUFDM0MsZ0VBQXlDLENBQUE7SUFDekMsZ0VBQXlDLENBQUE7SUFDekMsc0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQVE5QjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxPQUFPLENBQUMsWUFBWTtJQUlyRDs7O09BR0c7SUFDSCxZQUFZLGNBQWdDO1FBQzFDLEtBQUssRUFBRSxDQUFDO1FBUkYsa0JBQWEsR0FBb0IsRUFBRSxDQUFDO1FBQ3BDLG1CQUFjLEdBQW9DLElBQUksR0FBRyxFQUFFLENBQUM7UUFTbEUsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBd0I7UUFDcEQsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFNUIsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxHQUFHLE9B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
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { IForwardConfig, IForwardingHandler } from '../types/forwarding.types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Factory for creating forwarding handlers based on the configuration type
|
|
4
|
-
*/
|
|
5
|
-
export declare class ForwardingHandlerFactory {
|
|
6
|
-
/**
|
|
7
|
-
* Create a forwarding handler based on the configuration
|
|
8
|
-
* @param config The forwarding configuration
|
|
9
|
-
* @returns The appropriate forwarding handler
|
|
10
|
-
*/
|
|
11
|
-
static createHandler(config: IForwardConfig): IForwardingHandler;
|
|
12
|
-
/**
|
|
13
|
-
* Apply default values to a forwarding configuration based on its type
|
|
14
|
-
* @param config The original forwarding configuration
|
|
15
|
-
* @returns A configuration with defaults applied
|
|
16
|
-
*/
|
|
17
|
-
static applyDefaults(config: IForwardConfig): IForwardConfig;
|
|
18
|
-
/**
|
|
19
|
-
* Validate a forwarding configuration
|
|
20
|
-
* @param config The configuration to validate
|
|
21
|
-
* @throws Error if the configuration is invalid
|
|
22
|
-
*/
|
|
23
|
-
static validateConfig(config: IForwardConfig): void;
|
|
24
|
-
}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import { HttpForwardingHandler } from './http.handler.js';
|
|
2
|
-
import { HttpsPassthroughHandler } from './https-passthrough.handler.js';
|
|
3
|
-
import { HttpsTerminateToHttpHandler } from './https-terminate-to-http.handler.js';
|
|
4
|
-
import { HttpsTerminateToHttpsHandler } from './https-terminate-to-https.handler.js';
|
|
5
|
-
/**
|
|
6
|
-
* Factory for creating forwarding handlers based on the configuration type
|
|
7
|
-
*/
|
|
8
|
-
export class ForwardingHandlerFactory {
|
|
9
|
-
/**
|
|
10
|
-
* Create a forwarding handler based on the configuration
|
|
11
|
-
* @param config The forwarding configuration
|
|
12
|
-
* @returns The appropriate forwarding handler
|
|
13
|
-
*/
|
|
14
|
-
static createHandler(config) {
|
|
15
|
-
// Create the appropriate handler based on the forwarding type
|
|
16
|
-
switch (config.type) {
|
|
17
|
-
case 'http-only':
|
|
18
|
-
return new HttpForwardingHandler(config);
|
|
19
|
-
case 'https-passthrough':
|
|
20
|
-
return new HttpsPassthroughHandler(config);
|
|
21
|
-
case 'https-terminate-to-http':
|
|
22
|
-
return new HttpsTerminateToHttpHandler(config);
|
|
23
|
-
case 'https-terminate-to-https':
|
|
24
|
-
return new HttpsTerminateToHttpsHandler(config);
|
|
25
|
-
default:
|
|
26
|
-
// Type system should prevent this, but just in case:
|
|
27
|
-
throw new Error(`Unknown forwarding type: ${config.type}`);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Apply default values to a forwarding configuration based on its type
|
|
32
|
-
* @param config The original forwarding configuration
|
|
33
|
-
* @returns A configuration with defaults applied
|
|
34
|
-
*/
|
|
35
|
-
static applyDefaults(config) {
|
|
36
|
-
// Create a deep copy of the configuration
|
|
37
|
-
const result = JSON.parse(JSON.stringify(config));
|
|
38
|
-
// Apply defaults based on forwarding type
|
|
39
|
-
switch (config.type) {
|
|
40
|
-
case 'http-only':
|
|
41
|
-
// Set defaults for HTTP-only mode
|
|
42
|
-
result.http = {
|
|
43
|
-
enabled: true,
|
|
44
|
-
...config.http
|
|
45
|
-
};
|
|
46
|
-
break;
|
|
47
|
-
case 'https-passthrough':
|
|
48
|
-
// Set defaults for HTTPS passthrough
|
|
49
|
-
result.https = {
|
|
50
|
-
forwardSni: true,
|
|
51
|
-
...config.https
|
|
52
|
-
};
|
|
53
|
-
// SNI forwarding doesn't do HTTP
|
|
54
|
-
result.http = {
|
|
55
|
-
enabled: false,
|
|
56
|
-
...config.http
|
|
57
|
-
};
|
|
58
|
-
break;
|
|
59
|
-
case 'https-terminate-to-http':
|
|
60
|
-
// Set defaults for HTTPS termination to HTTP
|
|
61
|
-
result.https = {
|
|
62
|
-
...config.https
|
|
63
|
-
};
|
|
64
|
-
// Support HTTP access by default in this mode
|
|
65
|
-
result.http = {
|
|
66
|
-
enabled: true,
|
|
67
|
-
redirectToHttps: true,
|
|
68
|
-
...config.http
|
|
69
|
-
};
|
|
70
|
-
// Enable ACME by default
|
|
71
|
-
result.acme = {
|
|
72
|
-
enabled: true,
|
|
73
|
-
maintenance: true,
|
|
74
|
-
...config.acme
|
|
75
|
-
};
|
|
76
|
-
break;
|
|
77
|
-
case 'https-terminate-to-https':
|
|
78
|
-
// Similar to terminate-to-http but with different target handling
|
|
79
|
-
result.https = {
|
|
80
|
-
...config.https
|
|
81
|
-
};
|
|
82
|
-
result.http = {
|
|
83
|
-
enabled: true,
|
|
84
|
-
redirectToHttps: true,
|
|
85
|
-
...config.http
|
|
86
|
-
};
|
|
87
|
-
result.acme = {
|
|
88
|
-
enabled: true,
|
|
89
|
-
maintenance: true,
|
|
90
|
-
...config.acme
|
|
91
|
-
};
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
return result;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Validate a forwarding configuration
|
|
98
|
-
* @param config The configuration to validate
|
|
99
|
-
* @throws Error if the configuration is invalid
|
|
100
|
-
*/
|
|
101
|
-
static validateConfig(config) {
|
|
102
|
-
// Validate common properties
|
|
103
|
-
if (!config.target) {
|
|
104
|
-
throw new Error('Forwarding configuration must include a target');
|
|
105
|
-
}
|
|
106
|
-
if (!config.target.host || (Array.isArray(config.target.host) && config.target.host.length === 0)) {
|
|
107
|
-
throw new Error('Target must include a host or array of hosts');
|
|
108
|
-
}
|
|
109
|
-
if (!config.target.port || config.target.port <= 0 || config.target.port > 65535) {
|
|
110
|
-
throw new Error('Target must include a valid port (1-65535)');
|
|
111
|
-
}
|
|
112
|
-
// Type-specific validation
|
|
113
|
-
switch (config.type) {
|
|
114
|
-
case 'http-only':
|
|
115
|
-
// HTTP-only needs http.enabled to be true
|
|
116
|
-
if (config.http?.enabled === false) {
|
|
117
|
-
throw new Error('HTTP-only forwarding must have HTTP enabled');
|
|
118
|
-
}
|
|
119
|
-
break;
|
|
120
|
-
case 'https-passthrough':
|
|
121
|
-
// HTTPS passthrough doesn't support HTTP
|
|
122
|
-
if (config.http?.enabled === true) {
|
|
123
|
-
throw new Error('HTTPS passthrough does not support HTTP');
|
|
124
|
-
}
|
|
125
|
-
// HTTPS passthrough doesn't work with ACME
|
|
126
|
-
if (config.acme?.enabled === true) {
|
|
127
|
-
throw new Error('HTTPS passthrough does not support ACME');
|
|
128
|
-
}
|
|
129
|
-
break;
|
|
130
|
-
case 'https-terminate-to-http':
|
|
131
|
-
case 'https-terminate-to-https':
|
|
132
|
-
// These modes support all options, nothing specific to validate
|
|
133
|
-
break;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yd2FyZGluZy5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvc21hcnRwcm94eS9mb3J3YXJkaW5nL2ZvcndhcmRpbmcuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUVyRjs7R0FFRztBQUNILE1BQU0sT0FBTyx3QkFBd0I7SUFDbkM7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBc0I7UUFDaEQsOERBQThEO1FBQzlELFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCLEtBQUssV0FBVztnQkFDZCxPQUFPLElBQUkscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFM0MsS0FBSyxtQkFBbUI7Z0JBQ3RCLE9BQU8sSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU3QyxLQUFLLHlCQUF5QjtnQkFDNUIsT0FBTyxJQUFJLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWpELEtBQUssMEJBQTBCO2dCQUM3QixPQUFPLElBQUksNEJBQTRCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbEQ7Z0JBQ0UscURBQXFEO2dCQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE2QixNQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQXNCO1FBQ2hELDBDQUEwQztRQUMxQyxNQUFNLE1BQU0sR0FBbUIsSUFBSSxDQUFDLEtB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
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import type { IForwardConfig, IForwardingHandler } from '../types/forwarding.types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Base class for all forwarding handlers
|
|
5
|
-
*/
|
|
6
|
-
export declare abstract class ForwardingHandler extends plugins.EventEmitter implements IForwardingHandler {
|
|
7
|
-
protected config: IForwardConfig;
|
|
8
|
-
/**
|
|
9
|
-
* Create a new ForwardingHandler
|
|
10
|
-
* @param config The forwarding configuration
|
|
11
|
-
*/
|
|
12
|
-
constructor(config: IForwardConfig);
|
|
13
|
-
/**
|
|
14
|
-
* Initialize the handler
|
|
15
|
-
* Base implementation does nothing, subclasses should override as needed
|
|
16
|
-
*/
|
|
17
|
-
initialize(): Promise<void>;
|
|
18
|
-
/**
|
|
19
|
-
* Handle a new socket connection
|
|
20
|
-
* @param socket The incoming socket connection
|
|
21
|
-
*/
|
|
22
|
-
abstract handleConnection(socket: plugins.net.Socket): void;
|
|
23
|
-
/**
|
|
24
|
-
* Handle an HTTP request
|
|
25
|
-
* @param req The HTTP request
|
|
26
|
-
* @param res The HTTP response
|
|
27
|
-
*/
|
|
28
|
-
abstract handleHttpRequest(req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse): void;
|
|
29
|
-
/**
|
|
30
|
-
* Get a target from the configuration, supporting round-robin selection
|
|
31
|
-
* @returns A resolved target object with host and port
|
|
32
|
-
*/
|
|
33
|
-
protected getTargetFromConfig(): {
|
|
34
|
-
host: string;
|
|
35
|
-
port: number;
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* Redirect an HTTP request to HTTPS
|
|
39
|
-
* @param req The HTTP request
|
|
40
|
-
* @param res The HTTP response
|
|
41
|
-
*/
|
|
42
|
-
protected redirectToHttps(req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse): void;
|
|
43
|
-
/**
|
|
44
|
-
* Apply custom headers from configuration
|
|
45
|
-
* @param headers The original headers
|
|
46
|
-
* @param variables Variables to replace in the headers
|
|
47
|
-
* @returns The headers with custom values applied
|
|
48
|
-
*/
|
|
49
|
-
protected applyCustomHeaders(headers: Record<string, string | string[] | undefined>, variables: Record<string, string>): Record<string, string | string[] | undefined>;
|
|
50
|
-
/**
|
|
51
|
-
* Get the timeout for this connection from configuration
|
|
52
|
-
* @returns Timeout in milliseconds
|
|
53
|
-
*/
|
|
54
|
-
protected getTimeout(): number;
|
|
55
|
-
}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import { ForwardingHandlerEvents } from '../types/forwarding.types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Base class for all forwarding handlers
|
|
5
|
-
*/
|
|
6
|
-
export class ForwardingHandler extends plugins.EventEmitter {
|
|
7
|
-
/**
|
|
8
|
-
* Create a new ForwardingHandler
|
|
9
|
-
* @param config The forwarding configuration
|
|
10
|
-
*/
|
|
11
|
-
constructor(config) {
|
|
12
|
-
super();
|
|
13
|
-
this.config = config;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Initialize the handler
|
|
17
|
-
* Base implementation does nothing, subclasses should override as needed
|
|
18
|
-
*/
|
|
19
|
-
async initialize() {
|
|
20
|
-
// Base implementation - no initialization needed
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Get a target from the configuration, supporting round-robin selection
|
|
24
|
-
* @returns A resolved target object with host and port
|
|
25
|
-
*/
|
|
26
|
-
getTargetFromConfig() {
|
|
27
|
-
const { target } = this.config;
|
|
28
|
-
// Handle round-robin host selection
|
|
29
|
-
if (Array.isArray(target.host)) {
|
|
30
|
-
if (target.host.length === 0) {
|
|
31
|
-
throw new Error('No target hosts specified');
|
|
32
|
-
}
|
|
33
|
-
// Simple round-robin selection
|
|
34
|
-
const randomIndex = Math.floor(Math.random() * target.host.length);
|
|
35
|
-
return {
|
|
36
|
-
host: target.host[randomIndex],
|
|
37
|
-
port: target.port
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
// Single host
|
|
41
|
-
return {
|
|
42
|
-
host: target.host,
|
|
43
|
-
port: target.port
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Redirect an HTTP request to HTTPS
|
|
48
|
-
* @param req The HTTP request
|
|
49
|
-
* @param res The HTTP response
|
|
50
|
-
*/
|
|
51
|
-
redirectToHttps(req, res) {
|
|
52
|
-
const host = req.headers.host || '';
|
|
53
|
-
const path = req.url || '/';
|
|
54
|
-
const redirectUrl = `https://${host}${path}`;
|
|
55
|
-
res.writeHead(301, {
|
|
56
|
-
'Location': redirectUrl,
|
|
57
|
-
'Cache-Control': 'no-cache'
|
|
58
|
-
});
|
|
59
|
-
res.end(`Redirecting to ${redirectUrl}`);
|
|
60
|
-
this.emit(ForwardingHandlerEvents.HTTP_RESPONSE, {
|
|
61
|
-
statusCode: 301,
|
|
62
|
-
headers: { 'Location': redirectUrl },
|
|
63
|
-
size: 0
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Apply custom headers from configuration
|
|
68
|
-
* @param headers The original headers
|
|
69
|
-
* @param variables Variables to replace in the headers
|
|
70
|
-
* @returns The headers with custom values applied
|
|
71
|
-
*/
|
|
72
|
-
applyCustomHeaders(headers, variables) {
|
|
73
|
-
const customHeaders = this.config.advanced?.headers || {};
|
|
74
|
-
const result = { ...headers };
|
|
75
|
-
// Apply custom headers with variable substitution
|
|
76
|
-
for (const [key, value] of Object.entries(customHeaders)) {
|
|
77
|
-
let processedValue = value;
|
|
78
|
-
// Replace variables in the header value
|
|
79
|
-
for (const [varName, varValue] of Object.entries(variables)) {
|
|
80
|
-
processedValue = processedValue.replace(`{${varName}}`, varValue);
|
|
81
|
-
}
|
|
82
|
-
result[key] = processedValue;
|
|
83
|
-
}
|
|
84
|
-
return result;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Get the timeout for this connection from configuration
|
|
88
|
-
* @returns Timeout in milliseconds
|
|
89
|
-
*/
|
|
90
|
-
getTimeout() {
|
|
91
|
-
return this.config.advanced?.timeout || 60000; // Default: 60 seconds
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yd2FyZGluZy5oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvc21hcnRwcm94eS9mb3J3YXJkaW5nL2ZvcndhcmRpbmcuaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBSzVDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXZFOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSxPQUFPLENBQUMsWUFBWTtJQUNsRTs7O09BR0c7SUFDSCxZQUFzQixNQUFzQjtRQUMxQyxLQUFLLEVBQUUsQ0FBQztRQURZLFdBQU0sR0FBTixNQUFNLENBQWdCO0lBRTVDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsVUFBVTtRQUNyQixpREFBaUQ7SUFDbkQsQ0FBQztJQWVEOzs7T0FHRztJQUNPLG1CQUFtQjtRQUMzQixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUUvQixvQ0FBb0M7UUFDcEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUMvQyxDQUFDO1lBRUQsK0JBQStCO1lBQy9CLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkUsT0FBTztnQkFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQzlCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTthQUNsQixDQUFDO1FBQ0osQ0FBQztRQUVELGNBQWM7UUFDZCxPQUFPO1lBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtTQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxlQUFlLENBQUMsR0FBaUMsRUFBRSxHQUFnQztRQUMzRixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDcEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDNUIsTUFBTSxXQUFXLEdBQUcsV0FBVyxJQUFJLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFFN0MsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDakIsVUFBVSxFQUFFLFdBQVc7WUFDdkIsZUFBZSxFQUFFLFVBQVU7U0FDNUIsQ0FBQyxDQUFDO1FBQ0gsR0FBRyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUV6QyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGFBQWEsRUFBRTtZQUMvQyxVQUFVLEVBQUUsR0FBRztZQUNmLE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUU7WUFDcEMsSUFBSSxFQUFFLENBQUM7U0FDUixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTyxrQkFBa0IsQ0FDMUIsT0FBc0QsRUFDdEQsU0FBaUM7UUFFakMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUMxRCxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFFOUIsa0RBQWtEO1FBQ2xELEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDekQsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBRTNCLHdDQUF3QztZQUN4QyxLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUM1RCxjQUFjLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFFRCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUFDO1FBQy9CLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ08sVUFBVTtRQUNsQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxzQkFBc0I7SUFDdkUsQ0FBQztDQUNGIn0=
|