@push.rocks/smartproxy 19.3.2 → 19.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/forwarding/factory/forwarding-factory.js +29 -1
- package/dist_ts/http/index.d.ts +1 -3
- package/dist_ts/http/index.js +4 -10
- package/dist_ts/http/models/http-types.d.ts +4 -91
- package/dist_ts/http/models/http-types.js +5 -60
- package/dist_ts/http/router/proxy-router.d.ts +1 -1
- package/dist_ts/http/router/route-router.d.ts +1 -1
- package/dist_ts/index.d.ts +9 -7
- package/dist_ts/index.js +10 -7
- package/dist_ts/proxies/{network-proxy → http-proxy}/certificate-manager.d.ts +2 -2
- package/dist_ts/proxies/{network-proxy → http-proxy}/certificate-manager.js +1 -1
- package/dist_ts/proxies/{network-proxy → http-proxy}/connection-pool.d.ts +2 -2
- package/dist_ts/proxies/http-proxy/connection-pool.js +210 -0
- package/dist_ts/proxies/http-proxy/context-creator.js +108 -0
- package/dist_ts/proxies/{network-proxy → http-proxy}/function-cache.js +1 -1
- package/dist_ts/proxies/http-proxy/handlers/index.d.ts +5 -0
- package/dist_ts/proxies/http-proxy/handlers/index.js +6 -0
- package/dist_ts/proxies/http-proxy/handlers/redirect-handler.d.ts +18 -0
- package/dist_ts/proxies/http-proxy/handlers/redirect-handler.js +78 -0
- package/dist_ts/proxies/http-proxy/handlers/static-handler.d.ts +19 -0
- package/dist_ts/proxies/http-proxy/handlers/static-handler.js +203 -0
- package/dist_ts/proxies/{network-proxy/network-proxy.d.ts → http-proxy/http-proxy.d.ts} +10 -9
- package/dist_ts/proxies/{network-proxy/network-proxy.js → http-proxy/http-proxy.js} +13 -12
- package/dist_ts/proxies/{network-proxy → http-proxy}/http-request-handler.js +1 -1
- package/dist_ts/proxies/http-proxy/http2-request-handler.js +201 -0
- package/dist_ts/proxies/{network-proxy → http-proxy}/index.d.ts +2 -2
- package/dist_ts/proxies/http-proxy/index.js +12 -0
- package/dist_ts/proxies/http-proxy/models/http-types.d.ts +119 -0
- package/dist_ts/proxies/http-proxy/models/http-types.js +112 -0
- package/dist_ts/proxies/http-proxy/models/index.d.ts +5 -0
- package/dist_ts/proxies/http-proxy/models/index.js +6 -0
- package/dist_ts/proxies/{network-proxy → http-proxy}/models/types.d.ts +2 -2
- package/dist_ts/proxies/http-proxy/models/types.js +276 -0
- package/dist_ts/proxies/{network-proxy → http-proxy}/request-handler.d.ts +3 -3
- package/dist_ts/proxies/{network-proxy → http-proxy}/request-handler.js +2 -2
- package/dist_ts/proxies/http-proxy/security-manager.js +255 -0
- package/dist_ts/proxies/{network-proxy → http-proxy}/websocket-handler.d.ts +3 -3
- package/dist_ts/proxies/{network-proxy → http-proxy}/websocket-handler.js +2 -2
- package/dist_ts/proxies/index.d.ts +5 -5
- package/dist_ts/proxies/index.js +5 -5
- package/dist_ts/proxies/smart-proxy/certificate-manager.d.ts +4 -4
- package/dist_ts/proxies/smart-proxy/certificate-manager.js +11 -11
- package/dist_ts/proxies/smart-proxy/http-proxy-bridge.d.ts +41 -0
- package/dist_ts/proxies/smart-proxy/http-proxy-bridge.js +121 -0
- package/dist_ts/proxies/smart-proxy/index.d.ts +2 -1
- package/dist_ts/proxies/smart-proxy/index.js +4 -2
- package/dist_ts/proxies/smart-proxy/models/interfaces.d.ts +2 -2
- package/dist_ts/proxies/smart-proxy/port-manager.js +3 -3
- package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +3 -3
- package/dist_ts/proxies/smart-proxy/route-connection-handler.js +24 -265
- package/dist_ts/proxies/smart-proxy/smart-proxy.d.ts +1 -1
- package/dist_ts/proxies/smart-proxy/smart-proxy.js +25 -25
- package/dist_ts/routing/index.d.ts +5 -0
- package/dist_ts/routing/index.js +8 -0
- package/dist_ts/routing/models/http-types.d.ts +6 -0
- package/dist_ts/routing/models/http-types.js +7 -0
- package/dist_ts/routing/router/index.d.ts +8 -0
- package/dist_ts/routing/router/index.js +7 -0
- package/dist_ts/{classes.router.d.ts → routing/router/proxy-router.d.ts} +14 -11
- package/dist_ts/{classes.router.js → routing/router/proxy-router.js} +2 -2
- package/dist_ts/routing/router/route-router.d.ts +108 -0
- package/dist_ts/routing/router/route-router.js +393 -0
- package/package.json +1 -1
- package/readme.md +18 -35
- package/readme.plan.md +173 -271
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/forwarding/factory/forwarding-factory.ts +28 -0
- package/ts/index.ts +13 -9
- package/ts/proxies/{network-proxy → http-proxy}/certificate-manager.ts +2 -2
- package/ts/proxies/{network-proxy → http-proxy}/connection-pool.ts +2 -2
- package/ts/proxies/http-proxy/handlers/index.ts +6 -0
- package/ts/proxies/http-proxy/handlers/redirect-handler.ts +105 -0
- package/ts/proxies/http-proxy/handlers/static-handler.ts +251 -0
- package/ts/proxies/{network-proxy/network-proxy.ts → http-proxy/http-proxy.ts} +15 -14
- package/ts/proxies/{network-proxy → http-proxy}/index.ts +3 -3
- package/ts/proxies/http-proxy/models/http-types.ts +165 -0
- package/ts/proxies/http-proxy/models/index.ts +5 -0
- package/ts/proxies/{network-proxy → http-proxy}/models/types.ts +2 -2
- package/ts/proxies/{network-proxy → http-proxy}/request-handler.ts +3 -3
- package/ts/proxies/{network-proxy → http-proxy}/websocket-handler.ts +3 -3
- package/ts/proxies/index.ts +7 -7
- package/ts/proxies/smart-proxy/certificate-manager.ts +10 -10
- package/ts/proxies/smart-proxy/{network-proxy-bridge.ts → http-proxy-bridge.ts} +44 -44
- package/ts/proxies/smart-proxy/index.ts +4 -1
- package/ts/proxies/smart-proxy/models/interfaces.ts +3 -3
- package/ts/proxies/smart-proxy/port-manager.ts +2 -2
- package/ts/proxies/smart-proxy/route-connection-handler.ts +23 -307
- package/ts/proxies/smart-proxy/smart-proxy.ts +25 -25
- package/ts/routing/index.ts +9 -0
- package/ts/routing/models/http-types.ts +6 -0
- package/ts/{http → routing}/router/proxy-router.ts +1 -1
- package/ts/{http → routing}/router/route-router.ts +1 -1
- package/dist_ts/certificate/acme/acme-factory.d.ts +0 -17
- package/dist_ts/certificate/acme/acme-factory.js +0 -40
- package/dist_ts/certificate/acme/challenge-handler.d.ts +0 -44
- package/dist_ts/certificate/acme/challenge-handler.js +0 -92
- package/dist_ts/certificate/acme/index.d.ts +0 -4
- package/dist_ts/certificate/acme/index.js +0 -5
- package/dist_ts/certificate/certificate-manager.d.ts +0 -150
- package/dist_ts/certificate/certificate-manager.js +0 -505
- package/dist_ts/certificate/events/certificate-events.d.ts +0 -33
- package/dist_ts/certificate/events/certificate-events.js +0 -38
- package/dist_ts/certificate/events/simplified-events.d.ts +0 -56
- package/dist_ts/certificate/events/simplified-events.js +0 -13
- package/dist_ts/certificate/index.d.ts +0 -30
- package/dist_ts/certificate/index.js +0 -37
- package/dist_ts/certificate/models/certificate-errors.d.ts +0 -69
- package/dist_ts/certificate/models/certificate-errors.js +0 -141
- package/dist_ts/certificate/models/certificate-strategy.d.ts +0 -60
- package/dist_ts/certificate/models/certificate-strategy.js +0 -73
- package/dist_ts/certificate/models/certificate-types.d.ts +0 -97
- package/dist_ts/certificate/models/certificate-types.js +0 -2
- package/dist_ts/certificate/providers/cert-provisioner.d.ts +0 -119
- package/dist_ts/certificate/providers/cert-provisioner.js +0 -422
- package/dist_ts/certificate/providers/index.d.ts +0 -4
- package/dist_ts/certificate/providers/index.js +0 -5
- package/dist_ts/certificate/simplified-certificate-manager.d.ts +0 -150
- package/dist_ts/certificate/simplified-certificate-manager.js +0 -501
- package/dist_ts/certificate/storage/file-storage.d.ts +0 -66
- package/dist_ts/certificate/storage/file-storage.js +0 -194
- package/dist_ts/certificate/storage/index.d.ts +0 -4
- package/dist_ts/certificate/storage/index.js +0 -5
- package/dist_ts/certificate/utils/certificate-helpers.d.ts +0 -17
- package/dist_ts/certificate/utils/certificate-helpers.js +0 -45
- package/dist_ts/classes.iptablesproxy.d.ts +0 -112
- package/dist_ts/classes.iptablesproxy.js +0 -765
- package/dist_ts/classes.networkproxy.d.ts +0 -243
- package/dist_ts/classes.networkproxy.js +0 -1424
- package/dist_ts/classes.nftablesproxy.d.ts +0 -219
- package/dist_ts/classes.nftablesproxy.js +0 -1542
- package/dist_ts/classes.port80handler.d.ts +0 -215
- package/dist_ts/classes.port80handler.js +0 -736
- package/dist_ts/classes.portproxy.d.ts +0 -171
- package/dist_ts/classes.portproxy.js +0 -1802
- package/dist_ts/classes.pp.acmemanager.d.ts +0 -34
- package/dist_ts/classes.pp.acmemanager.js +0 -123
- package/dist_ts/classes.pp.connectionhandler.d.ts +0 -39
- package/dist_ts/classes.pp.connectionhandler.js +0 -754
- package/dist_ts/classes.pp.connectionmanager.d.ts +0 -78
- package/dist_ts/classes.pp.connectionmanager.js +0 -378
- package/dist_ts/classes.pp.domainconfigmanager.d.ts +0 -55
- package/dist_ts/classes.pp.domainconfigmanager.js +0 -103
- package/dist_ts/classes.pp.interfaces.d.ts +0 -133
- package/dist_ts/classes.pp.interfaces.js +0 -2
- package/dist_ts/classes.pp.networkproxybridge.d.ts +0 -57
- package/dist_ts/classes.pp.networkproxybridge.js +0 -306
- package/dist_ts/classes.pp.portproxy.d.ts +0 -64
- package/dist_ts/classes.pp.portproxy.js +0 -567
- package/dist_ts/classes.pp.portrangemanager.d.ts +0 -56
- package/dist_ts/classes.pp.portrangemanager.js +0 -179
- package/dist_ts/classes.pp.securitymanager.d.ts +0 -47
- package/dist_ts/classes.pp.securitymanager.js +0 -126
- package/dist_ts/classes.pp.snihandler.d.ts +0 -153
- package/dist_ts/classes.pp.snihandler.js +0 -1053
- package/dist_ts/classes.pp.timeoutmanager.d.ts +0 -47
- package/dist_ts/classes.pp.timeoutmanager.js +0 -154
- package/dist_ts/classes.pp.tlsalert.d.ts +0 -149
- package/dist_ts/classes.pp.tlsalert.js +0 -225
- package/dist_ts/classes.pp.tlsmanager.d.ts +0 -57
- package/dist_ts/classes.pp.tlsmanager.js +0 -132
- package/dist_ts/classes.snihandler.d.ts +0 -198
- package/dist_ts/classes.snihandler.js +0 -1210
- package/dist_ts/classes.sslredirect.d.ts +0 -8
- package/dist_ts/classes.sslredirect.js +0 -28
- package/dist_ts/common/acmeFactory.d.ts +0 -9
- package/dist_ts/common/acmeFactory.js +0 -20
- package/dist_ts/common/port80-adapter.d.ts +0 -11
- package/dist_ts/common/port80-adapter.js +0 -87
- package/dist_ts/examples/forwarding-example.d.ts +0 -1
- package/dist_ts/examples/forwarding-example.js +0 -96
- package/dist_ts/forwarding/config/domain-config.d.ts +0 -12
- package/dist_ts/forwarding/config/domain-config.js +0 -12
- package/dist_ts/forwarding/config/domain-manager.d.ts +0 -86
- package/dist_ts/forwarding/config/domain-manager.js +0 -242
- package/dist_ts/helpers.certificates.d.ts +0 -5
- package/dist_ts/helpers.certificates.js +0 -23
- package/dist_ts/http/port80/acme-interfaces.d.ts +0 -108
- package/dist_ts/http/port80/acme-interfaces.js +0 -51
- package/dist_ts/http/port80/challenge-responder.d.ts +0 -53
- package/dist_ts/http/port80/challenge-responder.js +0 -203
- package/dist_ts/http/port80/index.d.ts +0 -6
- package/dist_ts/http/port80/index.js +0 -9
- package/dist_ts/http/port80/port80-handler.d.ts +0 -136
- package/dist_ts/http/port80/port80-handler.js +0 -592
- package/dist_ts/http/redirects/index.d.ts +0 -4
- package/dist_ts/http/redirects/index.js +0 -5
- package/dist_ts/networkproxy/classes.np.certificatemanager.d.ts +0 -77
- package/dist_ts/networkproxy/classes.np.certificatemanager.js +0 -372
- package/dist_ts/networkproxy/classes.np.connectionpool.d.ts +0 -47
- package/dist_ts/networkproxy/classes.np.connectionpool.js +0 -210
- package/dist_ts/networkproxy/classes.np.networkproxy.d.ts +0 -118
- package/dist_ts/networkproxy/classes.np.networkproxy.js +0 -387
- package/dist_ts/networkproxy/classes.np.requesthandler.d.ts +0 -56
- package/dist_ts/networkproxy/classes.np.requesthandler.js +0 -393
- package/dist_ts/networkproxy/classes.np.types.d.ts +0 -83
- package/dist_ts/networkproxy/classes.np.types.js +0 -35
- package/dist_ts/networkproxy/classes.np.websockethandler.d.ts +0 -38
- package/dist_ts/networkproxy/classes.np.websockethandler.js +0 -188
- package/dist_ts/networkproxy/index.d.ts +0 -1
- package/dist_ts/networkproxy/index.js +0 -4
- package/dist_ts/nfttablesproxy/classes.nftablesproxy.d.ts +0 -219
- package/dist_ts/nfttablesproxy/classes.nftablesproxy.js +0 -1542
- package/dist_ts/port80handler/classes.port80handler.d.ts +0 -10
- package/dist_ts/port80handler/classes.port80handler.js +0 -16
- package/dist_ts/proxies/network-proxy/connection-pool.js +0 -210
- package/dist_ts/proxies/network-proxy/context-creator.js +0 -108
- package/dist_ts/proxies/network-proxy/http2-request-handler.js +0 -201
- package/dist_ts/proxies/network-proxy/index.js +0 -12
- package/dist_ts/proxies/network-proxy/models/index.d.ts +0 -4
- package/dist_ts/proxies/network-proxy/models/index.js +0 -5
- package/dist_ts/proxies/network-proxy/models/types.js +0 -276
- package/dist_ts/proxies/network-proxy/security-manager.js +0 -255
- package/dist_ts/proxies/network-proxy/simplified-certificate-bridge.d.ts +0 -48
- package/dist_ts/proxies/network-proxy/simplified-certificate-bridge.js +0 -76
- package/dist_ts/proxies/smart-proxy/connection-handler.d.ts +0 -39
- package/dist_ts/proxies/smart-proxy/connection-handler.js +0 -894
- package/dist_ts/proxies/smart-proxy/domain-config-manager.d.ts +0 -110
- package/dist_ts/proxies/smart-proxy/domain-config-manager.js +0 -386
- package/dist_ts/proxies/smart-proxy/legacy-smart-proxy.d.ts +0 -168
- package/dist_ts/proxies/smart-proxy/legacy-smart-proxy.js +0 -642
- package/dist_ts/proxies/smart-proxy/models/simplified-smartproxy-config.d.ts +0 -65
- package/dist_ts/proxies/smart-proxy/models/simplified-smartproxy-config.js +0 -31
- package/dist_ts/proxies/smart-proxy/models/smartproxy-options.d.ts +0 -102
- package/dist_ts/proxies/smart-proxy/models/smartproxy-options.js +0 -73
- package/dist_ts/proxies/smart-proxy/network-proxy-bridge.d.ts +0 -41
- package/dist_ts/proxies/smart-proxy/network-proxy-bridge.js +0 -121
- package/dist_ts/proxies/smart-proxy/port-range-manager.d.ts +0 -56
- package/dist_ts/proxies/smart-proxy/port-range-manager.js +0 -176
- package/dist_ts/proxies/smart-proxy/route-helpers/index.d.ts +0 -9
- package/dist_ts/proxies/smart-proxy/route-helpers/index.js +0 -11
- package/dist_ts/proxies/smart-proxy/route-helpers.d.ts +0 -7
- package/dist_ts/proxies/smart-proxy/route-helpers.js +0 -9
- package/dist_ts/proxies/smart-proxy/simplified-smart-proxy.d.ts +0 -41
- package/dist_ts/proxies/smart-proxy/simplified-smart-proxy.js +0 -132
- package/dist_ts/proxies/smart-proxy/utils/route-migration-utils.d.ts +0 -51
- package/dist_ts/proxies/smart-proxy/utils/route-migration-utils.js +0 -124
- package/dist_ts/redirect/classes.redirect.d.ts +0 -96
- package/dist_ts/redirect/classes.redirect.js +0 -194
- package/dist_ts/smartproxy/classes.pp.certprovisioner.d.ts +0 -54
- package/dist_ts/smartproxy/classes.pp.certprovisioner.js +0 -179
- package/dist_ts/smartproxy/classes.pp.connectionhandler.d.ts +0 -39
- package/dist_ts/smartproxy/classes.pp.connectionhandler.js +0 -894
- package/dist_ts/smartproxy/classes.pp.connectionmanager.d.ts +0 -78
- package/dist_ts/smartproxy/classes.pp.connectionmanager.js +0 -378
- package/dist_ts/smartproxy/classes.pp.domainconfigmanager.d.ts +0 -94
- package/dist_ts/smartproxy/classes.pp.domainconfigmanager.js +0 -255
- package/dist_ts/smartproxy/classes.pp.interfaces.d.ts +0 -103
- package/dist_ts/smartproxy/classes.pp.interfaces.js +0 -2
- package/dist_ts/smartproxy/classes.pp.networkproxybridge.d.ts +0 -62
- package/dist_ts/smartproxy/classes.pp.networkproxybridge.js +0 -316
- package/dist_ts/smartproxy/classes.pp.portrangemanager.d.ts +0 -56
- package/dist_ts/smartproxy/classes.pp.portrangemanager.js +0 -176
- package/dist_ts/smartproxy/classes.pp.securitymanager.d.ts +0 -64
- package/dist_ts/smartproxy/classes.pp.securitymanager.js +0 -149
- package/dist_ts/smartproxy/classes.pp.snihandler.d.ts +0 -153
- package/dist_ts/smartproxy/classes.pp.snihandler.js +0 -1053
- package/dist_ts/smartproxy/classes.pp.timeoutmanager.d.ts +0 -47
- package/dist_ts/smartproxy/classes.pp.timeoutmanager.js +0 -154
- package/dist_ts/smartproxy/classes.pp.tlsalert.d.ts +0 -149
- package/dist_ts/smartproxy/classes.pp.tlsalert.js +0 -225
- package/dist_ts/smartproxy/classes.pp.tlsmanager.d.ts +0 -57
- package/dist_ts/smartproxy/classes.pp.tlsmanager.js +0 -132
- package/dist_ts/smartproxy/classes.smartproxy.d.ts +0 -63
- package/dist_ts/smartproxy/classes.smartproxy.js +0 -521
- package/dist_ts/smartproxy/forwarding/domain-config.d.ts +0 -12
- package/dist_ts/smartproxy/forwarding/domain-config.js +0 -12
- package/dist_ts/smartproxy/forwarding/domain-manager.d.ts +0 -86
- package/dist_ts/smartproxy/forwarding/domain-manager.js +0 -241
- package/dist_ts/smartproxy/forwarding/forwarding.factory.d.ts +0 -24
- package/dist_ts/smartproxy/forwarding/forwarding.factory.js +0 -137
- package/dist_ts/smartproxy/forwarding/forwarding.handler.d.ts +0 -55
- package/dist_ts/smartproxy/forwarding/forwarding.handler.js +0 -94
- package/dist_ts/smartproxy/forwarding/http.handler.d.ts +0 -25
- package/dist_ts/smartproxy/forwarding/http.handler.js +0 -123
- package/dist_ts/smartproxy/forwarding/https-passthrough.handler.d.ts +0 -24
- package/dist_ts/smartproxy/forwarding/https-passthrough.handler.js +0 -154
- package/dist_ts/smartproxy/forwarding/https-terminate-to-http.handler.d.ts +0 -36
- package/dist_ts/smartproxy/forwarding/https-terminate-to-http.handler.js +0 -229
- package/dist_ts/smartproxy/forwarding/https-terminate-to-https.handler.d.ts +0 -35
- package/dist_ts/smartproxy/forwarding/https-terminate-to-https.handler.js +0 -254
- package/dist_ts/smartproxy/forwarding/index.d.ts +0 -16
- package/dist_ts/smartproxy/forwarding/index.js +0 -23
- package/dist_ts/smartproxy/types/forwarding.types.d.ts +0 -104
- package/dist_ts/smartproxy/types/forwarding.types.js +0 -50
- package/dist_ts/smartproxy.classes.networkproxy.d.ts +0 -31
- package/dist_ts/smartproxy.classes.networkproxy.js +0 -305
- package/dist_ts/smartproxy.classes.router.d.ts +0 -13
- package/dist_ts/smartproxy.classes.router.js +0 -33
- package/dist_ts/smartproxy.classes.sslredirect.d.ts +0 -8
- package/dist_ts/smartproxy.classes.sslredirect.js +0 -28
- package/dist_ts/smartproxy.helpers.certificates.d.ts +0 -5
- package/dist_ts/smartproxy.helpers.certificates.js +0 -23
- package/dist_ts/smartproxy.plugins.d.ts +0 -18
- package/dist_ts/smartproxy.plugins.js +0 -23
- package/dist_ts/smartproxy.portproxy.d.ts +0 -26
- package/dist_ts/smartproxy.portproxy.js +0 -295
- package/ts/http/index.ts +0 -16
- package/ts/http/models/http-types.ts +0 -108
- package/ts/http/redirects/index.ts +0 -3
- package/ts/proxies/network-proxy/models/index.ts +0 -4
- package/ts/redirect/classes.redirect.ts +0 -295
- /package/dist_ts/proxies/{network-proxy → http-proxy}/context-creator.d.ts +0 -0
- /package/dist_ts/proxies/{network-proxy → http-proxy}/function-cache.d.ts +0 -0
- /package/dist_ts/proxies/{network-proxy → http-proxy}/http-request-handler.d.ts +0 -0
- /package/dist_ts/proxies/{network-proxy → http-proxy}/http2-request-handler.d.ts +0 -0
- /package/dist_ts/proxies/{network-proxy → http-proxy}/security-manager.d.ts +0 -0
- /package/ts/proxies/{network-proxy → http-proxy}/context-creator.ts +0 -0
- /package/ts/proxies/{network-proxy → http-proxy}/function-cache.ts +0 -0
- /package/ts/proxies/{network-proxy → http-proxy}/http-request-handler.ts +0 -0
- /package/ts/proxies/{network-proxy → http-proxy}/http2-request-handler.ts +0 -0
- /package/ts/proxies/{network-proxy → http-proxy}/security-manager.ts +0 -0
- /package/ts/{http → routing}/router/index.ts +0 -0
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import * as fs from 'fs';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
5
|
-
export function loadDefaultCertificates() {
|
|
6
|
-
try {
|
|
7
|
-
const certPath = path.join(__dirname, '..', 'assets', 'certs');
|
|
8
|
-
const privateKey = fs.readFileSync(path.join(certPath, 'key.pem'), 'utf8');
|
|
9
|
-
const publicKey = fs.readFileSync(path.join(certPath, 'cert.pem'), 'utf8');
|
|
10
|
-
if (!privateKey || !publicKey) {
|
|
11
|
-
throw new Error('Failed to load default certificates');
|
|
12
|
-
}
|
|
13
|
-
return {
|
|
14
|
-
privateKey,
|
|
15
|
-
publicKey
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
catch (error) {
|
|
19
|
-
console.error('Error loading default certificates:', error);
|
|
20
|
-
throw error;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5jZXJ0aWZpY2F0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9oZWxwZXJzLmNlcnRpZmljYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXBDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQU8vRCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLElBQUksQ0FBQztRQUNILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0QsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzRSxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTNFLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELE9BQU87WUFDTCxVQUFVO1lBQ1YsU0FBUztTQUNWLENBQUM7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMscUNBQXFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUQsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type definitions for SmartAcme interfaces used by ChallengeResponder
|
|
3
|
-
* These reflect the actual SmartAcme API based on the documentation
|
|
4
|
-
*
|
|
5
|
-
* Also includes route-based interfaces for Port80Handler to extract domains
|
|
6
|
-
* that need certificate management from route configurations.
|
|
7
|
-
*/
|
|
8
|
-
import * as plugins from '../../plugins.js';
|
|
9
|
-
import type { IRouteConfig } from '../../proxies/smart-proxy/models/route-types.js';
|
|
10
|
-
/**
|
|
11
|
-
* Structure for SmartAcme certificate result
|
|
12
|
-
*/
|
|
13
|
-
export interface ISmartAcmeCert {
|
|
14
|
-
id?: string;
|
|
15
|
-
domainName: string;
|
|
16
|
-
created?: number | Date | string;
|
|
17
|
-
privateKey: string;
|
|
18
|
-
publicKey: string;
|
|
19
|
-
csr?: string;
|
|
20
|
-
validUntil: number | Date | string;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Structure for SmartAcme options
|
|
24
|
-
*/
|
|
25
|
-
export interface ISmartAcmeOptions {
|
|
26
|
-
accountEmail: string;
|
|
27
|
-
certManager: ICertManager;
|
|
28
|
-
environment: 'production' | 'integration';
|
|
29
|
-
challengeHandlers: IChallengeHandler<any>[];
|
|
30
|
-
challengePriority?: string[];
|
|
31
|
-
retryOptions?: {
|
|
32
|
-
retries?: number;
|
|
33
|
-
factor?: number;
|
|
34
|
-
minTimeoutMs?: number;
|
|
35
|
-
maxTimeoutMs?: number;
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Interface for certificate manager
|
|
40
|
-
*/
|
|
41
|
-
export interface ICertManager {
|
|
42
|
-
init(): Promise<void>;
|
|
43
|
-
get(domainName: string): Promise<ISmartAcmeCert | null>;
|
|
44
|
-
put(cert: ISmartAcmeCert): Promise<ISmartAcmeCert>;
|
|
45
|
-
delete(domainName: string): Promise<void>;
|
|
46
|
-
close?(): Promise<void>;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Interface for challenge handler
|
|
50
|
-
*/
|
|
51
|
-
export interface IChallengeHandler<T> {
|
|
52
|
-
getSupportedTypes(): string[];
|
|
53
|
-
prepare(ch: T): Promise<void>;
|
|
54
|
-
verify?(ch: T): Promise<void>;
|
|
55
|
-
cleanup(ch: T): Promise<void>;
|
|
56
|
-
checkWetherDomainIsSupported(domain: string): Promise<boolean>;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* HTTP-01 challenge type
|
|
60
|
-
*/
|
|
61
|
-
export interface IHttp01Challenge {
|
|
62
|
-
type: string;
|
|
63
|
-
token: string;
|
|
64
|
-
keyAuthorization: string;
|
|
65
|
-
webPath: string;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* HTTP-01 Memory Handler Interface
|
|
69
|
-
*/
|
|
70
|
-
export interface IHttp01MemoryHandler extends IChallengeHandler<IHttp01Challenge> {
|
|
71
|
-
handleRequest(req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse, next?: () => void): void;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* SmartAcme main class interface
|
|
75
|
-
*/
|
|
76
|
-
export interface ISmartAcme {
|
|
77
|
-
start(): Promise<void>;
|
|
78
|
-
stop(): Promise<void>;
|
|
79
|
-
getCertificateForDomain(domain: string): Promise<ISmartAcmeCert>;
|
|
80
|
-
on?(event: string, listener: (data: any) => void): void;
|
|
81
|
-
eventEmitter?: plugins.EventEmitter;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Port80Handler route options
|
|
85
|
-
*/
|
|
86
|
-
export interface IPort80RouteOptions {
|
|
87
|
-
domain: string;
|
|
88
|
-
sslRedirect: boolean;
|
|
89
|
-
acmeMaintenance: boolean;
|
|
90
|
-
forward?: {
|
|
91
|
-
ip: string;
|
|
92
|
-
port: number;
|
|
93
|
-
};
|
|
94
|
-
acmeForward?: {
|
|
95
|
-
ip: string;
|
|
96
|
-
port: number;
|
|
97
|
-
};
|
|
98
|
-
routeReference?: {
|
|
99
|
-
routeId?: string;
|
|
100
|
-
routeName?: string;
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Extract domains that need certificate management from routes
|
|
105
|
-
* @param routes Route configurations to extract domains from
|
|
106
|
-
* @returns Array of Port80RouteOptions for each domain
|
|
107
|
-
*/
|
|
108
|
-
export declare function extractPort80RoutesFromRoutes(routes: IRouteConfig[]): IPort80RouteOptions[];
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type definitions for SmartAcme interfaces used by ChallengeResponder
|
|
3
|
-
* These reflect the actual SmartAcme API based on the documentation
|
|
4
|
-
*
|
|
5
|
-
* Also includes route-based interfaces for Port80Handler to extract domains
|
|
6
|
-
* that need certificate management from route configurations.
|
|
7
|
-
*/
|
|
8
|
-
import * as plugins from '../../plugins.js';
|
|
9
|
-
/**
|
|
10
|
-
* Extract domains that need certificate management from routes
|
|
11
|
-
* @param routes Route configurations to extract domains from
|
|
12
|
-
* @returns Array of Port80RouteOptions for each domain
|
|
13
|
-
*/
|
|
14
|
-
export function extractPort80RoutesFromRoutes(routes) {
|
|
15
|
-
const result = [];
|
|
16
|
-
for (const route of routes) {
|
|
17
|
-
// Skip routes that don't have domains or TLS configuration
|
|
18
|
-
if (!route.match.domains || !route.action.tls)
|
|
19
|
-
continue;
|
|
20
|
-
// Skip routes that don't terminate TLS
|
|
21
|
-
if (route.action.tls.mode !== 'terminate' && route.action.tls.mode !== 'terminate-and-reencrypt')
|
|
22
|
-
continue;
|
|
23
|
-
// Only routes with automatic certificates need ACME
|
|
24
|
-
if (route.action.tls.certificate !== 'auto')
|
|
25
|
-
continue;
|
|
26
|
-
// Get domains from route
|
|
27
|
-
const domains = Array.isArray(route.match.domains)
|
|
28
|
-
? route.match.domains
|
|
29
|
-
: [route.match.domains];
|
|
30
|
-
// Create Port80RouteOptions for each domain
|
|
31
|
-
for (const domain of domains) {
|
|
32
|
-
// Skip wildcards (we can't get certificates for them)
|
|
33
|
-
if (domain.includes('*'))
|
|
34
|
-
continue;
|
|
35
|
-
// Create Port80RouteOptions
|
|
36
|
-
const options = {
|
|
37
|
-
domain,
|
|
38
|
-
sslRedirect: true, // Default to true for HTTPS routes
|
|
39
|
-
acmeMaintenance: true, // Default to true for auto certificates
|
|
40
|
-
// Add route reference
|
|
41
|
-
routeReference: {
|
|
42
|
-
routeName: route.name
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
// Add domain to result
|
|
46
|
-
result.push(options);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return result;
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNtZS1pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvaHR0cC9wb3J0ODAvYWNtZS1pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFtSDVDOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsTUFBc0I7SUFDbEUsTUFBTSxNQUFNLEdBQTBCLEVBQUUsQ0FBQztJQUV6QyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzNCLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUc7WUFBRSxTQUFTO1FBRXhELHVDQUF1QztRQUN2QyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLHlCQUF5QjtZQUFFLFNBQVM7UUFFM0csb0RBQW9EO1FBQ3BELElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxLQUFLLE1BQU07WUFBRSxTQUFTO1FBRXRELHlCQUF5QjtRQUN6QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU87WUFDckIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxQiw0Q0FBNEM7UUFDNUMsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUM3QixzREFBc0Q7WUFDdEQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFBRSxTQUFTO1lBRW5DLDRCQUE0QjtZQUM1QixNQUFNLE9BQU8sR0FBd0I7Z0JBQ25DLE1BQU07Z0JBQ04sV0FBVyxFQUFFLElBQUksRUFBRSxtQ0FBbUM7Z0JBQ3RELGVBQWUsRUFBRSxJQUFJLEVBQUUsd0NBQXdDO2dCQUUvRCxzQkFBc0I7Z0JBQ3RCLGNBQWMsRUFBRTtvQkFDZCxTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUk7aUJBQ3RCO2FBQ0YsQ0FBQztZQUVGLHVCQUF1QjtZQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyJ9
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import { IncomingMessage, ServerResponse } from 'http';
|
|
3
|
-
import type { ICertificateData } from '../../certificate/models/certificate-types.js';
|
|
4
|
-
/**
|
|
5
|
-
* ChallengeResponder handles ACME HTTP-01 challenges by leveraging SmartAcme
|
|
6
|
-
* It acts as a bridge between the HTTP server and the ACME challenge verification process
|
|
7
|
-
*/
|
|
8
|
-
export declare class ChallengeResponder extends plugins.EventEmitter {
|
|
9
|
-
private readonly useProduction;
|
|
10
|
-
private readonly email;
|
|
11
|
-
private readonly certificateStore;
|
|
12
|
-
private smartAcme;
|
|
13
|
-
private http01Handler;
|
|
14
|
-
/**
|
|
15
|
-
* Creates a new challenge responder
|
|
16
|
-
* @param useProduction Whether to use production ACME servers
|
|
17
|
-
* @param email Account email for ACME
|
|
18
|
-
* @param certificateStore Directory to store certificates
|
|
19
|
-
*/
|
|
20
|
-
constructor(useProduction?: boolean, email?: string, certificateStore?: string);
|
|
21
|
-
/**
|
|
22
|
-
* Initialize the ACME client
|
|
23
|
-
*/
|
|
24
|
-
initialize(): Promise<void>;
|
|
25
|
-
/**
|
|
26
|
-
* Ensure the certificate store directory exists
|
|
27
|
-
*/
|
|
28
|
-
private ensureCertificateStore;
|
|
29
|
-
/**
|
|
30
|
-
* Setup event listeners to forward SmartACME events to our own event emitter
|
|
31
|
-
*/
|
|
32
|
-
private setupEventListeners;
|
|
33
|
-
/**
|
|
34
|
-
* Handle HTTP request by checking if it's an ACME challenge
|
|
35
|
-
* @param req HTTP request object
|
|
36
|
-
* @param res HTTP response object
|
|
37
|
-
* @returns true if the request was handled, false otherwise
|
|
38
|
-
*/
|
|
39
|
-
handleRequest(req: IncomingMessage, res: ServerResponse): boolean;
|
|
40
|
-
/**
|
|
41
|
-
* Request a certificate for a domain
|
|
42
|
-
* @param domain Domain name to request a certificate for
|
|
43
|
-
* @param isRenewal Whether this is a renewal request
|
|
44
|
-
*/
|
|
45
|
-
requestCertificate(domain: string, isRenewal?: boolean): Promise<ICertificateData>;
|
|
46
|
-
/**
|
|
47
|
-
* Check if a certificate is expiring soon and trigger renewal if needed
|
|
48
|
-
* @param domain Domain name
|
|
49
|
-
* @param certificate Certificate data
|
|
50
|
-
* @param thresholdDays Days before expiry to trigger renewal
|
|
51
|
-
*/
|
|
52
|
-
checkCertificateExpiry(domain: string, certificate: ICertificateData, thresholdDays?: number): void;
|
|
53
|
-
}
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import { IncomingMessage, ServerResponse } from 'http';
|
|
3
|
-
import { CertificateEvents } from '../../certificate/events/certificate-events.js';
|
|
4
|
-
/**
|
|
5
|
-
* ChallengeResponder handles ACME HTTP-01 challenges by leveraging SmartAcme
|
|
6
|
-
* It acts as a bridge between the HTTP server and the ACME challenge verification process
|
|
7
|
-
*/
|
|
8
|
-
export class ChallengeResponder extends plugins.EventEmitter {
|
|
9
|
-
/**
|
|
10
|
-
* Creates a new challenge responder
|
|
11
|
-
* @param useProduction Whether to use production ACME servers
|
|
12
|
-
* @param email Account email for ACME
|
|
13
|
-
* @param certificateStore Directory to store certificates
|
|
14
|
-
*/
|
|
15
|
-
constructor(useProduction = false, email = 'admin@example.com', certificateStore = './certs') {
|
|
16
|
-
super();
|
|
17
|
-
this.useProduction = useProduction;
|
|
18
|
-
this.email = email;
|
|
19
|
-
this.certificateStore = certificateStore;
|
|
20
|
-
this.smartAcme = null;
|
|
21
|
-
this.http01Handler = null;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Initialize the ACME client
|
|
25
|
-
*/
|
|
26
|
-
async initialize() {
|
|
27
|
-
try {
|
|
28
|
-
// Create the HTTP-01 memory handler from SmartACME
|
|
29
|
-
this.http01Handler = new plugins.smartacme.handlers.Http01MemoryHandler();
|
|
30
|
-
// Ensure certificate store directory exists
|
|
31
|
-
await this.ensureCertificateStore();
|
|
32
|
-
// Create a MemoryCertManager for certificate storage
|
|
33
|
-
const certManager = new plugins.smartacme.certmanagers.MemoryCertManager();
|
|
34
|
-
// Initialize the SmartACME client with appropriate options
|
|
35
|
-
this.smartAcme = new plugins.smartacme.SmartAcme({
|
|
36
|
-
accountEmail: this.email,
|
|
37
|
-
certManager: certManager,
|
|
38
|
-
environment: this.useProduction ? 'production' : 'integration',
|
|
39
|
-
challengeHandlers: [this.http01Handler],
|
|
40
|
-
challengePriority: ['http-01']
|
|
41
|
-
});
|
|
42
|
-
// Set up event forwarding from SmartAcme
|
|
43
|
-
this.setupEventListeners();
|
|
44
|
-
// Start the SmartACME client
|
|
45
|
-
await this.smartAcme.start();
|
|
46
|
-
console.log('ACME client initialized successfully');
|
|
47
|
-
}
|
|
48
|
-
catch (error) {
|
|
49
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
50
|
-
throw new Error(`Failed to initialize ACME client: ${errorMessage}`);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Ensure the certificate store directory exists
|
|
55
|
-
*/
|
|
56
|
-
async ensureCertificateStore() {
|
|
57
|
-
try {
|
|
58
|
-
await plugins.fs.promises.mkdir(this.certificateStore, { recursive: true });
|
|
59
|
-
}
|
|
60
|
-
catch (error) {
|
|
61
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
62
|
-
throw new Error(`Failed to create certificate store: ${errorMessage}`);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Setup event listeners to forward SmartACME events to our own event emitter
|
|
67
|
-
*/
|
|
68
|
-
setupEventListeners() {
|
|
69
|
-
if (!this.smartAcme)
|
|
70
|
-
return;
|
|
71
|
-
const setupEvents = (emitter) => {
|
|
72
|
-
// Forward certificate events
|
|
73
|
-
emitter.on('certificate', (data) => {
|
|
74
|
-
const isRenewal = !!data.isRenewal;
|
|
75
|
-
const certData = {
|
|
76
|
-
domain: data.domainName || data.domain,
|
|
77
|
-
certificate: data.publicKey || data.cert,
|
|
78
|
-
privateKey: data.privateKey || data.key,
|
|
79
|
-
expiryDate: new Date(data.validUntil || data.expiryDate || Date.now()),
|
|
80
|
-
source: 'http01',
|
|
81
|
-
isRenewal
|
|
82
|
-
};
|
|
83
|
-
const eventType = isRenewal
|
|
84
|
-
? CertificateEvents.CERTIFICATE_RENEWED
|
|
85
|
-
: CertificateEvents.CERTIFICATE_ISSUED;
|
|
86
|
-
this.emit(eventType, certData);
|
|
87
|
-
});
|
|
88
|
-
// Forward error events
|
|
89
|
-
emitter.on('error', (error) => {
|
|
90
|
-
const domain = error.domainName || error.domain || 'unknown';
|
|
91
|
-
const failureData = {
|
|
92
|
-
domain,
|
|
93
|
-
error: error.message || String(error),
|
|
94
|
-
isRenewal: !!error.isRenewal
|
|
95
|
-
};
|
|
96
|
-
this.emit(CertificateEvents.CERTIFICATE_FAILED, failureData);
|
|
97
|
-
});
|
|
98
|
-
};
|
|
99
|
-
// Check for direct event methods on SmartAcme
|
|
100
|
-
if (typeof this.smartAcme.on === 'function') {
|
|
101
|
-
setupEvents(this.smartAcme);
|
|
102
|
-
}
|
|
103
|
-
// Check for eventEmitter property
|
|
104
|
-
else if (this.smartAcme.eventEmitter) {
|
|
105
|
-
setupEvents(this.smartAcme.eventEmitter);
|
|
106
|
-
}
|
|
107
|
-
// If no proper event handling, log a warning
|
|
108
|
-
else {
|
|
109
|
-
console.warn('SmartAcme instance does not support expected event interface - events may not be forwarded');
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Handle HTTP request by checking if it's an ACME challenge
|
|
114
|
-
* @param req HTTP request object
|
|
115
|
-
* @param res HTTP response object
|
|
116
|
-
* @returns true if the request was handled, false otherwise
|
|
117
|
-
*/
|
|
118
|
-
handleRequest(req, res) {
|
|
119
|
-
if (!this.http01Handler)
|
|
120
|
-
return false;
|
|
121
|
-
// Check if this is an ACME challenge request (/.well-known/acme-challenge/*)
|
|
122
|
-
const url = req.url || '';
|
|
123
|
-
if (url.startsWith('/.well-known/acme-challenge/')) {
|
|
124
|
-
try {
|
|
125
|
-
// Delegate to the HTTP-01 memory handler, which knows how to serve challenges
|
|
126
|
-
this.http01Handler.handleRequest(req, res);
|
|
127
|
-
return true;
|
|
128
|
-
}
|
|
129
|
-
catch (error) {
|
|
130
|
-
console.error('Error handling ACME challenge:', error);
|
|
131
|
-
// If there was an error, send a 404 response
|
|
132
|
-
res.writeHead(404);
|
|
133
|
-
res.end('Not found');
|
|
134
|
-
return true;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return false;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Request a certificate for a domain
|
|
141
|
-
* @param domain Domain name to request a certificate for
|
|
142
|
-
* @param isRenewal Whether this is a renewal request
|
|
143
|
-
*/
|
|
144
|
-
async requestCertificate(domain, isRenewal = false) {
|
|
145
|
-
if (!this.smartAcme) {
|
|
146
|
-
throw new Error('ACME client not initialized');
|
|
147
|
-
}
|
|
148
|
-
try {
|
|
149
|
-
// Request certificate using SmartACME
|
|
150
|
-
const certObj = await this.smartAcme.getCertificateForDomain(domain);
|
|
151
|
-
// Convert the certificate object to our CertificateData format
|
|
152
|
-
const certData = {
|
|
153
|
-
domain,
|
|
154
|
-
certificate: certObj.publicKey,
|
|
155
|
-
privateKey: certObj.privateKey,
|
|
156
|
-
expiryDate: new Date(certObj.validUntil),
|
|
157
|
-
source: 'http01',
|
|
158
|
-
isRenewal
|
|
159
|
-
};
|
|
160
|
-
return certData;
|
|
161
|
-
}
|
|
162
|
-
catch (error) {
|
|
163
|
-
// Create failure object
|
|
164
|
-
const failure = {
|
|
165
|
-
domain,
|
|
166
|
-
error: error instanceof Error ? error.message : String(error),
|
|
167
|
-
isRenewal
|
|
168
|
-
};
|
|
169
|
-
// Emit failure event
|
|
170
|
-
this.emit(CertificateEvents.CERTIFICATE_FAILED, failure);
|
|
171
|
-
// Rethrow with more context
|
|
172
|
-
throw new Error(`Failed to ${isRenewal ? 'renew' : 'obtain'} certificate for ${domain}: ${error instanceof Error ? error.message : String(error)}`);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Check if a certificate is expiring soon and trigger renewal if needed
|
|
177
|
-
* @param domain Domain name
|
|
178
|
-
* @param certificate Certificate data
|
|
179
|
-
* @param thresholdDays Days before expiry to trigger renewal
|
|
180
|
-
*/
|
|
181
|
-
checkCertificateExpiry(domain, certificate, thresholdDays = 30) {
|
|
182
|
-
if (!certificate.expiryDate)
|
|
183
|
-
return;
|
|
184
|
-
const now = new Date();
|
|
185
|
-
const expiryDate = certificate.expiryDate;
|
|
186
|
-
const daysDifference = Math.floor((expiryDate.getTime() - now.getTime()) / (1000 * 60 * 60 * 24));
|
|
187
|
-
if (daysDifference <= thresholdDays) {
|
|
188
|
-
const expiryInfo = {
|
|
189
|
-
domain,
|
|
190
|
-
expiryDate,
|
|
191
|
-
daysRemaining: daysDifference
|
|
192
|
-
};
|
|
193
|
-
this.emit(CertificateEvents.CERTIFICATE_EXPIRING, expiryInfo);
|
|
194
|
-
// Automatically attempt renewal if expiring
|
|
195
|
-
if (this.smartAcme) {
|
|
196
|
-
this.requestCertificate(domain, true).catch(error => {
|
|
197
|
-
console.error(`Failed to auto-renew certificate for ${domain}:`, error);
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlLXJlc3BvbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2h0dHAvcG9ydDgwL2NoYWxsZW5nZS1yZXNwb25kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2xCLE1BQU0sZ0RBQWdELENBQUM7QUFheEQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLE9BQU8sQ0FBQyxZQUFZO0lBSTFEOzs7OztPQUtHO0lBQ0gsWUFDbUIsZ0JBQXlCLEtBQUssRUFDOUIsUUFBZ0IsbUJBQW1CLEVBQ25DLG1CQUEyQixTQUFTO1FBRXJELEtBQUssRUFBRSxDQUFDO1FBSlMsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBQzlCLFVBQUssR0FBTCxLQUFLLENBQThCO1FBQ25DLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFaL0MsY0FBUyxHQUFzQixJQUFJLENBQUM7UUFDcEMsa0JBQWEsR0FBZ0MsSUFBSSxDQUFDO0lBYzFELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxVQUFVO1FBQ3JCLElBQUksQ0FBQztZQUNILG1EQUFtRDtZQUNuRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUUxRSw0Q0FBNEM7WUFDNUMsTUFBTSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUVwQyxxREFBcUQ7WUFDckQsTUFBTSxXQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBRTNFLDJEQUEyRDtZQUMzRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUks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
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Port 80 handling
|
|
3
|
-
*/
|
|
4
|
-
// Export the main components
|
|
5
|
-
export { Port80Handler } from './port80-handler.js';
|
|
6
|
-
export { ChallengeResponder } from './challenge-responder.js';
|
|
7
|
-
// Export backward compatibility interfaces and types
|
|
8
|
-
export { HttpError as Port80HandlerError, CertificateError as CertError } from '../models/http-types.js';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9odHRwL3BvcnQ4MC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILDZCQUE2QjtBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUQscURBQXFEO0FBQ3JELE9BQU8sRUFDTCxTQUFTLElBQUksa0JBQWtCLEVBQy9CLGdCQUFnQixJQUFJLFNBQVMsRUFDOUIsTUFBTSx5QkFBeUIsQ0FBQyJ9
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import { CertificateEvents } from '../../certificate/events/certificate-events.js';
|
|
3
|
-
import type { IDomainOptions, // Kept for backward compatibility
|
|
4
|
-
ICertificateData, IAcmeOptions } from '../../certificate/models/certificate-types.js';
|
|
5
|
-
import { HttpError, CertificateError, ServerError } from '../models/http-types.js';
|
|
6
|
-
import type { IPort80RouteOptions } from './acme-interfaces.js';
|
|
7
|
-
import type { IRouteConfig } from '../../proxies/smart-proxy/models/route-types.js';
|
|
8
|
-
export { HttpError as Port80HandlerError, CertificateError, ServerError };
|
|
9
|
-
export declare const Port80HandlerEvents: typeof CertificateEvents;
|
|
10
|
-
/**
|
|
11
|
-
* Configuration options for the Port80Handler
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* Port80Handler with ACME certificate management and request forwarding capabilities
|
|
15
|
-
* Now with glob pattern support for domain matching
|
|
16
|
-
*/
|
|
17
|
-
export declare class Port80Handler extends plugins.EventEmitter {
|
|
18
|
-
private domainCertificates;
|
|
19
|
-
private challengeResponder;
|
|
20
|
-
private server;
|
|
21
|
-
private isShuttingDown;
|
|
22
|
-
private options;
|
|
23
|
-
/**
|
|
24
|
-
* Creates a new Port80Handler
|
|
25
|
-
* @param options Configuration options
|
|
26
|
-
*/
|
|
27
|
-
constructor(options?: IAcmeOptions);
|
|
28
|
-
/**
|
|
29
|
-
* Starts the HTTP server for ACME challenges
|
|
30
|
-
*/
|
|
31
|
-
start(): Promise<void>;
|
|
32
|
-
/**
|
|
33
|
-
* Stops the HTTP server and cleanup resources
|
|
34
|
-
*/
|
|
35
|
-
stop(): Promise<void>;
|
|
36
|
-
/**
|
|
37
|
-
* Adds a domain with configuration options
|
|
38
|
-
* @param options Domain configuration options
|
|
39
|
-
*/
|
|
40
|
-
addDomain(options: IDomainOptions | IPort80RouteOptions): void;
|
|
41
|
-
/**
|
|
42
|
-
* Add domains from route configurations
|
|
43
|
-
* @param routes Array of route configurations
|
|
44
|
-
*/
|
|
45
|
-
addDomainsFromRoutes(routes: IRouteConfig[]): void;
|
|
46
|
-
/**
|
|
47
|
-
* Normalize options from either IDomainOptions or IPort80RouteOptions
|
|
48
|
-
* @param options Options to normalize
|
|
49
|
-
* @returns Normalized IDomainOptions
|
|
50
|
-
* @private
|
|
51
|
-
*/
|
|
52
|
-
private normalizeOptions;
|
|
53
|
-
/**
|
|
54
|
-
* Removes a domain from management
|
|
55
|
-
* @param domain The domain to remove
|
|
56
|
-
*/
|
|
57
|
-
removeDomain(domain: string): void;
|
|
58
|
-
/**
|
|
59
|
-
* Gets the certificate for a domain if it exists
|
|
60
|
-
* @param domain The domain to get the certificate for
|
|
61
|
-
*/
|
|
62
|
-
getCertificate(domain: string): ICertificateData | null;
|
|
63
|
-
/**
|
|
64
|
-
* Check if a domain is a glob pattern
|
|
65
|
-
* @param domain Domain to check
|
|
66
|
-
* @returns True if the domain is a glob pattern
|
|
67
|
-
*/
|
|
68
|
-
private isGlobPattern;
|
|
69
|
-
/**
|
|
70
|
-
* Get domain info for a specific domain, using glob pattern matching if needed
|
|
71
|
-
* @param requestDomain The actual domain from the request
|
|
72
|
-
* @returns The domain info or null if not found
|
|
73
|
-
*/
|
|
74
|
-
private getDomainInfoForRequest;
|
|
75
|
-
/**
|
|
76
|
-
* Check if a domain matches a glob pattern
|
|
77
|
-
* @param domain The domain to check
|
|
78
|
-
* @param pattern The pattern to match against
|
|
79
|
-
* @returns True if the domain matches the pattern
|
|
80
|
-
*/
|
|
81
|
-
private domainMatchesPattern;
|
|
82
|
-
/**
|
|
83
|
-
* Handles incoming HTTP requests
|
|
84
|
-
* @param req The HTTP request
|
|
85
|
-
* @param res The HTTP response
|
|
86
|
-
*/
|
|
87
|
-
private handleRequest;
|
|
88
|
-
/**
|
|
89
|
-
* Forwards an HTTP request to the specified target
|
|
90
|
-
* @param req The original request
|
|
91
|
-
* @param res The response object
|
|
92
|
-
* @param target The forwarding target (IP and port)
|
|
93
|
-
* @param requestType Type of request for logging
|
|
94
|
-
*/
|
|
95
|
-
private forwardRequest;
|
|
96
|
-
/**
|
|
97
|
-
* Obtains a certificate for a domain using ACME HTTP-01 challenge
|
|
98
|
-
* @param domain The domain to obtain a certificate for
|
|
99
|
-
* @param isRenewal Whether this is a renewal attempt
|
|
100
|
-
*/
|
|
101
|
-
private obtainCertificate;
|
|
102
|
-
/**
|
|
103
|
-
* Extract expiry date from certificate using a more robust approach
|
|
104
|
-
* @param certificate Certificate PEM string
|
|
105
|
-
* @param domain Domain for logging
|
|
106
|
-
* @returns Extracted expiry date or default
|
|
107
|
-
*/
|
|
108
|
-
private extractExpiryDateFromCertificate;
|
|
109
|
-
/**
|
|
110
|
-
* Get a default expiry date (90 days from now)
|
|
111
|
-
* @returns Default expiry date
|
|
112
|
-
*/
|
|
113
|
-
private getDefaultExpiryDate;
|
|
114
|
-
/**
|
|
115
|
-
* Emits a certificate event with the certificate data
|
|
116
|
-
* @param eventType The event type to emit
|
|
117
|
-
* @param data The certificate data
|
|
118
|
-
*/
|
|
119
|
-
private emitCertificateEvent;
|
|
120
|
-
/**
|
|
121
|
-
* Gets all domains and their certificate status
|
|
122
|
-
* @returns Map of domains to certificate status
|
|
123
|
-
*/
|
|
124
|
-
getDomainCertificateStatus(): Map<string, {
|
|
125
|
-
certObtained: boolean;
|
|
126
|
-
expiryDate?: Date;
|
|
127
|
-
daysRemaining?: number;
|
|
128
|
-
obtainingInProgress: boolean;
|
|
129
|
-
lastRenewalAttempt?: Date;
|
|
130
|
-
}>;
|
|
131
|
-
/**
|
|
132
|
-
* Request a certificate renewal for a specific domain.
|
|
133
|
-
* @param domain The domain to renew.
|
|
134
|
-
*/
|
|
135
|
-
renewCertificate(domain: string): Promise<void>;
|
|
136
|
-
}
|