@push.rocks/smartproxy 19.3.1 → 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 +10 -10
- package/dist_ts/proxies/smart-proxy/certificate-manager.js +19 -19
- 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 +29 -210
- 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 +19 -18
- 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 +162 -358
- 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
|
@@ -4,7 +4,7 @@ import * as plugins from '../../plugins.js';
|
|
|
4
4
|
import { ConnectionManager } from './connection-manager.js';
|
|
5
5
|
import { SecurityManager } from './security-manager.js';
|
|
6
6
|
import { TlsManager } from './tls-manager.js';
|
|
7
|
-
import {
|
|
7
|
+
import { HttpProxyBridge } from './http-proxy-bridge.js';
|
|
8
8
|
import { TimeoutManager } from './timeout-manager.js';
|
|
9
9
|
import { PortManager } from './port-manager.js';
|
|
10
10
|
import { RouteManager } from './route-manager.js';
|
|
@@ -49,7 +49,7 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
49
49
|
private connectionManager: ConnectionManager;
|
|
50
50
|
private securityManager: SecurityManager;
|
|
51
51
|
private tlsManager: TlsManager;
|
|
52
|
-
private
|
|
52
|
+
private httpProxyBridge: HttpProxyBridge;
|
|
53
53
|
private timeoutManager: TimeoutManager;
|
|
54
54
|
public routeManager: RouteManager; // Made public for route management
|
|
55
55
|
private routeConnectionHandler: RouteConnectionHandler;
|
|
@@ -123,7 +123,7 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
123
123
|
keepAliveTreatment: settingsArg.keepAliveTreatment || 'extended',
|
|
124
124
|
keepAliveInactivityMultiplier: settingsArg.keepAliveInactivityMultiplier || 6,
|
|
125
125
|
extendedKeepAliveLifetime: settingsArg.extendedKeepAliveLifetime || 7 * 24 * 60 * 60 * 1000,
|
|
126
|
-
|
|
126
|
+
httpProxyPort: settingsArg.httpProxyPort || 8443,
|
|
127
127
|
};
|
|
128
128
|
|
|
129
129
|
// Normalize ACME options if provided (support both email and accountEmail)
|
|
@@ -164,7 +164,7 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
164
164
|
|
|
165
165
|
// Create other required components
|
|
166
166
|
this.tlsManager = new TlsManager(this.settings);
|
|
167
|
-
this.
|
|
167
|
+
this.httpProxyBridge = new HttpProxyBridge(this.settings);
|
|
168
168
|
|
|
169
169
|
// Initialize connection handler with route support
|
|
170
170
|
this.routeConnectionHandler = new RouteConnectionHandler(
|
|
@@ -172,7 +172,7 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
172
172
|
this.connectionManager,
|
|
173
173
|
this.securityManager,
|
|
174
174
|
this.tlsManager,
|
|
175
|
-
this.
|
|
175
|
+
this.httpProxyBridge,
|
|
176
176
|
this.timeoutManager,
|
|
177
177
|
this.routeManager
|
|
178
178
|
);
|
|
@@ -212,9 +212,9 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
212
212
|
await this.updateRoutes(routes);
|
|
213
213
|
});
|
|
214
214
|
|
|
215
|
-
// Connect with
|
|
216
|
-
if (this.
|
|
217
|
-
certManager.
|
|
215
|
+
// Connect with HttpProxy if available
|
|
216
|
+
if (this.httpProxyBridge.getHttpProxy()) {
|
|
217
|
+
certManager.setHttpProxy(this.httpProxyBridge.getHttpProxy());
|
|
218
218
|
}
|
|
219
219
|
|
|
220
220
|
// Set the ACME state manager
|
|
@@ -312,16 +312,16 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
312
312
|
// Initialize certificate manager before starting servers
|
|
313
313
|
await this.initializeCertificateManager();
|
|
314
314
|
|
|
315
|
-
// Initialize and start
|
|
316
|
-
if (this.settings.
|
|
317
|
-
await this.
|
|
315
|
+
// Initialize and start HttpProxy if needed
|
|
316
|
+
if (this.settings.useHttpProxy && this.settings.useHttpProxy.length > 0) {
|
|
317
|
+
await this.httpProxyBridge.initialize();
|
|
318
318
|
|
|
319
|
-
// Connect
|
|
319
|
+
// Connect HttpProxy with certificate manager
|
|
320
320
|
if (this.certManager) {
|
|
321
|
-
this.certManager.
|
|
321
|
+
this.certManager.setHttpProxy(this.httpProxyBridge.getHttpProxy());
|
|
322
322
|
}
|
|
323
323
|
|
|
324
|
-
await this.
|
|
324
|
+
await this.httpProxyBridge.start();
|
|
325
325
|
}
|
|
326
326
|
|
|
327
327
|
// Validate the route configuration
|
|
@@ -368,7 +368,7 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
368
368
|
let completedTlsHandshakes = 0;
|
|
369
369
|
let pendingTlsHandshakes = 0;
|
|
370
370
|
let keepAliveConnections = 0;
|
|
371
|
-
let
|
|
371
|
+
let httpProxyConnections = 0;
|
|
372
372
|
|
|
373
373
|
// Get connection records for analysis
|
|
374
374
|
const connectionRecords = this.connectionManager.getConnections();
|
|
@@ -392,7 +392,7 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
392
392
|
}
|
|
393
393
|
|
|
394
394
|
if (record.usingNetworkProxy) {
|
|
395
|
-
|
|
395
|
+
httpProxyConnections++;
|
|
396
396
|
}
|
|
397
397
|
|
|
398
398
|
maxIncoming = Math.max(maxIncoming, now - record.incomingStartTime);
|
|
@@ -408,7 +408,7 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
408
408
|
console.log(
|
|
409
409
|
`Active connections: ${connectionRecords.size}. ` +
|
|
410
410
|
`Types: TLS=${tlsConnections} (Completed=${completedTlsHandshakes}, Pending=${pendingTlsHandshakes}), ` +
|
|
411
|
-
`Non-TLS=${nonTlsConnections}, KeepAlive=${keepAliveConnections},
|
|
411
|
+
`Non-TLS=${nonTlsConnections}, KeepAlive=${keepAliveConnections}, HttpProxy=${httpProxyConnections}. ` +
|
|
412
412
|
`Longest running: IN=${plugins.prettyMs(maxIncoming)}, OUT=${plugins.prettyMs(maxOutgoing)}. ` +
|
|
413
413
|
`Termination stats: ${JSON.stringify({
|
|
414
414
|
IN: terminationStats.incoming,
|
|
@@ -460,8 +460,8 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
460
460
|
// Clean up all active connections
|
|
461
461
|
this.connectionManager.clearConnections();
|
|
462
462
|
|
|
463
|
-
// Stop
|
|
464
|
-
await this.
|
|
463
|
+
// Stop HttpProxy
|
|
464
|
+
await this.httpProxyBridge.stop();
|
|
465
465
|
|
|
466
466
|
// Clear ACME state manager
|
|
467
467
|
this.acmeStateManager.clear();
|
|
@@ -574,9 +574,9 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
574
574
|
// Update settings with the new routes
|
|
575
575
|
this.settings.routes = newRoutes;
|
|
576
576
|
|
|
577
|
-
// If
|
|
578
|
-
if (this.
|
|
579
|
-
await this.
|
|
577
|
+
// If HttpProxy is initialized, resync the configurations
|
|
578
|
+
if (this.httpProxyBridge.getHttpProxy()) {
|
|
579
|
+
await this.httpProxyBridge.syncRoutesToHttpProxy(newRoutes);
|
|
580
580
|
}
|
|
581
581
|
|
|
582
582
|
// Update certificate manager with new routes
|
|
@@ -711,14 +711,14 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
711
711
|
let tlsConnections = 0;
|
|
712
712
|
let nonTlsConnections = 0;
|
|
713
713
|
let keepAliveConnections = 0;
|
|
714
|
-
let
|
|
714
|
+
let httpProxyConnections = 0;
|
|
715
715
|
|
|
716
716
|
// Analyze active connections
|
|
717
717
|
for (const record of connectionRecords.values()) {
|
|
718
718
|
if (record.isTLS) tlsConnections++;
|
|
719
719
|
else nonTlsConnections++;
|
|
720
720
|
if (record.hasKeepAlive) keepAliveConnections++;
|
|
721
|
-
if (record.usingNetworkProxy)
|
|
721
|
+
if (record.usingNetworkProxy) httpProxyConnections++;
|
|
722
722
|
}
|
|
723
723
|
|
|
724
724
|
return {
|
|
@@ -726,7 +726,7 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
726
726
|
tlsConnections,
|
|
727
727
|
nonTlsConnections,
|
|
728
728
|
keepAliveConnections,
|
|
729
|
-
|
|
729
|
+
httpProxyConnections,
|
|
730
730
|
terminationStats,
|
|
731
731
|
acmeEnabled: !!this.certManager,
|
|
732
732
|
port80HandlerPort: this.certManager ? 80 : null,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as plugins from '../../plugins.js';
|
|
2
|
-
import type { IReverseProxyConfig } from '../../proxies/
|
|
2
|
+
import type { IReverseProxyConfig } from '../../proxies/http-proxy/models/types.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Optional path pattern configuration that can be added to proxy configs
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as plugins from '../../plugins.js';
|
|
2
2
|
import type { IRouteConfig } from '../../proxies/smart-proxy/models/route-types.js';
|
|
3
|
-
import type { ILogger } from '../../proxies/
|
|
3
|
+
import type { ILogger } from '../../proxies/http-proxy/models/types.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Optional path pattern configuration that can be added to proxy configs
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { IAcmeOptions } from '../models/certificate-types.js';
|
|
2
|
-
import { Port80Handler } from '../../http/port80/port80-handler.js';
|
|
3
|
-
/**
|
|
4
|
-
* Factory to create a Port80Handler with common setup.
|
|
5
|
-
* Ensures the certificate store directory exists and instantiates the handler.
|
|
6
|
-
* @param options Port80Handler configuration options
|
|
7
|
-
* @returns A new Port80Handler instance
|
|
8
|
-
*/
|
|
9
|
-
export declare function buildPort80Handler(options: IAcmeOptions): Port80Handler;
|
|
10
|
-
/**
|
|
11
|
-
* Creates default ACME options with sensible defaults
|
|
12
|
-
* @param email Account email for ACME provider
|
|
13
|
-
* @param certificateStore Path to store certificates
|
|
14
|
-
* @param useProduction Whether to use production ACME servers
|
|
15
|
-
* @returns Configured ACME options
|
|
16
|
-
*/
|
|
17
|
-
export declare function createDefaultAcmeOptions(email: string, certificateStore: string, useProduction?: boolean): IAcmeOptions;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import * as fs from 'fs';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import { ensureCertificateDirectory } from '../utils/certificate-helpers.js';
|
|
4
|
-
// We'll need to update this import when we move the Port80Handler
|
|
5
|
-
import { Port80Handler } from '../../http/port80/port80-handler.js';
|
|
6
|
-
/**
|
|
7
|
-
* Factory to create a Port80Handler with common setup.
|
|
8
|
-
* Ensures the certificate store directory exists and instantiates the handler.
|
|
9
|
-
* @param options Port80Handler configuration options
|
|
10
|
-
* @returns A new Port80Handler instance
|
|
11
|
-
*/
|
|
12
|
-
export function buildPort80Handler(options) {
|
|
13
|
-
if (options.certificateStore) {
|
|
14
|
-
ensureCertificateDirectory(options.certificateStore);
|
|
15
|
-
console.log(`Ensured certificate store directory: ${options.certificateStore}`);
|
|
16
|
-
}
|
|
17
|
-
return new Port80Handler(options);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Creates default ACME options with sensible defaults
|
|
21
|
-
* @param email Account email for ACME provider
|
|
22
|
-
* @param certificateStore Path to store certificates
|
|
23
|
-
* @param useProduction Whether to use production ACME servers
|
|
24
|
-
* @returns Configured ACME options
|
|
25
|
-
*/
|
|
26
|
-
export function createDefaultAcmeOptions(email, certificateStore, useProduction = false) {
|
|
27
|
-
return {
|
|
28
|
-
accountEmail: email,
|
|
29
|
-
enabled: true,
|
|
30
|
-
port: 80,
|
|
31
|
-
useProduction,
|
|
32
|
-
httpsRedirectPort: 443,
|
|
33
|
-
renewThresholdDays: 30,
|
|
34
|
-
renewCheckIntervalHours: 24,
|
|
35
|
-
autoRenew: true,
|
|
36
|
-
certificateStore,
|
|
37
|
-
skipConfiguredCerts: false
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNtZS1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvY2VydGlmaWNhdGUvYWNtZS9hY21lLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0Usa0VBQWtFO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVwRTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsT0FBcUI7SUFFckIsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QiwwQkFBMEIsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyRCxPQUFPLENBQUMsR0FBRyxDQUFDLHdDQUF3QyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFDRCxPQUFPLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLEtBQWEsRUFDYixnQkFBd0IsRUFDeEIsZ0JBQXlCLEtBQUs7SUFFOUIsT0FBTztRQUNMLFlBQVksRUFBRSxLQUFLO1FBQ25CLE9BQU8sRUFBRSxJQUFJO1FBQ2IsSUFBSSxFQUFFLEVBQUU7UUFDUixhQUFhO1FBQ2IsaUJBQWlCLEVBQUUsR0FBRztRQUN0QixrQkFBa0IsRUFBRSxFQUFFO1FBQ3RCLHVCQUF1QixFQUFFLEVBQUU7UUFDM0IsU0FBUyxFQUFFLElBQUk7UUFDZixnQkFBZ0I7UUFDaEIsbUJBQW1CLEVBQUUsS0FBSztLQUMzQixDQUFDO0FBQ0osQ0FBQyJ9
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import type { IAcmeOptions } from '../models/certificate-types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Manages ACME challenges and certificate validation
|
|
5
|
-
*/
|
|
6
|
-
export declare class AcmeChallengeHandler extends plugins.EventEmitter {
|
|
7
|
-
private options;
|
|
8
|
-
private client;
|
|
9
|
-
private pendingChallenges;
|
|
10
|
-
/**
|
|
11
|
-
* Creates a new ACME challenge handler
|
|
12
|
-
* @param options ACME configuration options
|
|
13
|
-
*/
|
|
14
|
-
constructor(options: IAcmeOptions);
|
|
15
|
-
/**
|
|
16
|
-
* Gets or creates the ACME account key
|
|
17
|
-
*/
|
|
18
|
-
private getAccountKey;
|
|
19
|
-
/**
|
|
20
|
-
* Validates a domain using HTTP-01 challenge
|
|
21
|
-
* @param domain Domain to validate
|
|
22
|
-
* @param challengeToken ACME challenge token
|
|
23
|
-
* @param keyAuthorization Key authorization for the challenge
|
|
24
|
-
*/
|
|
25
|
-
handleHttpChallenge(domain: string, challengeToken: string, keyAuthorization: string): Promise<void>;
|
|
26
|
-
/**
|
|
27
|
-
* Responds to an HTTP-01 challenge request
|
|
28
|
-
* @param token Challenge token from the request path
|
|
29
|
-
* @returns The key authorization if found
|
|
30
|
-
*/
|
|
31
|
-
getChallengeResponse(token: string): string | null;
|
|
32
|
-
/**
|
|
33
|
-
* Checks if a request path is an ACME challenge
|
|
34
|
-
* @param path Request path
|
|
35
|
-
* @returns True if this is an ACME challenge request
|
|
36
|
-
*/
|
|
37
|
-
isAcmeChallenge(path: string): boolean;
|
|
38
|
-
/**
|
|
39
|
-
* Extracts the challenge token from an ACME challenge path
|
|
40
|
-
* @param path Request path
|
|
41
|
-
* @returns The challenge token if valid
|
|
42
|
-
*/
|
|
43
|
-
extractChallengeToken(path: string): string | null;
|
|
44
|
-
}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import { CertificateEvents } from '../events/certificate-events.js';
|
|
3
|
-
/**
|
|
4
|
-
* Manages ACME challenges and certificate validation
|
|
5
|
-
*/
|
|
6
|
-
export class AcmeChallengeHandler extends plugins.EventEmitter {
|
|
7
|
-
/**
|
|
8
|
-
* Creates a new ACME challenge handler
|
|
9
|
-
* @param options ACME configuration options
|
|
10
|
-
*/
|
|
11
|
-
constructor(options) {
|
|
12
|
-
super();
|
|
13
|
-
this.options = options;
|
|
14
|
-
this.pendingChallenges = new Map();
|
|
15
|
-
// Initialize ACME client if needed
|
|
16
|
-
// This is just a placeholder implementation since we don't use the actual
|
|
17
|
-
// client directly in this implementation - it's handled by Port80Handler
|
|
18
|
-
this.client = null;
|
|
19
|
-
console.log('Created challenge handler with options:', options.accountEmail, options.useProduction ? 'production' : 'staging');
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Gets or creates the ACME account key
|
|
23
|
-
*/
|
|
24
|
-
getAccountKey() {
|
|
25
|
-
// Implementation details would depend on plugin requirements
|
|
26
|
-
// This is a simplified version
|
|
27
|
-
if (!this.options.certificateStore) {
|
|
28
|
-
throw new Error('Certificate store is required for ACME challenges');
|
|
29
|
-
}
|
|
30
|
-
// This is just a placeholder - actual implementation would check for
|
|
31
|
-
// existing account key and create one if needed
|
|
32
|
-
return Buffer.from('account-key-placeholder');
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Validates a domain using HTTP-01 challenge
|
|
36
|
-
* @param domain Domain to validate
|
|
37
|
-
* @param challengeToken ACME challenge token
|
|
38
|
-
* @param keyAuthorization Key authorization for the challenge
|
|
39
|
-
*/
|
|
40
|
-
async handleHttpChallenge(domain, challengeToken, keyAuthorization) {
|
|
41
|
-
// Store challenge for response
|
|
42
|
-
this.pendingChallenges.set(challengeToken, keyAuthorization);
|
|
43
|
-
try {
|
|
44
|
-
// Wait for challenge validation - this would normally be handled by the ACME client
|
|
45
|
-
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
46
|
-
this.emit(CertificateEvents.CERTIFICATE_ISSUED, {
|
|
47
|
-
domain,
|
|
48
|
-
success: true
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
catch (error) {
|
|
52
|
-
this.emit(CertificateEvents.CERTIFICATE_FAILED, {
|
|
53
|
-
domain,
|
|
54
|
-
error: error instanceof Error ? error.message : String(error),
|
|
55
|
-
isRenewal: false
|
|
56
|
-
});
|
|
57
|
-
throw error;
|
|
58
|
-
}
|
|
59
|
-
finally {
|
|
60
|
-
// Clean up the challenge
|
|
61
|
-
this.pendingChallenges.delete(challengeToken);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Responds to an HTTP-01 challenge request
|
|
66
|
-
* @param token Challenge token from the request path
|
|
67
|
-
* @returns The key authorization if found
|
|
68
|
-
*/
|
|
69
|
-
getChallengeResponse(token) {
|
|
70
|
-
return this.pendingChallenges.get(token) || null;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Checks if a request path is an ACME challenge
|
|
74
|
-
* @param path Request path
|
|
75
|
-
* @returns True if this is an ACME challenge request
|
|
76
|
-
*/
|
|
77
|
-
isAcmeChallenge(path) {
|
|
78
|
-
return path.startsWith('/.well-known/acme-challenge/');
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Extracts the challenge token from an ACME challenge path
|
|
82
|
-
* @param path Request path
|
|
83
|
-
* @returns The challenge token if valid
|
|
84
|
-
*/
|
|
85
|
-
extractChallengeToken(path) {
|
|
86
|
-
if (!this.isAcmeChallenge(path))
|
|
87
|
-
return null;
|
|
88
|
-
const parts = path.split('/');
|
|
89
|
-
return parts[parts.length - 1] || null;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9jZXJ0aWZpY2F0ZS9hY21lL2NoYWxsZW5nZS1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFcEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsT0FBTyxDQUFDLFlBQVk7SUFLNUQ7OztPQUdHO0lBQ0gsWUFBWSxPQUFxQjtRQUMvQixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRW5DLG1DQUFtQztRQUNuQywwRUFBMEU7UUFDMUUseUVBQXlFO1FBQ3pFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMseUNBQXlDLEVBQ25ELE9BQU8sQ0FBQyxZQUFZLEVBQ3BCLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUNqRCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYTtRQUNuQiw2REFBNkQ7UUFDN0QsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFFRCxxRUFBcUU7UUFDckUsZ0RBQWdEO1FBQ2hELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxtQkFBbUIsQ0FDOUIsTUFBYyxFQUNkLGNBQXNCLEVBQ3RCLGdCQUF3QjtRQUV4QiwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUU3RCxJQUFJLENBQUM7WUFDSCxvRkFBb0Y7WUFDcEYsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixFQUFFO2dCQUM5QyxNQUFNO2dCQUNOLE9BQU8sRUFBRSxJQUFJO2FBQ2QsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixFQUFFO2dCQUM5QyxNQUFNO2dCQUNOLEtBQUssRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUM3RCxTQUFTLEVBQUUsS0FBSzthQUNqQixDQUFDLENBQUM7WUFDSCxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7Z0JBQVMsQ0FBQztZQUNULHlCQUF5QjtZQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLG9CQUFvQixDQUFDLEtBQWE7UUFDdkMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGVBQWUsQ0FBQyxJQUFZO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7OztPQUlHO0lBQ0kscUJBQXFCLENBQUMsSUFBWTtRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUU3QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ3pDLENBQUM7Q0FDRiJ9
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
/**
|
|
3
|
-
* ACME certificate provisioning
|
|
4
|
-
*/
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9jZXJ0aWZpY2F0ZS9hY21lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRyJ9
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unified certificate manager for SmartProxy
|
|
3
|
-
*/
|
|
4
|
-
import * as plugins from '../plugins.js';
|
|
5
|
-
import type { CertProvider } from './models/certificate-strategy.js';
|
|
6
|
-
import type { CertificateEventMap, ICertificateEventEmitter } from './events/certificate-events.js';
|
|
7
|
-
import type { IRouteConfig } from '../proxies/smart-proxy/models/route-types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Certificate storage format
|
|
10
|
-
*/
|
|
11
|
-
interface StoredCertificate {
|
|
12
|
-
domain: string;
|
|
13
|
-
certificate: string;
|
|
14
|
-
privateKey: string;
|
|
15
|
-
expiresAt: Date;
|
|
16
|
-
source: 'acme-http' | 'acme-dns' | 'static';
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Certificate manager configuration
|
|
20
|
-
*/
|
|
21
|
-
export interface CertificateManagerConfig {
|
|
22
|
-
certProvider: CertProvider;
|
|
23
|
-
acmeEmail: string;
|
|
24
|
-
acmeServer: 'production' | 'staging';
|
|
25
|
-
storageDir?: string;
|
|
26
|
-
renewBeforeDays?: number;
|
|
27
|
-
defaultCertPath?: string;
|
|
28
|
-
defaultKeyPath?: string;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Unified certificate manager
|
|
32
|
-
*/
|
|
33
|
-
export declare class CertificateManager extends plugins.EventEmitter implements ICertificateEventEmitter {
|
|
34
|
-
private config;
|
|
35
|
-
private certificateCache;
|
|
36
|
-
private acmeClient;
|
|
37
|
-
private renewalTimer?;
|
|
38
|
-
private pendingRequests;
|
|
39
|
-
constructor(config: CertificateManagerConfig);
|
|
40
|
-
/**
|
|
41
|
-
* Initialize the certificate manager
|
|
42
|
-
*/
|
|
43
|
-
start(): Promise<void>;
|
|
44
|
-
/**
|
|
45
|
-
* Stop the certificate manager
|
|
46
|
-
*/
|
|
47
|
-
stop(): Promise<void>;
|
|
48
|
-
/**
|
|
49
|
-
* Get a certificate for a domain (main entry point)
|
|
50
|
-
*/
|
|
51
|
-
getCertificate(domain: string): Promise<StoredCertificate>;
|
|
52
|
-
/**
|
|
53
|
-
* Request a new certificate
|
|
54
|
-
*/
|
|
55
|
-
private requestCertificate;
|
|
56
|
-
/**
|
|
57
|
-
* Request certificate via ACME HTTP-01
|
|
58
|
-
*/
|
|
59
|
-
private requestAcmeHttpCertificate;
|
|
60
|
-
/**
|
|
61
|
-
* Request certificate via ACME DNS-01
|
|
62
|
-
*/
|
|
63
|
-
private requestAcmeDnsCertificate;
|
|
64
|
-
/**
|
|
65
|
-
* Renew a certificate
|
|
66
|
-
*/
|
|
67
|
-
renewCertificate(domain: string): Promise<StoredCertificate>;
|
|
68
|
-
/**
|
|
69
|
-
* Check certificates for renewal
|
|
70
|
-
*/
|
|
71
|
-
private checkForRenewals;
|
|
72
|
-
/**
|
|
73
|
-
* Initialize ACME client
|
|
74
|
-
*/
|
|
75
|
-
private initializeAcmeClient;
|
|
76
|
-
/**
|
|
77
|
-
* Load stored certificates from disk
|
|
78
|
-
*/
|
|
79
|
-
private loadStoredCertificates;
|
|
80
|
-
/**
|
|
81
|
-
* Store certificate to disk
|
|
82
|
-
*/
|
|
83
|
-
private storeCertificate;
|
|
84
|
-
/**
|
|
85
|
-
* Ensure storage directory exists
|
|
86
|
-
*/
|
|
87
|
-
private ensureStorageDir;
|
|
88
|
-
/**
|
|
89
|
-
* Get or create ACME account key
|
|
90
|
-
*/
|
|
91
|
-
private getOrCreateAccountKey;
|
|
92
|
-
/**
|
|
93
|
-
* Generate keypair for certificate
|
|
94
|
-
*/
|
|
95
|
-
private generateKeypair;
|
|
96
|
-
/**
|
|
97
|
-
* Generate CSR for domain
|
|
98
|
-
*/
|
|
99
|
-
private generateCsr;
|
|
100
|
-
/**
|
|
101
|
-
* Extract expiry date from certificate
|
|
102
|
-
*/
|
|
103
|
-
private extractExpiryDate;
|
|
104
|
-
/**
|
|
105
|
-
* Check if certificate is valid
|
|
106
|
-
*/
|
|
107
|
-
private isCertificateValid;
|
|
108
|
-
/**
|
|
109
|
-
* Check if certificate should be renewed
|
|
110
|
-
*/
|
|
111
|
-
private shouldRenew;
|
|
112
|
-
/**
|
|
113
|
-
* Check if certificate is expiring soon
|
|
114
|
-
*/
|
|
115
|
-
private isExpiringSoon;
|
|
116
|
-
/**
|
|
117
|
-
* Get days remaining until expiry
|
|
118
|
-
*/
|
|
119
|
-
private getDaysRemaining;
|
|
120
|
-
/**
|
|
121
|
-
* Start renewal timer
|
|
122
|
-
*/
|
|
123
|
-
private startRenewalTimer;
|
|
124
|
-
/**
|
|
125
|
-
* Get default certificate for SNI fallback
|
|
126
|
-
*/
|
|
127
|
-
getDefaultCertificate(): Promise<{
|
|
128
|
-
cert: string;
|
|
129
|
-
key: string;
|
|
130
|
-
}>;
|
|
131
|
-
/**
|
|
132
|
-
* Set up HTTP challenge responder
|
|
133
|
-
*/
|
|
134
|
-
private setupHttpChallenge;
|
|
135
|
-
/**
|
|
136
|
-
* Clean up HTTP challenge
|
|
137
|
-
*/
|
|
138
|
-
private cleanupHttpChallenge;
|
|
139
|
-
/**
|
|
140
|
-
* Type assertion for event emitter
|
|
141
|
-
*/
|
|
142
|
-
on<K extends keyof CertificateEventMap>(event: K, listener: (data: CertificateEventMap[K]) => void): this;
|
|
143
|
-
off<K extends keyof CertificateEventMap>(event: K, listener: (data: CertificateEventMap[K]) => void): this;
|
|
144
|
-
emit<K extends keyof CertificateEventMap>(event: K, data: CertificateEventMap[K]): boolean;
|
|
145
|
-
/**
|
|
146
|
-
* Update routes (placeholder for future implementation)
|
|
147
|
-
*/
|
|
148
|
-
updateRoutes(routes: IRouteConfig[]): Promise<void>;
|
|
149
|
-
}
|
|
150
|
-
export {};
|