@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
package/readme.plan.md
CHANGED
|
@@ -1,277 +1,179 @@
|
|
|
1
|
-
# SmartProxy
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
1
|
+
# SmartProxy v19.4.0 - Completed Refactoring
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
SmartProxy has been successfully refactored with clearer separation of concerns between HTTP/HTTPS traffic handling and low-level connection routing. Version 19.4.0 introduces global ACME configuration and enhanced route management.
|
|
6
|
+
|
|
7
|
+
## Current Architecture (v19.4.0)
|
|
8
|
+
|
|
9
|
+
### HttpProxy (formerly NetworkProxy)
|
|
10
|
+
**Purpose**: Handle all HTTP/HTTPS traffic with TLS termination
|
|
11
|
+
|
|
12
|
+
**Current Responsibilities**:
|
|
13
|
+
- TLS termination for HTTPS
|
|
14
|
+
- HTTP/1.1 and HTTP/2 protocol handling
|
|
15
|
+
- HTTP request/response parsing
|
|
16
|
+
- HTTP to HTTPS redirects
|
|
17
|
+
- ACME challenge handling
|
|
18
|
+
- Static route handlers
|
|
19
|
+
- WebSocket protocol upgrades
|
|
20
|
+
- Connection pooling for backend servers
|
|
21
|
+
- Certificate management integration
|
|
22
|
+
|
|
23
|
+
### SmartProxy
|
|
24
|
+
**Purpose**: Central API for all proxy needs with route-based configuration
|
|
25
|
+
|
|
26
|
+
**Current Responsibilities**:
|
|
27
|
+
- Port management (listen on multiple ports)
|
|
28
|
+
- Route-based connection routing
|
|
29
|
+
- TLS passthrough (SNI-based routing)
|
|
30
|
+
- NFTables integration
|
|
31
|
+
- Certificate management via SmartCertManager
|
|
32
|
+
- Raw TCP proxying
|
|
33
|
+
- Connection lifecycle management
|
|
34
|
+
- Global ACME configuration (v19+)
|
|
35
|
+
|
|
36
|
+
## Completed Implementation
|
|
37
|
+
|
|
38
|
+
### Phase 1: Rename and Reorganize ✅
|
|
39
|
+
- NetworkProxy renamed to HttpProxy
|
|
40
|
+
- Directory structure reorganized
|
|
41
|
+
- All imports and references updated
|
|
42
|
+
|
|
43
|
+
### Phase 2: Certificate Management ✅
|
|
44
|
+
- Unified certificate management in SmartCertManager
|
|
45
|
+
- Global ACME configuration support (v19+)
|
|
46
|
+
- Route-level certificate overrides
|
|
47
|
+
- Automatic renewal system
|
|
48
|
+
- Renamed `network-proxy.ts` to `http-proxy.ts`
|
|
49
|
+
- Updated `NetworkProxy` class to `HttpProxy` class
|
|
50
|
+
- Updated all type definitions and interfaces
|
|
51
|
+
|
|
52
|
+
3. **Update exports**
|
|
53
|
+
- Updated exports in `ts/index.ts`
|
|
54
|
+
- Fixed imports across the codebase
|
|
55
|
+
|
|
56
|
+
### Phase 2: Extract HTTP Logic from SmartProxy ✅
|
|
57
|
+
|
|
58
|
+
1. **Create HTTP handler modules in HttpProxy**
|
|
59
|
+
- Created handlers directory with:
|
|
60
|
+
- `redirect-handler.ts` - HTTP redirect logic
|
|
61
|
+
- `static-handler.ts` - Static/ACME route handling
|
|
62
|
+
- `index.ts` - Module exports
|
|
63
|
+
|
|
64
|
+
2. **Move HTTP parsing from RouteConnectionHandler**
|
|
65
|
+
- Updated `handleRedirectAction` to delegate to `RedirectHandler`
|
|
66
|
+
- Updated `handleStaticAction` to delegate to `StaticHandler`
|
|
67
|
+
- Removed duplicated HTTP parsing logic
|
|
68
|
+
|
|
69
|
+
3. **Clean up references and naming**
|
|
70
|
+
- Updated all NetworkProxy references to HttpProxy
|
|
71
|
+
- Renamed config properties: `useNetworkProxy` → `useHttpProxy`
|
|
72
|
+
- Renamed config properties: `networkProxyPort` → `httpProxyPort`
|
|
73
|
+
- Fixed HttpProxyBridge methods and references
|
|
74
|
+
|
|
75
|
+
### Phase 3: Simplify SmartProxy
|
|
76
|
+
|
|
77
|
+
1. **Update RouteConnectionHandler**
|
|
78
|
+
- Remove embedded HTTP parsing
|
|
79
|
+
- Delegate HTTP routes to HttpProxy
|
|
80
|
+
- Focus on connection routing only
|
|
81
|
+
|
|
82
|
+
2. **Simplified route handling**
|
|
66
83
|
```typescript
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
|
|
84
|
+
// Simplified handleRedirectAction
|
|
85
|
+
private handleRedirectAction(socket, record, route) {
|
|
86
|
+
// Delegate to HttpProxy
|
|
87
|
+
this.httpProxy.handleRedirect(socket, route);
|
|
70
88
|
}
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
2. Modify `provisionAcmeCertificate()`:
|
|
74
|
-
```typescript
|
|
75
|
-
// Remove these lines:
|
|
76
|
-
// await this.addChallengeRoute();
|
|
77
|
-
// await this.removeChallengeRoute();
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
3. Update `stop()` method:
|
|
81
|
-
```typescript
|
|
82
|
-
// Always remove challenge route on shutdown
|
|
83
|
-
if (this.challengeRoute) {
|
|
84
|
-
await this.removeChallengeRoute();
|
|
85
|
-
}
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
4. Add concurrency control:
|
|
89
|
-
```typescript
|
|
90
|
-
private challengeRouteLock = new AsyncLock();
|
|
91
89
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
} else {
|
|
97
|
-
await this.removeChallengeRoute();
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### Success Criteria
|
|
104
|
-
- [x] No EADDRINUSE errors when provisioning multiple certificates
|
|
105
|
-
- [x] Challenge route remains active during entire provisioning cycle
|
|
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
|
-
}
|
|
90
|
+
// Simplified handleStaticAction
|
|
91
|
+
private handleStaticAction(socket, record, route) {
|
|
92
|
+
// Delegate to HttpProxy
|
|
93
|
+
this.httpProxy.handleStatic(socket, route);
|
|
199
94
|
}
|
|
200
95
|
```
|
|
201
96
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
97
|
+
3. **Update NetworkProxyBridge**
|
|
98
|
+
- Rename to HttpProxyBridge
|
|
99
|
+
- Update integration points
|
|
100
|
+
|
|
101
|
+
### Phase 4: Consolidate HTTP Utilities ✅
|
|
102
|
+
|
|
103
|
+
1. **Move HTTP types to http-proxy**
|
|
104
|
+
- Created consolidated `http-types.ts` in `ts/proxies/http-proxy/models/`
|
|
105
|
+
- Includes HTTP status codes, error classes, and interfaces
|
|
106
|
+
- Added helper functions like `getStatusText()`
|
|
107
|
+
|
|
108
|
+
2. **Clean up ts/http directory**
|
|
109
|
+
- Kept only router functionality
|
|
110
|
+
- Replaced local HTTP types with re-exports from HttpProxy
|
|
111
|
+
- Updated imports throughout the codebase to use consolidated types
|
|
112
|
+
|
|
113
|
+
### Phase 5: Update Tests and Documentation ✅
|
|
114
|
+
|
|
115
|
+
1. **Update test files**
|
|
116
|
+
- Renamed NetworkProxy references to HttpProxy
|
|
117
|
+
- Renamed test files to match new naming
|
|
118
|
+
- Updated imports and references throughout tests
|
|
119
|
+
- Fixed certificate manager method names
|
|
120
|
+
|
|
121
|
+
2. **Update documentation**
|
|
122
|
+
- Updated README to reflect HttpProxy naming
|
|
123
|
+
- Updated architecture descriptions
|
|
124
|
+
- Updated usage examples
|
|
125
|
+
- Fixed all API documentation references
|
|
126
|
+
|
|
127
|
+
## Migration Steps
|
|
128
|
+
|
|
129
|
+
1. Create feature branch: `refactor/http-proxy-consolidation`
|
|
130
|
+
2. Phase 1: Rename NetworkProxy (1 day)
|
|
131
|
+
3. Phase 2: Extract HTTP logic (2 days)
|
|
132
|
+
4. Phase 3: Simplify SmartProxy (1 day)
|
|
133
|
+
5. Phase 4: Consolidate utilities (1 day)
|
|
134
|
+
6. Phase 5: Update tests/docs (1 day)
|
|
135
|
+
7. Integration testing (1 day)
|
|
136
|
+
8. Code review and merge
|
|
137
|
+
|
|
138
|
+
## Benefits
|
|
139
|
+
|
|
140
|
+
1. **Clear Separation**: HTTP/HTTPS handling is clearly separated from TCP routing
|
|
141
|
+
2. **Better Naming**: HttpProxy clearly indicates its purpose
|
|
142
|
+
3. **No Duplication**: HTTP parsing logic exists in one place
|
|
143
|
+
4. **Maintainability**: Easier to modify HTTP handling without affecting routing
|
|
144
|
+
5. **Testability**: Each component has a single responsibility
|
|
145
|
+
6. **Performance**: Optimized paths for different traffic types
|
|
146
|
+
|
|
147
|
+
## Future Enhancements
|
|
148
|
+
|
|
149
|
+
After this refactoring, we can more easily add:
|
|
150
|
+
|
|
151
|
+
1. HTTP/3 (QUIC) support in HttpProxy
|
|
152
|
+
2. Advanced HTTP features (compression, caching)
|
|
153
|
+
3. HTTP middleware system
|
|
154
|
+
4. Protocol-specific optimizations
|
|
155
|
+
5. Better HTTP/2 multiplexing
|
|
156
|
+
|
|
157
|
+
## Breaking Changes from v18 to v19
|
|
158
|
+
|
|
159
|
+
1. `NetworkProxy` class renamed to `HttpProxy`
|
|
160
|
+
2. Import paths change from `network-proxy` to `http-proxy`
|
|
161
|
+
3. Global ACME configuration now available at the top level
|
|
162
|
+
4. Certificate management unified under SmartCertManager
|
|
163
|
+
|
|
164
|
+
## Future Enhancements
|
|
165
|
+
|
|
166
|
+
1. HTTP/3 (QUIC) support in HttpProxy
|
|
167
|
+
2. Advanced HTTP features (compression, caching)
|
|
168
|
+
3. HTTP middleware system
|
|
169
|
+
4. Protocol-specific optimizations
|
|
170
|
+
5. Better HTTP/2 multiplexing
|
|
171
|
+
6. Enhanced monitoring and metrics
|
|
172
|
+
|
|
173
|
+
## Key Features in v19.4.0
|
|
174
|
+
|
|
175
|
+
1. **Global ACME Configuration**: Default settings for all routes with `certificate: 'auto'`
|
|
176
|
+
2. **Enhanced Route Management**: Better separation between routing and certificate management
|
|
177
|
+
3. **Improved Test Coverage**: Fixed test exports and port bindings
|
|
178
|
+
4. **Better Error Messages**: Clear guidance for ACME configuration issues
|
|
179
|
+
5. **Non-Privileged Port Support**: Examples for development environments
|
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.4',
|
|
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
|
|