@push.rocks/smartproxy 22.6.0 → 23.1.0
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/changelog.md +18 -0
- package/dist_rust/{rustproxy → rustproxy_linux_amd64} +0 -0
- package/dist_rust/rustproxy_linux_arm64 +0 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/index.d.ts +0 -1
- package/dist_ts/index.js +1 -3
- package/dist_ts/plugins.d.ts +2 -1
- package/dist_ts/plugins.js +3 -2
- package/dist_ts/proxies/index.d.ts +0 -1
- package/dist_ts/proxies/index.js +1 -3
- package/dist_ts/proxies/smart-proxy/models/route-types.js +1 -1
- package/dist_ts/proxies/smart-proxy/rust-proxy-bridge.d.ts +9 -21
- package/dist_ts/proxies/smart-proxy/rust-proxy-bridge.js +83 -212
- package/dist_ts/proxies/smart-proxy/smart-proxy.js +2 -3
- package/npmextra.json +3 -0
- package/package.json +13 -11
- package/readme.md +35 -31
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/index.ts +0 -3
- package/ts/plugins.ts +2 -0
- package/ts/proxies/index.ts +0 -3
- package/ts/proxies/smart-proxy/models/route-types.ts +0 -2
- package/ts/proxies/smart-proxy/rust-proxy-bridge.ts +102 -233
- package/ts/proxies/smart-proxy/smart-proxy.ts +1 -2
- package/dist_ts/common/eventUtils.d.ts +0 -14
- package/dist_ts/common/eventUtils.js +0 -20
- package/dist_ts/common/types.d.ts +0 -82
- package/dist_ts/common/types.js +0 -15
- package/dist_ts/core/utils/event-system.d.ts +0 -200
- package/dist_ts/core/utils/event-system.js +0 -224
- package/dist_ts/core/utils/event-utils.d.ts +0 -15
- package/dist_ts/core/utils/event-utils.js +0 -11
- package/dist_ts/core/utils/route-manager.d.ts +0 -88
- package/dist_ts/core/utils/route-manager.js +0 -342
- package/dist_ts/core/utils/route-utils.d.ts +0 -28
- package/dist_ts/core/utils/route-utils.js +0 -67
- package/dist_ts/detection/detectors/http-detector-v2.d.ts +0 -33
- package/dist_ts/detection/detectors/http-detector-v2.js +0 -87
- package/dist_ts/detection/detectors/tls-detector-v2.d.ts +0 -33
- package/dist_ts/detection/detectors/tls-detector-v2.js +0 -80
- package/dist_ts/detection/protocol-detector-v2.d.ts +0 -46
- package/dist_ts/detection/protocol-detector-v2.js +0 -116
- package/dist_ts/forwarding/config/forwarding-types.d.ts +0 -42
- package/dist_ts/forwarding/config/forwarding-types.js +0 -18
- package/dist_ts/forwarding/config/index.d.ts +0 -9
- package/dist_ts/forwarding/config/index.js +0 -10
- package/dist_ts/forwarding/factory/forwarding-factory.d.ts +0 -25
- package/dist_ts/forwarding/factory/forwarding-factory.js +0 -172
- package/dist_ts/forwarding/factory/index.d.ts +0 -4
- package/dist_ts/forwarding/factory/index.js +0 -5
- package/dist_ts/forwarding/handlers/base-handler.d.ts +0 -62
- package/dist_ts/forwarding/handlers/base-handler.js +0 -121
- package/dist_ts/forwarding/handlers/http-handler.d.ts +0 -30
- package/dist_ts/forwarding/handlers/http-handler.js +0 -143
- package/dist_ts/forwarding/handlers/https-passthrough-handler.d.ts +0 -29
- package/dist_ts/forwarding/handlers/https-passthrough-handler.js +0 -156
- package/dist_ts/forwarding/handlers/https-terminate-to-http-handler.d.ts +0 -36
- package/dist_ts/forwarding/handlers/https-terminate-to-http-handler.js +0 -276
- package/dist_ts/forwarding/handlers/https-terminate-to-https-handler.d.ts +0 -35
- package/dist_ts/forwarding/handlers/https-terminate-to-https-handler.js +0 -261
- package/dist_ts/forwarding/handlers/index.d.ts +0 -8
- package/dist_ts/forwarding/handlers/index.js +0 -9
- package/dist_ts/forwarding/index.d.ts +0 -13
- package/dist_ts/forwarding/index.js +0 -16
- package/dist_ts/http/index.d.ts +0 -5
- package/dist_ts/http/index.js +0 -8
- package/dist_ts/http/models/http-types.d.ts +0 -6
- package/dist_ts/http/models/http-types.js +0 -7
- package/dist_ts/http/router/index.d.ts +0 -8
- package/dist_ts/http/router/index.js +0 -7
- package/dist_ts/http/router/proxy-router.d.ts +0 -115
- package/dist_ts/http/router/proxy-router.js +0 -325
- package/dist_ts/http/router/route-router.d.ts +0 -108
- package/dist_ts/http/router/route-router.js +0 -393
- package/dist_ts/protocols/tls/constants.d.ts +0 -122
- package/dist_ts/protocols/tls/constants.js +0 -135
- package/dist_ts/protocols/tls/parser.d.ts +0 -53
- package/dist_ts/protocols/tls/parser.js +0 -294
- package/dist_ts/protocols/tls/types.d.ts +0 -65
- package/dist_ts/protocols/tls/types.js +0 -5
- package/dist_ts/proxies/http-proxy/certificate-manager.d.ts +0 -95
- package/dist_ts/proxies/http-proxy/certificate-manager.js +0 -214
- package/dist_ts/proxies/http-proxy/connection-pool.d.ts +0 -47
- package/dist_ts/proxies/http-proxy/connection-pool.js +0 -195
- package/dist_ts/proxies/http-proxy/context-creator.d.ts +0 -34
- package/dist_ts/proxies/http-proxy/context-creator.js +0 -108
- package/dist_ts/proxies/http-proxy/default-certificates.d.ts +0 -54
- package/dist_ts/proxies/http-proxy/default-certificates.js +0 -127
- package/dist_ts/proxies/http-proxy/function-cache.d.ts +0 -95
- package/dist_ts/proxies/http-proxy/function-cache.js +0 -215
- package/dist_ts/proxies/http-proxy/handlers/index.d.ts +0 -4
- package/dist_ts/proxies/http-proxy/handlers/index.js +0 -6
- package/dist_ts/proxies/http-proxy/handlers/redirect-handler.d.ts +0 -18
- package/dist_ts/proxies/http-proxy/handlers/redirect-handler.js +0 -78
- package/dist_ts/proxies/http-proxy/handlers/static-handler.d.ts +0 -19
- package/dist_ts/proxies/http-proxy/handlers/static-handler.js +0 -211
- package/dist_ts/proxies/http-proxy/http-proxy.d.ts +0 -117
- package/dist_ts/proxies/http-proxy/http-proxy.js +0 -521
- package/dist_ts/proxies/http-proxy/http-request-handler.d.ts +0 -40
- package/dist_ts/proxies/http-proxy/http-request-handler.js +0 -257
- package/dist_ts/proxies/http-proxy/http2-request-handler.d.ts +0 -24
- package/dist_ts/proxies/http-proxy/http2-request-handler.js +0 -201
- package/dist_ts/proxies/http-proxy/index.d.ts +0 -14
- package/dist_ts/proxies/http-proxy/index.js +0 -16
- package/dist_ts/proxies/http-proxy/models/http-types.d.ts +0 -117
- package/dist_ts/proxies/http-proxy/models/http-types.js +0 -92
- package/dist_ts/proxies/http-proxy/models/index.d.ts +0 -5
- package/dist_ts/proxies/http-proxy/models/index.js +0 -6
- package/dist_ts/proxies/http-proxy/models/types.d.ts +0 -75
- package/dist_ts/proxies/http-proxy/models/types.js +0 -35
- package/dist_ts/proxies/http-proxy/request-handler.d.ts +0 -97
- package/dist_ts/proxies/http-proxy/request-handler.js +0 -737
- package/dist_ts/proxies/http-proxy/security-manager.d.ts +0 -98
- package/dist_ts/proxies/http-proxy/security-manager.js +0 -341
- package/dist_ts/proxies/http-proxy/websocket-handler.d.ts +0 -50
- package/dist_ts/proxies/http-proxy/websocket-handler.js +0 -505
- package/dist_ts/proxies/nftables-proxy/index.d.ts +0 -6
- package/dist_ts/proxies/nftables-proxy/index.js +0 -7
- package/dist_ts/proxies/nftables-proxy/models/errors.d.ts +0 -15
- package/dist_ts/proxies/nftables-proxy/models/errors.js +0 -28
- package/dist_ts/proxies/nftables-proxy/models/index.d.ts +0 -5
- package/dist_ts/proxies/nftables-proxy/models/index.js +0 -6
- package/dist_ts/proxies/nftables-proxy/models/interfaces.d.ts +0 -75
- package/dist_ts/proxies/nftables-proxy/models/interfaces.js +0 -5
- package/dist_ts/proxies/nftables-proxy/nftables-proxy.d.ts +0 -124
- package/dist_ts/proxies/nftables-proxy/nftables-proxy.js +0 -1374
- package/dist_ts/proxies/nftables-proxy/utils/index.d.ts +0 -9
- package/dist_ts/proxies/nftables-proxy/utils/index.js +0 -12
- package/dist_ts/proxies/nftables-proxy/utils/nft-command-executor.d.ts +0 -66
- package/dist_ts/proxies/nftables-proxy/utils/nft-command-executor.js +0 -131
- package/dist_ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.d.ts +0 -39
- package/dist_ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.js +0 -112
- package/dist_ts/proxies/nftables-proxy/utils/nft-rule-validator.d.ts +0 -59
- package/dist_ts/proxies/nftables-proxy/utils/nft-rule-validator.js +0 -130
- package/dist_ts/proxies/smart-proxy/acme-state-manager.d.ts +0 -42
- package/dist_ts/proxies/smart-proxy/acme-state-manager.js +0 -101
- package/dist_ts/proxies/smart-proxy/cert-store.d.ts +0 -10
- package/dist_ts/proxies/smart-proxy/cert-store.js +0 -72
- package/dist_ts/proxies/smart-proxy/certificate-manager.d.ts +0 -164
- package/dist_ts/proxies/smart-proxy/certificate-manager.js +0 -745
- package/dist_ts/proxies/smart-proxy/connection-manager.d.ts +0 -128
- package/dist_ts/proxies/smart-proxy/connection-manager.js +0 -689
- package/dist_ts/proxies/smart-proxy/http-proxy-bridge.d.ts +0 -43
- package/dist_ts/proxies/smart-proxy/http-proxy-bridge.js +0 -180
- package/dist_ts/proxies/smart-proxy/metrics-collector.d.ts +0 -98
- package/dist_ts/proxies/smart-proxy/metrics-collector.js +0 -355
- package/dist_ts/proxies/smart-proxy/nftables-manager.d.ts +0 -82
- package/dist_ts/proxies/smart-proxy/nftables-manager.js +0 -237
- package/dist_ts/proxies/smart-proxy/port-manager.d.ts +0 -117
- package/dist_ts/proxies/smart-proxy/port-manager.js +0 -318
- package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +0 -60
- package/dist_ts/proxies/smart-proxy/route-connection-handler.js +0 -1407
- package/dist_ts/proxies/smart-proxy/route-manager.d.ts +0 -112
- package/dist_ts/proxies/smart-proxy/route-manager.js +0 -453
- package/dist_ts/proxies/smart-proxy/route-orchestrator.d.ts +0 -56
- package/dist_ts/proxies/smart-proxy/route-orchestrator.js +0 -204
- package/dist_ts/proxies/smart-proxy/rust-binary-locator.d.ts +0 -23
- package/dist_ts/proxies/smart-proxy/rust-binary-locator.js +0 -104
- package/dist_ts/proxies/smart-proxy/security-manager.d.ts +0 -74
- package/dist_ts/proxies/smart-proxy/security-manager.js +0 -227
- package/dist_ts/proxies/smart-proxy/throughput-tracker.d.ts +0 -36
- package/dist_ts/proxies/smart-proxy/throughput-tracker.js +0 -115
- package/dist_ts/proxies/smart-proxy/timeout-manager.d.ts +0 -48
- package/dist_ts/proxies/smart-proxy/timeout-manager.js +0 -158
- package/dist_ts/proxies/smart-proxy/tls-manager.d.ts +0 -50
- package/dist_ts/proxies/smart-proxy/tls-manager.js +0 -110
- package/dist_ts/proxies/smart-proxy/utils/route-patterns.d.ts +0 -161
- package/dist_ts/proxies/smart-proxy/utils/route-patterns.js +0 -282
- package/dist_ts/proxies/smart-proxy/utils/route-validators.d.ts +0 -73
- package/dist_ts/proxies/smart-proxy/utils/route-validators.js +0 -259
- package/dist_ts/routing/router/proxy-router.d.ts +0 -115
- package/dist_ts/routing/router/proxy-router.js +0 -325
- package/dist_ts/routing/router/route-router.d.ts +0 -108
- package/dist_ts/routing/router/route-router.js +0 -393
- package/dist_ts/tls/alerts/index.d.ts +0 -4
- package/dist_ts/tls/alerts/index.js +0 -5
- package/dist_ts/tls/alerts/tls-alert.d.ts +0 -150
- package/dist_ts/tls/alerts/tls-alert.js +0 -226
- package/dist_ts/tls/sni/client-hello-parser.d.ts +0 -100
- package/dist_ts/tls/sni/client-hello-parser.js +0 -464
- package/dist_ts/tls/sni/sni-extraction.d.ts +0 -58
- package/dist_ts/tls/sni/sni-extraction.js +0 -275
- package/dist_ts/tls/utils/index.d.ts +0 -4
- package/dist_ts/tls/utils/index.js +0 -5
- package/dist_ts/tls/utils/tls-utils.d.ts +0 -49
- package/dist_ts/tls/utils/tls-utils.js +0 -75
- package/ts/proxies/nftables-proxy/index.ts +0 -6
- package/ts/proxies/nftables-proxy/models/errors.ts +0 -30
- package/ts/proxies/nftables-proxy/models/index.ts +0 -5
- package/ts/proxies/nftables-proxy/models/interfaces.ts +0 -94
- package/ts/proxies/nftables-proxy/nftables-proxy.ts +0 -1754
- package/ts/proxies/nftables-proxy/utils/index.ts +0 -38
- package/ts/proxies/nftables-proxy/utils/nft-command-executor.ts +0 -162
- package/ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.ts +0 -125
- package/ts/proxies/nftables-proxy/utils/nft-rule-validator.ts +0 -156
- package/ts/proxies/smart-proxy/rust-binary-locator.ts +0 -112
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Global state store for ACME operations
|
|
3
|
-
* Tracks active challenge routes and port allocations
|
|
4
|
-
*/
|
|
5
|
-
export class AcmeStateManager {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.activeChallengeRoutes = new Map();
|
|
8
|
-
this.acmePortAllocations = new Set();
|
|
9
|
-
this.primaryChallengeRoute = null;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Check if a challenge route is active
|
|
13
|
-
*/
|
|
14
|
-
isChallengeRouteActive() {
|
|
15
|
-
return this.activeChallengeRoutes.size > 0;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Register a challenge route as active
|
|
19
|
-
*/
|
|
20
|
-
addChallengeRoute(route) {
|
|
21
|
-
this.activeChallengeRoutes.set(route.name, route);
|
|
22
|
-
// Track the primary challenge route
|
|
23
|
-
if (!this.primaryChallengeRoute || route.priority > (this.primaryChallengeRoute.priority || 0)) {
|
|
24
|
-
this.primaryChallengeRoute = route;
|
|
25
|
-
}
|
|
26
|
-
// Track port allocations
|
|
27
|
-
const ports = Array.isArray(route.match.ports) ? route.match.ports : [route.match.ports];
|
|
28
|
-
ports.forEach(port => this.acmePortAllocations.add(port));
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Remove a challenge route
|
|
32
|
-
*/
|
|
33
|
-
removeChallengeRoute(routeName) {
|
|
34
|
-
const route = this.activeChallengeRoutes.get(routeName);
|
|
35
|
-
if (!route)
|
|
36
|
-
return;
|
|
37
|
-
this.activeChallengeRoutes.delete(routeName);
|
|
38
|
-
// Update primary challenge route if needed
|
|
39
|
-
if (this.primaryChallengeRoute?.name === routeName) {
|
|
40
|
-
this.primaryChallengeRoute = null;
|
|
41
|
-
// Find new primary route with highest priority
|
|
42
|
-
let highestPriority = -1;
|
|
43
|
-
for (const [_, activeRoute] of this.activeChallengeRoutes) {
|
|
44
|
-
const priority = activeRoute.priority || 0;
|
|
45
|
-
if (priority > highestPriority) {
|
|
46
|
-
highestPriority = priority;
|
|
47
|
-
this.primaryChallengeRoute = activeRoute;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
// Update port allocations - only remove if no other routes use this port
|
|
52
|
-
const ports = Array.isArray(route.match.ports) ? route.match.ports : [route.match.ports];
|
|
53
|
-
ports.forEach(port => {
|
|
54
|
-
let portStillUsed = false;
|
|
55
|
-
for (const [_, activeRoute] of this.activeChallengeRoutes) {
|
|
56
|
-
const activePorts = Array.isArray(activeRoute.match.ports) ?
|
|
57
|
-
activeRoute.match.ports : [activeRoute.match.ports];
|
|
58
|
-
if (activePorts.includes(port)) {
|
|
59
|
-
portStillUsed = true;
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
if (!portStillUsed) {
|
|
64
|
-
this.acmePortAllocations.delete(port);
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Get all active challenge routes
|
|
70
|
-
*/
|
|
71
|
-
getActiveChallengeRoutes() {
|
|
72
|
-
return Array.from(this.activeChallengeRoutes.values());
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Get the primary challenge route
|
|
76
|
-
*/
|
|
77
|
-
getPrimaryChallengeRoute() {
|
|
78
|
-
return this.primaryChallengeRoute;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Check if a port is allocated for ACME
|
|
82
|
-
*/
|
|
83
|
-
isPortAllocatedForAcme(port) {
|
|
84
|
-
return this.acmePortAllocations.has(port);
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Get all ACME ports
|
|
88
|
-
*/
|
|
89
|
-
getAcmePorts() {
|
|
90
|
-
return Array.from(this.acmePortAllocations);
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Clear all state (for shutdown or reset)
|
|
94
|
-
*/
|
|
95
|
-
clear() {
|
|
96
|
-
this.activeChallengeRoutes.clear();
|
|
97
|
-
this.acmePortAllocations.clear();
|
|
98
|
-
this.primaryChallengeRoute = null;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNtZS1zdGF0ZS1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvcHJveGllcy9zbWFydC1wcm94eS9hY21lLXN0YXRlLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUE3QjtRQUNVLDBCQUFxQixHQUE4QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzdELHdCQUFtQixHQUFnQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzdDLDBCQUFxQixHQUF3QixJQUFJLENBQUM7SUFzRzVELENBQUM7SUFwR0M7O09BRUc7SUFDSSxzQkFBc0I7UUFDM0IsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxpQkFBaUIsQ0FBQyxLQUFtQjtRQUMxQyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFbEQsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMvRixJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLENBQUM7UUFFRCx5QkFBeUI7UUFDekIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pGLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUs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
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { ICertificateData } from './certificate-manager.js';
|
|
2
|
-
export declare class CertStore {
|
|
3
|
-
private certDir;
|
|
4
|
-
constructor(certDir: string);
|
|
5
|
-
initialize(): Promise<void>;
|
|
6
|
-
getCertificate(routeName: string): Promise<ICertificateData | null>;
|
|
7
|
-
saveCertificate(routeName: string, certData: ICertificateData): Promise<void>;
|
|
8
|
-
deleteCertificate(routeName: string): Promise<void>;
|
|
9
|
-
private getCertPath;
|
|
10
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import { AsyncFileSystem } from '../../core/utils/fs-utils.js';
|
|
3
|
-
export class CertStore {
|
|
4
|
-
constructor(certDir) {
|
|
5
|
-
this.certDir = certDir;
|
|
6
|
-
}
|
|
7
|
-
async initialize() {
|
|
8
|
-
await AsyncFileSystem.ensureDir(this.certDir);
|
|
9
|
-
}
|
|
10
|
-
async getCertificate(routeName) {
|
|
11
|
-
const certPath = this.getCertPath(routeName);
|
|
12
|
-
const metaPath = `${certPath}/meta.json`;
|
|
13
|
-
if (!await AsyncFileSystem.exists(metaPath)) {
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
try {
|
|
17
|
-
const meta = await AsyncFileSystem.readJSON(metaPath);
|
|
18
|
-
const [cert, key] = await Promise.all([
|
|
19
|
-
AsyncFileSystem.readFile(`${certPath}/cert.pem`),
|
|
20
|
-
AsyncFileSystem.readFile(`${certPath}/key.pem`)
|
|
21
|
-
]);
|
|
22
|
-
let ca;
|
|
23
|
-
const caPath = `${certPath}/ca.pem`;
|
|
24
|
-
if (await AsyncFileSystem.exists(caPath)) {
|
|
25
|
-
ca = await AsyncFileSystem.readFile(caPath);
|
|
26
|
-
}
|
|
27
|
-
return {
|
|
28
|
-
cert,
|
|
29
|
-
key,
|
|
30
|
-
ca,
|
|
31
|
-
expiryDate: new Date(meta.expiryDate),
|
|
32
|
-
issueDate: new Date(meta.issueDate)
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
console.error(`Failed to load certificate for ${routeName}: ${error}`);
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
async saveCertificate(routeName, certData) {
|
|
41
|
-
const certPath = this.getCertPath(routeName);
|
|
42
|
-
await AsyncFileSystem.ensureDir(certPath);
|
|
43
|
-
// Save certificate files in parallel
|
|
44
|
-
const savePromises = [
|
|
45
|
-
AsyncFileSystem.writeFile(`${certPath}/cert.pem`, certData.cert),
|
|
46
|
-
AsyncFileSystem.writeFile(`${certPath}/key.pem`, certData.key)
|
|
47
|
-
];
|
|
48
|
-
if (certData.ca) {
|
|
49
|
-
savePromises.push(AsyncFileSystem.writeFile(`${certPath}/ca.pem`, certData.ca));
|
|
50
|
-
}
|
|
51
|
-
// Save metadata
|
|
52
|
-
const meta = {
|
|
53
|
-
expiryDate: certData.expiryDate.toISOString(),
|
|
54
|
-
issueDate: certData.issueDate.toISOString(),
|
|
55
|
-
savedAt: new Date().toISOString()
|
|
56
|
-
};
|
|
57
|
-
savePromises.push(AsyncFileSystem.writeJSON(`${certPath}/meta.json`, meta));
|
|
58
|
-
await Promise.all(savePromises);
|
|
59
|
-
}
|
|
60
|
-
async deleteCertificate(routeName) {
|
|
61
|
-
const certPath = this.getCertPath(routeName);
|
|
62
|
-
if (await AsyncFileSystem.isDirectory(certPath)) {
|
|
63
|
-
await AsyncFileSystem.removeDir(certPath);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
getCertPath(routeName) {
|
|
67
|
-
// Sanitize route name for filesystem
|
|
68
|
-
const safeName = routeName.replace(/[^a-zA-Z0-9-_]/g, '_');
|
|
69
|
-
return `${this.certDir}/${safeName}`;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydC1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL3Byb3hpZXMvc21hcnQtcHJveHkvY2VydC1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUcvRCxNQUFNLE9BQU8sU0FBUztJQUNwQixZQUFvQixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7SUFFaEMsS0FBSyxDQUFDLFVBQVU7UUFDckIsTUFBTSxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFpQjtRQUMzQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sUUFBUSxHQUFHLEdBQUcsUUFBUSxZQUFZLENBQUM7UUFFekMsSUFBSSxDQUFDLE1BQU0sZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzVDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxHQUFHLE1BQU0sZUFBZSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV0RCxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDcEMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsV0FBVyxDQUFDO2dCQUNoRCxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxVQUFVLENBQUM7YUFDaEQsQ0FBQyxDQUFDO1lBRUgsSUFBSSxFQUFzQixDQUFDO1lBQzNCLE1BQU0sTUFBTSxHQUFHLEdBQUcsUUFBUSxT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
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import { HttpProxy } from '../http-proxy/index.js';
|
|
3
|
-
import type { IRouteConfig } from './models/route-types.js';
|
|
4
|
-
import type { IAcmeOptions } from './models/interfaces.js';
|
|
5
|
-
import type { AcmeStateManager } from './acme-state-manager.js';
|
|
6
|
-
export interface ICertStatus {
|
|
7
|
-
domain: string;
|
|
8
|
-
status: 'valid' | 'pending' | 'expired' | 'error';
|
|
9
|
-
expiryDate?: Date;
|
|
10
|
-
issueDate?: Date;
|
|
11
|
-
source: 'static' | 'acme' | 'custom';
|
|
12
|
-
error?: string;
|
|
13
|
-
}
|
|
14
|
-
export interface ICertificateData {
|
|
15
|
-
cert: string;
|
|
16
|
-
key: string;
|
|
17
|
-
ca?: string;
|
|
18
|
-
expiryDate: Date;
|
|
19
|
-
issueDate: Date;
|
|
20
|
-
source?: 'static' | 'acme' | 'custom';
|
|
21
|
-
}
|
|
22
|
-
export declare class SmartCertManager {
|
|
23
|
-
private routes;
|
|
24
|
-
private certDir;
|
|
25
|
-
private acmeOptions?;
|
|
26
|
-
private initialState?;
|
|
27
|
-
private certStore;
|
|
28
|
-
private smartAcme;
|
|
29
|
-
private httpProxy;
|
|
30
|
-
private renewalTimer;
|
|
31
|
-
private pendingChallenges;
|
|
32
|
-
private challengeRoute;
|
|
33
|
-
private certStatus;
|
|
34
|
-
private globalAcmeDefaults;
|
|
35
|
-
private updateRoutesCallback?;
|
|
36
|
-
private challengeRouteActive;
|
|
37
|
-
private isProvisioning;
|
|
38
|
-
private acmeStateManager;
|
|
39
|
-
private certProvisionFunction?;
|
|
40
|
-
private certProvisionFallbackToAcme;
|
|
41
|
-
constructor(routes: IRouteConfig[], certDir?: string, acmeOptions?: {
|
|
42
|
-
email?: string;
|
|
43
|
-
useProduction?: boolean;
|
|
44
|
-
port?: number;
|
|
45
|
-
}, initialState?: {
|
|
46
|
-
challengeRouteActive?: boolean;
|
|
47
|
-
});
|
|
48
|
-
setHttpProxy(httpProxy: HttpProxy): void;
|
|
49
|
-
/**
|
|
50
|
-
* Set the ACME state manager
|
|
51
|
-
*/
|
|
52
|
-
setAcmeStateManager(stateManager: AcmeStateManager): void;
|
|
53
|
-
/**
|
|
54
|
-
* Set global ACME defaults from top-level configuration
|
|
55
|
-
*/
|
|
56
|
-
setGlobalAcmeDefaults(defaults: IAcmeOptions): void;
|
|
57
|
-
/**
|
|
58
|
-
* Set custom certificate provision function
|
|
59
|
-
*/
|
|
60
|
-
setCertProvisionFunction(fn: (domain: string) => Promise<plugins.tsclass.network.ICert | 'http01'>): void;
|
|
61
|
-
/**
|
|
62
|
-
* Set whether to fallback to ACME if custom provision fails
|
|
63
|
-
*/
|
|
64
|
-
setCertProvisionFallbackToAcme(fallback: boolean): void;
|
|
65
|
-
/**
|
|
66
|
-
* Update the routes array to keep it in sync with SmartProxy
|
|
67
|
-
* This prevents stale route data when adding/removing challenge routes
|
|
68
|
-
*/
|
|
69
|
-
setRoutes(routes: IRouteConfig[]): void;
|
|
70
|
-
/**
|
|
71
|
-
* Set callback for updating routes (used for challenge routes)
|
|
72
|
-
*/
|
|
73
|
-
setUpdateRoutesCallback(callback: (routes: IRouteConfig[]) => Promise<void>): void;
|
|
74
|
-
/**
|
|
75
|
-
* Initialize certificate manager and provision certificates for all routes
|
|
76
|
-
*/
|
|
77
|
-
initialize(): Promise<void>;
|
|
78
|
-
/**
|
|
79
|
-
* Provision certificates for all routes that need them
|
|
80
|
-
*/
|
|
81
|
-
provisionAllCertificates(): Promise<void>;
|
|
82
|
-
/**
|
|
83
|
-
* Provision certificate for a single route
|
|
84
|
-
*/
|
|
85
|
-
provisionCertificate(route: IRouteConfig, allowConcurrent?: boolean): Promise<void>;
|
|
86
|
-
/**
|
|
87
|
-
* Provision ACME certificate
|
|
88
|
-
*/
|
|
89
|
-
private provisionAcmeCertificate;
|
|
90
|
-
/**
|
|
91
|
-
* Provision static certificate
|
|
92
|
-
*/
|
|
93
|
-
private provisionStaticCertificate;
|
|
94
|
-
/**
|
|
95
|
-
* Apply certificate to HttpProxy
|
|
96
|
-
*/
|
|
97
|
-
private applyCertificate;
|
|
98
|
-
/**
|
|
99
|
-
* Extract domains from route configuration
|
|
100
|
-
*/
|
|
101
|
-
private extractDomainsFromRoute;
|
|
102
|
-
/**
|
|
103
|
-
* Check if certificate is valid
|
|
104
|
-
*/
|
|
105
|
-
private isCertificateValid;
|
|
106
|
-
/**
|
|
107
|
-
* Extract expiry date from a PEM certificate
|
|
108
|
-
*/
|
|
109
|
-
private extractExpiryDate;
|
|
110
|
-
/**
|
|
111
|
-
* Add challenge route to SmartProxy
|
|
112
|
-
*
|
|
113
|
-
* This method adds a special route for ACME HTTP-01 challenges, which typically uses port 80.
|
|
114
|
-
* Since we may already be listening on port 80 for regular routes, we need to be
|
|
115
|
-
* careful about how we add this route to avoid binding conflicts.
|
|
116
|
-
*/
|
|
117
|
-
private addChallengeRoute;
|
|
118
|
-
/**
|
|
119
|
-
* Remove challenge route from SmartProxy
|
|
120
|
-
*/
|
|
121
|
-
private removeChallengeRoute;
|
|
122
|
-
/**
|
|
123
|
-
* Start renewal timer
|
|
124
|
-
*/
|
|
125
|
-
private startRenewalTimer;
|
|
126
|
-
/**
|
|
127
|
-
* Check and renew certificates that are expiring
|
|
128
|
-
*/
|
|
129
|
-
private checkAndRenewCertificates;
|
|
130
|
-
/**
|
|
131
|
-
* Update certificate status
|
|
132
|
-
*/
|
|
133
|
-
private updateCertStatus;
|
|
134
|
-
/**
|
|
135
|
-
* Get certificate status for a route
|
|
136
|
-
*/
|
|
137
|
-
getCertificateStatus(routeName: string): ICertStatus | undefined;
|
|
138
|
-
/**
|
|
139
|
-
* Force renewal of a certificate
|
|
140
|
-
*/
|
|
141
|
-
renewCertificate(routeName: string): Promise<void>;
|
|
142
|
-
/**
|
|
143
|
-
* Setup challenge handler integration with SmartProxy routing
|
|
144
|
-
*/
|
|
145
|
-
private setupChallengeHandler;
|
|
146
|
-
/**
|
|
147
|
-
* Stop certificate manager
|
|
148
|
-
*/
|
|
149
|
-
stop(): Promise<void>;
|
|
150
|
-
/**
|
|
151
|
-
* Get ACME options (for recreating after route updates)
|
|
152
|
-
*/
|
|
153
|
-
getAcmeOptions(): {
|
|
154
|
-
email?: string;
|
|
155
|
-
useProduction?: boolean;
|
|
156
|
-
port?: number;
|
|
157
|
-
} | undefined;
|
|
158
|
-
/**
|
|
159
|
-
* Get certificate manager state
|
|
160
|
-
*/
|
|
161
|
-
getState(): {
|
|
162
|
-
challengeRouteActive: boolean;
|
|
163
|
-
};
|
|
164
|
-
}
|