@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
package/readme.plan.md
CHANGED
|
@@ -1,277 +1,172 @@
|
|
|
1
|
-
# SmartProxy
|
|
2
|
-
|
|
3
|
-
cat /home/philkunz/.claude/CLAUDE.md
|
|
4
|
-
|
|
5
|
-
## Critical Bug Fix: Port 80 EADDRINUSE with ACME Challenge Routes
|
|
6
|
-
|
|
7
|
-
### Problem Statement
|
|
8
|
-
SmartProxy encounters an "EADDRINUSE" error on port 80 when provisioning multiple ACME certificates. The issue occurs because the certificate manager adds and removes the challenge route for each certificate individually, causing race conditions when multiple certificates are provisioned concurrently.
|
|
9
|
-
|
|
10
|
-
### Root Cause
|
|
11
|
-
The `SmartCertManager` class adds the ACME challenge route (port 80) before provisioning each certificate and removes it afterward. When multiple certificates are provisioned:
|
|
12
|
-
1. Each provisioning cycle adds its own challenge route
|
|
13
|
-
2. This triggers `updateRoutes()` which calls `PortManager.updatePorts()`
|
|
14
|
-
3. Port 80 is repeatedly added/removed, causing binding conflicts
|
|
15
|
-
|
|
16
|
-
### Implementation Plan
|
|
17
|
-
|
|
18
|
-
#### Phase 1: Refactor Challenge Route Lifecycle
|
|
19
|
-
1. **Modify challenge route handling** in `SmartCertManager`
|
|
20
|
-
- [x] Add challenge route once during initialization if ACME is configured
|
|
21
|
-
- [x] Keep challenge route active throughout entire certificate provisioning
|
|
22
|
-
- [x] Remove challenge route only after all certificates are provisioned
|
|
23
|
-
- [x] Add concurrency control to prevent multiple simultaneous route updates
|
|
24
|
-
|
|
25
|
-
#### Phase 2: Update Certificate Provisioning Flow
|
|
26
|
-
2. **Refactor certificate provisioning methods**
|
|
27
|
-
- [x] Separate challenge route management from individual certificate provisioning
|
|
28
|
-
- [x] Update `provisionAcmeCertificate()` to not add/remove challenge routes
|
|
29
|
-
- [x] Modify `provisionAllCertificates()` to handle challenge route lifecycle
|
|
30
|
-
- [x] Add error handling for challenge route initialization failures
|
|
31
|
-
|
|
32
|
-
#### Phase 3: Implement Concurrency Controls
|
|
33
|
-
3. **Add synchronization mechanisms**
|
|
34
|
-
- [x] Implement mutex/lock for challenge route operations
|
|
35
|
-
- [x] Ensure certificate provisioning is properly serialized
|
|
36
|
-
- [x] Add safeguards against duplicate challenge routes
|
|
37
|
-
- [x] Handle edge cases (shutdown during provisioning, renewal conflicts)
|
|
38
|
-
|
|
39
|
-
#### Phase 4: Enhance Error Handling
|
|
40
|
-
4. **Improve error handling and recovery**
|
|
41
|
-
- [x] Add specific error types for port conflicts
|
|
42
|
-
- [x] Implement retry logic for transient port binding issues
|
|
43
|
-
- [x] Add detailed logging for challenge route lifecycle
|
|
44
|
-
- [x] Ensure proper cleanup on errors
|
|
45
|
-
|
|
46
|
-
#### Phase 5: Create Comprehensive Tests
|
|
47
|
-
5. **Write tests for challenge route management**
|
|
48
|
-
- [x] Test concurrent certificate provisioning
|
|
49
|
-
- [x] Test challenge route persistence during provisioning
|
|
50
|
-
- [x] Test error scenarios (port already in use)
|
|
51
|
-
- [x] Test cleanup after provisioning
|
|
52
|
-
- [x] Test renewal scenarios with existing challenge routes
|
|
53
|
-
|
|
54
|
-
#### Phase 6: Update Documentation
|
|
55
|
-
6. **Document the new behavior**
|
|
56
|
-
- [x] Update certificate management documentation
|
|
57
|
-
- [x] Add troubleshooting guide for port conflicts
|
|
58
|
-
- [x] Document the challenge route lifecycle
|
|
59
|
-
- [x] Include examples of proper ACME configuration
|
|
60
|
-
|
|
61
|
-
### Technical Details
|
|
62
|
-
|
|
63
|
-
#### Specific Code Changes
|
|
64
|
-
|
|
65
|
-
1. In `SmartCertManager.initialize()`:
|
|
66
|
-
```typescript
|
|
67
|
-
// Add challenge route once at initialization
|
|
68
|
-
if (hasAcmeRoutes && this.acmeOptions?.email) {
|
|
69
|
-
await this.addChallengeRoute();
|
|
70
|
-
}
|
|
71
|
-
```
|
|
1
|
+
# SmartProxy Architecture Refactoring Plan
|
|
72
2
|
|
|
73
|
-
|
|
74
|
-
```typescript
|
|
75
|
-
// Remove these lines:
|
|
76
|
-
// await this.addChallengeRoute();
|
|
77
|
-
// await this.removeChallengeRoute();
|
|
78
|
-
```
|
|
3
|
+
## Overview
|
|
79
4
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
5
|
+
Refactor the proxy architecture to provide clearer separation of concerns between HTTP/HTTPS traffic handling and low-level connection routing.
|
|
6
|
+
|
|
7
|
+
## Current Architecture Problems
|
|
8
|
+
|
|
9
|
+
1. NetworkProxy name doesn't clearly indicate it handles HTTP/HTTPS
|
|
10
|
+
2. HTTP parsing logic is duplicated in RouteConnectionHandler
|
|
11
|
+
3. Redirect and static route handling is embedded in SmartProxy
|
|
12
|
+
4. Unclear separation between TCP routing and HTTP processing
|
|
13
|
+
|
|
14
|
+
## Proposed Architecture
|
|
15
|
+
|
|
16
|
+
### HttpProxy (renamed from NetworkProxy)
|
|
17
|
+
**Purpose**: Handle all HTTP/HTTPS traffic with TLS termination
|
|
18
|
+
|
|
19
|
+
**Responsibilities**:
|
|
20
|
+
- TLS termination for HTTPS
|
|
21
|
+
- HTTP/1.1 and HTTP/2 protocol handling
|
|
22
|
+
- HTTP request/response parsing
|
|
23
|
+
- HTTP to HTTPS redirects
|
|
24
|
+
- ACME challenge handling
|
|
25
|
+
- Static route handlers
|
|
26
|
+
- WebSocket protocol upgrades
|
|
27
|
+
- Connection pooling for backend servers
|
|
28
|
+
- Certificate management (ACME and static)
|
|
29
|
+
|
|
30
|
+
### SmartProxy
|
|
31
|
+
**Purpose**: Low-level connection router and port manager
|
|
32
|
+
|
|
33
|
+
**Responsibilities**:
|
|
34
|
+
- Port management (listen on multiple ports)
|
|
35
|
+
- Route-based connection routing
|
|
36
|
+
- TLS passthrough (SNI-based routing)
|
|
37
|
+
- NFTables integration
|
|
38
|
+
- Delegate HTTP/HTTPS connections to HttpProxy
|
|
39
|
+
- Raw TCP proxying
|
|
40
|
+
- Connection lifecycle management
|
|
41
|
+
|
|
42
|
+
## Implementation Plan
|
|
43
|
+
|
|
44
|
+
### Phase 1: Rename and Reorganize NetworkProxy ✅
|
|
45
|
+
|
|
46
|
+
1. **Rename NetworkProxy to HttpProxy**
|
|
47
|
+
- Renamed directory from `network-proxy` to `http-proxy`
|
|
48
|
+
- Updated all imports and references
|
|
49
|
+
|
|
50
|
+
2. **Update class and file names**
|
|
51
|
+
- Renamed `network-proxy.ts` to `http-proxy.ts`
|
|
52
|
+
- Updated `NetworkProxy` class to `HttpProxy` class
|
|
53
|
+
- Updated all type definitions and interfaces
|
|
54
|
+
|
|
55
|
+
3. **Update exports**
|
|
56
|
+
- Updated exports in `ts/index.ts`
|
|
57
|
+
- Fixed imports across the codebase
|
|
58
|
+
|
|
59
|
+
### Phase 2: Extract HTTP Logic from SmartProxy ✅
|
|
87
60
|
|
|
88
|
-
|
|
61
|
+
1. **Create HTTP handler modules in HttpProxy**
|
|
62
|
+
- Created handlers directory with:
|
|
63
|
+
- `redirect-handler.ts` - HTTP redirect logic
|
|
64
|
+
- `static-handler.ts` - Static/ACME route handling
|
|
65
|
+
- `index.ts` - Module exports
|
|
66
|
+
|
|
67
|
+
2. **Move HTTP parsing from RouteConnectionHandler**
|
|
68
|
+
- Updated `handleRedirectAction` to delegate to `RedirectHandler`
|
|
69
|
+
- Updated `handleStaticAction` to delegate to `StaticHandler`
|
|
70
|
+
- Removed duplicated HTTP parsing logic
|
|
71
|
+
|
|
72
|
+
3. **Clean up references and naming**
|
|
73
|
+
- Updated all NetworkProxy references to HttpProxy
|
|
74
|
+
- Renamed config properties: `useNetworkProxy` → `useHttpProxy`
|
|
75
|
+
- Renamed config properties: `networkProxyPort` → `httpProxyPort`
|
|
76
|
+
- Fixed HttpProxyBridge methods and references
|
|
77
|
+
|
|
78
|
+
### Phase 3: Simplify SmartProxy
|
|
79
|
+
|
|
80
|
+
1. **Update RouteConnectionHandler**
|
|
81
|
+
- Remove embedded HTTP parsing
|
|
82
|
+
- Delegate HTTP routes to HttpProxy
|
|
83
|
+
- Focus on connection routing only
|
|
84
|
+
|
|
85
|
+
2. **Simplified route handling**
|
|
89
86
|
```typescript
|
|
90
|
-
|
|
87
|
+
// Simplified handleRedirectAction
|
|
88
|
+
private handleRedirectAction(socket, record, route) {
|
|
89
|
+
// Delegate to HttpProxy
|
|
90
|
+
this.httpProxy.handleRedirect(socket, route);
|
|
91
|
+
}
|
|
91
92
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
} else {
|
|
97
|
-
await this.removeChallengeRoute();
|
|
98
|
-
}
|
|
99
|
-
});
|
|
93
|
+
// Simplified handleStaticAction
|
|
94
|
+
private handleStaticAction(socket, record, route) {
|
|
95
|
+
// Delegate to HttpProxy
|
|
96
|
+
this.httpProxy.handleStatic(socket, route);
|
|
100
97
|
}
|
|
101
98
|
```
|
|
102
99
|
|
|
103
|
-
|
|
104
|
-
-
|
|
105
|
-
-
|
|
106
|
-
- [x] Port 80 is only bound once per SmartProxy instance
|
|
107
|
-
- [x] Proper cleanup on shutdown or error
|
|
108
|
-
- [x] All tests pass
|
|
109
|
-
- [x] Documentation clearly explains the behavior
|
|
110
|
-
|
|
111
|
-
### Implementation Summary
|
|
112
|
-
|
|
113
|
-
The port 80 EADDRINUSE issue has been successfully fixed through the following changes:
|
|
114
|
-
|
|
115
|
-
1. **Challenge Route Lifecycle**: Modified to add challenge route once during initialization and keep it active throughout certificate provisioning
|
|
116
|
-
2. **Concurrency Control**: Added flags to prevent concurrent provisioning and duplicate challenge route operations
|
|
117
|
-
3. **Error Handling**: Enhanced error messages for port conflicts and proper cleanup on errors
|
|
118
|
-
4. **Tests**: Created comprehensive test suite for challenge route lifecycle scenarios
|
|
119
|
-
5. **Documentation**: Updated certificate management guide with troubleshooting section for port conflicts
|
|
120
|
-
|
|
121
|
-
The fix ensures that port 80 is only bound once, preventing EADDRINUSE errors during concurrent certificate provisioning operations.
|
|
122
|
-
|
|
123
|
-
### Timeline
|
|
124
|
-
- Phase 1: 2 hours (Challenge route lifecycle)
|
|
125
|
-
- Phase 2: 1 hour (Provisioning flow)
|
|
126
|
-
- Phase 3: 2 hours (Concurrency controls)
|
|
127
|
-
- Phase 4: 1 hour (Error handling)
|
|
128
|
-
- Phase 5: 2 hours (Testing)
|
|
129
|
-
- Phase 6: 1 hour (Documentation)
|
|
130
|
-
|
|
131
|
-
Total estimated time: 9 hours
|
|
132
|
-
|
|
133
|
-
### Notes
|
|
134
|
-
- This is a critical bug affecting ACME certificate provisioning
|
|
135
|
-
- The fix requires careful handling of concurrent operations
|
|
136
|
-
- Backward compatibility must be maintained
|
|
137
|
-
- Consider impact on renewal operations and edge cases
|
|
138
|
-
|
|
139
|
-
## NEW FINDINGS: Additional Port Management Issues
|
|
140
|
-
|
|
141
|
-
### Problem Statement
|
|
142
|
-
Further investigation has revealed additional issues beyond the initial port 80 EADDRINUSE error:
|
|
143
|
-
|
|
144
|
-
1. **Race Condition in updateRoutes**: Certificate manager is recreated during route updates, potentially causing duplicate challenge routes
|
|
145
|
-
2. **Lost State**: The `challengeRouteActive` flag is not persisted when certificate manager is recreated
|
|
146
|
-
3. **No Global Synchronization**: Multiple concurrent route updates can create conflicting certificate managers
|
|
147
|
-
4. **Incomplete Cleanup**: Challenge route removal doesn't verify actual port release
|
|
148
|
-
|
|
149
|
-
### Implementation Plan for Additional Fixes
|
|
150
|
-
|
|
151
|
-
#### Phase 1: Fix updateRoutes Race Condition
|
|
152
|
-
1. **Preserve certificate manager state during route updates**
|
|
153
|
-
- [x] Track active challenge routes at SmartProxy level
|
|
154
|
-
- [x] Pass existing state to new certificate manager instances
|
|
155
|
-
- [x] Ensure challenge route is only added once across recreations
|
|
156
|
-
- [x] Add proper cleanup before recreation
|
|
157
|
-
|
|
158
|
-
#### Phase 2: Implement Global Route Update Lock
|
|
159
|
-
2. **Add synchronization for route updates**
|
|
160
|
-
- [x] Implement mutex/semaphore for `updateRoutes` method
|
|
161
|
-
- [x] Prevent concurrent certificate manager recreations
|
|
162
|
-
- [x] Ensure atomic route updates
|
|
163
|
-
- [x] Add timeout handling for locks
|
|
164
|
-
|
|
165
|
-
#### Phase 3: Improve State Management
|
|
166
|
-
3. **Persist critical state across certificate manager instances**
|
|
167
|
-
- [x] Create global state store for ACME operations
|
|
168
|
-
- [x] Track active challenge routes globally
|
|
169
|
-
- [x] Maintain port allocation state
|
|
170
|
-
- [x] Add state recovery mechanisms
|
|
171
|
-
|
|
172
|
-
#### Phase 4: Enhance Cleanup Verification
|
|
173
|
-
4. **Verify resource cleanup before recreation**
|
|
174
|
-
- [x] Wait for old certificate manager to fully stop
|
|
175
|
-
- [x] Verify challenge route removal from port manager
|
|
176
|
-
- [x] Add cleanup confirmation callbacks
|
|
177
|
-
- [x] Implement rollback on cleanup failure
|
|
178
|
-
|
|
179
|
-
#### Phase 5: Add Comprehensive Testing
|
|
180
|
-
5. **Test race conditions and edge cases**
|
|
181
|
-
- [x] Test rapid route updates with ACME
|
|
182
|
-
- [x] Test concurrent certificate manager operations
|
|
183
|
-
- [x] Test state persistence across recreations
|
|
184
|
-
- [x] Test cleanup verification logic
|
|
185
|
-
|
|
186
|
-
### Technical Implementation
|
|
187
|
-
|
|
188
|
-
1. **Global Challenge Route Tracker**:
|
|
189
|
-
```typescript
|
|
190
|
-
class SmartProxy {
|
|
191
|
-
private globalChallengeRouteActive = false;
|
|
192
|
-
private routeUpdateLock = new Mutex();
|
|
193
|
-
|
|
194
|
-
async updateRoutes(newRoutes: IRouteConfig[]): Promise<void> {
|
|
195
|
-
await this.routeUpdateLock.runExclusive(async () => {
|
|
196
|
-
// Update logic here
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
```
|
|
100
|
+
3. **Update NetworkProxyBridge**
|
|
101
|
+
- Rename to HttpProxyBridge
|
|
102
|
+
- Update integration points
|
|
201
103
|
|
|
202
|
-
|
|
203
|
-
```typescript
|
|
204
|
-
if (this.certManager) {
|
|
205
|
-
const state = {
|
|
206
|
-
challengeRouteActive: this.globalChallengeRouteActive,
|
|
207
|
-
acmeOptions: this.certManager.getAcmeOptions(),
|
|
208
|
-
// ... other state
|
|
209
|
-
};
|
|
210
|
-
|
|
211
|
-
await this.certManager.stop();
|
|
212
|
-
await this.verifyChallengeRouteRemoved();
|
|
213
|
-
|
|
214
|
-
this.certManager = await this.createCertificateManager(
|
|
215
|
-
newRoutes,
|
|
216
|
-
'./certs',
|
|
217
|
-
state
|
|
218
|
-
);
|
|
219
|
-
}
|
|
220
|
-
```
|
|
104
|
+
### Phase 4: Consolidate HTTP Utilities ✅
|
|
221
105
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
106
|
+
1. **Move HTTP types to http-proxy**
|
|
107
|
+
- Created consolidated `http-types.ts` in `ts/proxies/http-proxy/models/`
|
|
108
|
+
- Includes HTTP status codes, error classes, and interfaces
|
|
109
|
+
- Added helper functions like `getStatusText()`
|
|
110
|
+
|
|
111
|
+
2. **Clean up ts/http directory**
|
|
112
|
+
- Kept only router functionality
|
|
113
|
+
- Replaced local HTTP types with re-exports from HttpProxy
|
|
114
|
+
- Updated imports throughout the codebase to use consolidated types
|
|
115
|
+
|
|
116
|
+
### Phase 5: Update Tests and Documentation ✅
|
|
117
|
+
|
|
118
|
+
1. **Update test files**
|
|
119
|
+
- Renamed NetworkProxy references to HttpProxy
|
|
120
|
+
- Renamed test files to match new naming
|
|
121
|
+
- Updated imports and references throughout tests
|
|
122
|
+
- Fixed certificate manager method names
|
|
123
|
+
|
|
124
|
+
2. **Update documentation**
|
|
125
|
+
- Updated README to reflect HttpProxy naming
|
|
126
|
+
- Updated architecture descriptions
|
|
127
|
+
- Updated usage examples
|
|
128
|
+
- Fixed all API documentation references
|
|
129
|
+
|
|
130
|
+
## Migration Steps
|
|
235
131
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
132
|
+
1. Create feature branch: `refactor/http-proxy-consolidation`
|
|
133
|
+
2. Phase 1: Rename NetworkProxy (1 day)
|
|
134
|
+
3. Phase 2: Extract HTTP logic (2 days)
|
|
135
|
+
4. Phase 3: Simplify SmartProxy (1 day)
|
|
136
|
+
5. Phase 4: Consolidate utilities (1 day)
|
|
137
|
+
6. Phase 5: Update tests/docs (1 day)
|
|
138
|
+
7. Integration testing (1 day)
|
|
139
|
+
8. Code review and merge
|
|
242
140
|
|
|
243
|
-
|
|
244
|
-
- Phase 1: 3 hours (Race condition fix)
|
|
245
|
-
- Phase 2: 2 hours (Global synchronization)
|
|
246
|
-
- Phase 3: 2 hours (State management)
|
|
247
|
-
- Phase 4: 2 hours (Cleanup verification)
|
|
248
|
-
- Phase 5: 3 hours (Testing)
|
|
141
|
+
## Benefits
|
|
249
142
|
|
|
250
|
-
|
|
143
|
+
1. **Clear Separation**: HTTP/HTTPS handling is clearly separated from TCP routing
|
|
144
|
+
2. **Better Naming**: HttpProxy clearly indicates its purpose
|
|
145
|
+
3. **No Duplication**: HTTP parsing logic exists in one place
|
|
146
|
+
4. **Maintainability**: Easier to modify HTTP handling without affecting routing
|
|
147
|
+
5. **Testability**: Each component has a single responsibility
|
|
148
|
+
6. **Performance**: Optimized paths for different traffic types
|
|
251
149
|
|
|
252
|
-
|
|
253
|
-
These additional fixes are HIGH PRIORITY as they address fundamental issues that could cause:
|
|
254
|
-
- Port binding errors
|
|
255
|
-
- Certificate provisioning failures
|
|
256
|
-
- Resource leaks
|
|
257
|
-
- Inconsistent proxy state
|
|
150
|
+
## Future Enhancements
|
|
258
151
|
|
|
259
|
-
|
|
152
|
+
After this refactoring, we can more easily add:
|
|
260
153
|
|
|
261
|
-
|
|
154
|
+
1. HTTP/3 (QUIC) support in HttpProxy
|
|
155
|
+
2. Advanced HTTP features (compression, caching)
|
|
156
|
+
3. HTTP middleware system
|
|
157
|
+
4. Protocol-specific optimizations
|
|
158
|
+
5. Better HTTP/2 multiplexing
|
|
262
159
|
|
|
263
|
-
|
|
160
|
+
## Breaking Changes
|
|
264
161
|
|
|
265
|
-
1.
|
|
266
|
-
2.
|
|
267
|
-
3.
|
|
268
|
-
4. **Cleanup Verification**: Added `verifyChallengeRouteRemoved` method to ensure proper cleanup
|
|
269
|
-
5. **Comprehensive Testing**: Created test suites for race conditions and state management
|
|
162
|
+
1. `NetworkProxy` class renamed to `HttpProxy`
|
|
163
|
+
2. Import paths change from `network-proxy` to `http-proxy`
|
|
164
|
+
3. Some type names may change for consistency
|
|
270
165
|
|
|
271
|
-
|
|
272
|
-
- No concurrent route updates can create conflicting states
|
|
273
|
-
- Challenge route state is preserved across certificate manager recreations
|
|
274
|
-
- Port 80 is properly managed without EADDRINUSE errors
|
|
275
|
-
- All resources are cleaned up properly during shutdown
|
|
166
|
+
## Rollback Plan
|
|
276
167
|
|
|
277
|
-
|
|
168
|
+
If issues arise:
|
|
169
|
+
1. Git revert to previous commit
|
|
170
|
+
2. Re-deploy previous version
|
|
171
|
+
3. Document lessons learned
|
|
172
|
+
4. Plan incremental changes
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartproxy',
|
|
6
|
-
version: '19.3.
|
|
6
|
+
version: '19.3.3',
|
|
7
7
|
description: 'A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.'
|
|
8
8
|
}
|
|
@@ -52,6 +52,13 @@ export class ForwardingHandlerFactory {
|
|
|
52
52
|
enabled: true,
|
|
53
53
|
...config.http
|
|
54
54
|
};
|
|
55
|
+
// Set default port and socket if not provided
|
|
56
|
+
if (!result.port) {
|
|
57
|
+
result.port = 80;
|
|
58
|
+
}
|
|
59
|
+
if (!result.socket) {
|
|
60
|
+
result.socket = `/tmp/forwarding-${config.type}-${result.port}.sock`;
|
|
61
|
+
}
|
|
55
62
|
break;
|
|
56
63
|
|
|
57
64
|
case 'https-passthrough':
|
|
@@ -65,6 +72,13 @@ export class ForwardingHandlerFactory {
|
|
|
65
72
|
enabled: false,
|
|
66
73
|
...config.http
|
|
67
74
|
};
|
|
75
|
+
// Set default port and socket if not provided
|
|
76
|
+
if (!result.port) {
|
|
77
|
+
result.port = 443;
|
|
78
|
+
}
|
|
79
|
+
if (!result.socket) {
|
|
80
|
+
result.socket = `/tmp/forwarding-${config.type}-${result.port}.sock`;
|
|
81
|
+
}
|
|
68
82
|
break;
|
|
69
83
|
|
|
70
84
|
case 'https-terminate-to-http':
|
|
@@ -84,6 +98,13 @@ export class ForwardingHandlerFactory {
|
|
|
84
98
|
maintenance: true,
|
|
85
99
|
...config.acme
|
|
86
100
|
};
|
|
101
|
+
// Set default port and socket if not provided
|
|
102
|
+
if (!result.port) {
|
|
103
|
+
result.port = 443;
|
|
104
|
+
}
|
|
105
|
+
if (!result.socket) {
|
|
106
|
+
result.socket = `/tmp/forwarding-${config.type}-${result.port}.sock`;
|
|
107
|
+
}
|
|
87
108
|
break;
|
|
88
109
|
|
|
89
110
|
case 'https-terminate-to-https':
|
|
@@ -101,6 +122,13 @@ export class ForwardingHandlerFactory {
|
|
|
101
122
|
maintenance: true,
|
|
102
123
|
...config.acme
|
|
103
124
|
};
|
|
125
|
+
// Set default port and socket if not provided
|
|
126
|
+
if (!result.port) {
|
|
127
|
+
result.port = 443;
|
|
128
|
+
}
|
|
129
|
+
if (!result.socket) {
|
|
130
|
+
result.socket = `/tmp/forwarding-${config.type}-${result.port}.sock`;
|
|
131
|
+
}
|
|
104
132
|
break;
|
|
105
133
|
}
|
|
106
134
|
|
package/ts/index.ts
CHANGED
|
@@ -6,19 +6,23 @@
|
|
|
6
6
|
// Migrated to the new proxies structure
|
|
7
7
|
export * from './proxies/nftables-proxy/index.js';
|
|
8
8
|
|
|
9
|
-
// Export
|
|
10
|
-
export {
|
|
11
|
-
export type { IMetricsTracker, MetricsTracker } from './proxies/
|
|
9
|
+
// Export HttpProxy elements selectively to avoid RouteManager ambiguity
|
|
10
|
+
export { HttpProxy, CertificateManager, ConnectionPool, RequestHandler, WebSocketHandler } from './proxies/http-proxy/index.js';
|
|
11
|
+
export type { IMetricsTracker, MetricsTracker } from './proxies/http-proxy/index.js';
|
|
12
12
|
// Export models except IAcmeOptions to avoid conflict
|
|
13
|
-
export type {
|
|
14
|
-
export { RouteManager as
|
|
13
|
+
export type { IHttpProxyOptions, ICertificateEntry, ILogger } from './proxies/http-proxy/models/types.js';
|
|
14
|
+
export { RouteManager as HttpProxyRouteManager } from './proxies/http-proxy/models/types.js';
|
|
15
15
|
|
|
16
|
-
//
|
|
16
|
+
// Backward compatibility exports (deprecated)
|
|
17
|
+
export { HttpProxy as NetworkProxy } from './proxies/http-proxy/index.js';
|
|
18
|
+
export type { IHttpProxyOptions as INetworkProxyOptions } from './proxies/http-proxy/models/types.js';
|
|
19
|
+
export { HttpProxyBridge as NetworkProxyBridge } from './proxies/smart-proxy/index.js';
|
|
17
20
|
|
|
18
|
-
|
|
21
|
+
// Certificate and Port80 modules have been removed - use SmartCertManager instead
|
|
22
|
+
// Redirect module has been removed - use route-based redirects instead
|
|
19
23
|
|
|
20
24
|
// Export SmartProxy elements selectively to avoid RouteManager ambiguity
|
|
21
|
-
export { SmartProxy, ConnectionManager, SecurityManager, TimeoutManager, TlsManager,
|
|
25
|
+
export { SmartProxy, ConnectionManager, SecurityManager, TimeoutManager, TlsManager, HttpProxyBridge, RouteConnectionHandler, SmartCertManager } from './proxies/smart-proxy/index.js';
|
|
22
26
|
export { RouteManager } from './proxies/smart-proxy/route-manager.js';
|
|
23
27
|
// Export smart-proxy models
|
|
24
28
|
export type { ISmartProxyOptions, IConnectionRecord, IRouteConfig, IRouteMatch, IRouteAction, IRouteTls, IRouteContext } from './proxies/smart-proxy/models/index.js';
|
|
@@ -41,4 +45,4 @@ export type { IAcmeOptions } from './proxies/smart-proxy/models/interfaces.js';
|
|
|
41
45
|
export * as forwarding from './forwarding/index.js';
|
|
42
46
|
// Certificate module has been removed - use SmartCertManager instead
|
|
43
47
|
export * as tls from './tls/index.js';
|
|
44
|
-
export * as
|
|
48
|
+
export * as routing from './routing/index.js';
|
|
@@ -2,7 +2,7 @@ import * as plugins from '../../plugins.js';
|
|
|
2
2
|
import * as fs from 'fs';
|
|
3
3
|
import * as path from 'path';
|
|
4
4
|
import { fileURLToPath } from 'url';
|
|
5
|
-
import { type
|
|
5
|
+
import { type IHttpProxyOptions, type ICertificateEntry, type ILogger, createLogger } from './models/types.js';
|
|
6
6
|
import type { IRouteConfig } from '../smart-proxy/models/route-types.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -18,7 +18,7 @@ export class CertificateManager {
|
|
|
18
18
|
private logger: ILogger;
|
|
19
19
|
private httpsServer: plugins.https.Server | null = null;
|
|
20
20
|
|
|
21
|
-
constructor(private options:
|
|
21
|
+
constructor(private options: IHttpProxyOptions) {
|
|
22
22
|
this.certificateStoreDir = path.resolve(options.acme?.certificateStore || './certs');
|
|
23
23
|
this.logger = createLogger(options.logLevel || 'info');
|
|
24
24
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as plugins from '../../plugins.js';
|
|
2
|
-
import { type
|
|
2
|
+
import { type IHttpProxyOptions, type IConnectionEntry, type ILogger, createLogger } from './models/types.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Manages a pool of backend connections for efficient reuse
|
|
@@ -9,7 +9,7 @@ export class ConnectionPool {
|
|
|
9
9
|
private roundRobinPositions: Map<string, number> = new Map();
|
|
10
10
|
private logger: ILogger;
|
|
11
11
|
|
|
12
|
-
constructor(private options:
|
|
12
|
+
constructor(private options: IHttpProxyOptions) {
|
|
13
13
|
this.logger = createLogger(options.logLevel || 'info');
|
|
14
14
|
}
|
|
15
15
|
|