@serve.zone/dcrouter 13.45.0 → 14.0.1
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/deno.json +1 -1
- package/dist_ts/00_commitinfo_data.js +2 -2
- package/dist_ts/acme/manager.acme-config.d.ts +1 -14
- package/dist_ts/acme/manager.acme-config.js +4 -65
- package/dist_ts/classes.dcrouter.d.ts +7 -2
- package/dist_ts/classes.dcrouter.js +115 -48
- package/dist_ts/config/classes.api-token-manager.js +3 -3
- package/dist_ts/config/classes.route-config-manager.d.ts +2 -1
- package/dist_ts/config/classes.route-config-manager.js +8 -3
- package/dist_ts/db/documents/classes.acme-config.doc.d.ts +1 -3
- package/dist_ts/db/documents/classes.acme-config.doc.js +2 -4
- package/dist_ts/dns/manager.dns.d.ts +0 -13
- package/dist_ts/dns/manager.dns.js +1 -81
- package/dist_ts/opsserver/handlers/certificate.handler.d.ts +0 -9
- package/dist_ts/opsserver/handlers/certificate.handler.js +1 -40
- package/dist_ts/opsserver/handlers/config.handler.js +12 -20
- package/dist_ts/opsserver/handlers/email-settings.handler.js +2 -2
- package/dist_ts_interfaces/data/acme-config.d.ts +1 -3
- package/dist_ts_interfaces/requests/certificate.d.ts +0 -12
- package/dist_ts_migrations/index.js +2 -2
- package/dist_ts_web/00_commitinfo_data.js +2 -2
- package/package.json +2 -2
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/acme/manager.acme-config.ts +3 -77
- package/ts/classes.dcrouter.ts +134 -49
- package/ts/config/classes.api-token-manager.ts +2 -2
- package/ts/config/classes.route-config-manager.ts +5 -1
- package/ts/db/documents/classes.acme-config.doc.ts +1 -3
- package/ts/dns/manager.dns.ts +0 -103
- package/ts/opsserver/handlers/certificate.handler.ts +0 -47
- package/ts/opsserver/handlers/config.handler.ts +11 -19
- package/ts/opsserver/handlers/email-settings.handler.ts +1 -1
- package/ts_web/00_commitinfo_data.ts +1 -1
package/deno.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@serve.zone/dcrouter',
|
|
6
|
-
version: '
|
|
6
|
+
version: '14.0.1',
|
|
7
7
|
description: 'A multifaceted routing service handling mail and SMS delivery functions.'
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLDBFQUEwRTtDQUN4RixDQUFBIn0=
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import type { IDcRouterOptions } from '../classes.dcrouter.js';
|
|
2
1
|
import type { IAcmeConfig } from '../../dist_ts_interfaces/data/acme-config.js';
|
|
3
2
|
/**
|
|
4
3
|
* AcmeConfigManager — owns the singleton ACME configuration in the DB.
|
|
5
4
|
*
|
|
6
5
|
* Lifecycle:
|
|
7
|
-
* - `start()` — loads
|
|
8
|
-
* fields (`tls.contactEmail`, `smartProxyConfig.acme.*`) on first boot.
|
|
6
|
+
* - `start()` — loads the DB-backed singleton configuration.
|
|
9
7
|
* - `getConfig()` — returns the in-memory cached `IAcmeConfig` (or null)
|
|
10
8
|
* - `updateConfig(args, updatedBy)` — upserts and refreshes the cache
|
|
11
9
|
*
|
|
@@ -15,9 +13,7 @@ import type { IAcmeConfig } from '../../dist_ts_interfaces/data/acme-config.js';
|
|
|
15
13
|
* `ts_web/elements/domains/ops-view-certificates.ts` for the UI warning.
|
|
16
14
|
*/
|
|
17
15
|
export declare class AcmeConfigManager {
|
|
18
|
-
private options;
|
|
19
16
|
private cached;
|
|
20
|
-
constructor(options: IDcRouterOptions);
|
|
21
17
|
start(): Promise<void>;
|
|
22
18
|
stop(): Promise<void>;
|
|
23
19
|
/**
|
|
@@ -35,14 +31,5 @@ export declare class AcmeConfigManager {
|
|
|
35
31
|
* preserved from the existing row (or defaulted if there is no row yet).
|
|
36
32
|
*/
|
|
37
33
|
updateConfig(args: Partial<Omit<IAcmeConfig, 'updatedAt' | 'updatedBy'>>, updatedBy: string): Promise<IAcmeConfig>;
|
|
38
|
-
/**
|
|
39
|
-
* Build a seed object from the legacy constructor fields. Returns null
|
|
40
|
-
* if the user has not provided any of them.
|
|
41
|
-
*
|
|
42
|
-
* Supports BOTH `tls.contactEmail` (short form) and `smartProxyConfig.acme`
|
|
43
|
-
* (full form). `smartProxyConfig.acme` wins when both are present.
|
|
44
|
-
*/
|
|
45
|
-
private deriveSeedFromOptions;
|
|
46
|
-
private createSeedDoc;
|
|
47
34
|
private toPlain;
|
|
48
35
|
}
|
|
@@ -4,8 +4,7 @@ import { AcmeConfigDoc } from '../db/documents/index.js';
|
|
|
4
4
|
* AcmeConfigManager — owns the singleton ACME configuration in the DB.
|
|
5
5
|
*
|
|
6
6
|
* Lifecycle:
|
|
7
|
-
* - `start()` — loads
|
|
8
|
-
* fields (`tls.contactEmail`, `smartProxyConfig.acme.*`) on first boot.
|
|
7
|
+
* - `start()` — loads the DB-backed singleton configuration.
|
|
9
8
|
* - `getConfig()` — returns the in-memory cached `IAcmeConfig` (or null)
|
|
10
9
|
* - `updateConfig(args, updatedBy)` — upserts and refreshes the cache
|
|
11
10
|
*
|
|
@@ -15,27 +14,12 @@ import { AcmeConfigDoc } from '../db/documents/index.js';
|
|
|
15
14
|
* `ts_web/elements/domains/ops-view-certificates.ts` for the UI warning.
|
|
16
15
|
*/
|
|
17
16
|
export class AcmeConfigManager {
|
|
18
|
-
options;
|
|
19
17
|
cached = null;
|
|
20
|
-
constructor(options) {
|
|
21
|
-
this.options = options;
|
|
22
|
-
}
|
|
23
18
|
async start() {
|
|
24
19
|
logger.log('info', 'AcmeConfigManager: starting');
|
|
25
|
-
|
|
20
|
+
const doc = await AcmeConfigDoc.load();
|
|
26
21
|
if (!doc) {
|
|
27
|
-
|
|
28
|
-
const seed = this.deriveSeedFromOptions();
|
|
29
|
-
if (seed) {
|
|
30
|
-
doc = await this.createSeedDoc(seed);
|
|
31
|
-
logger.log('info', `AcmeConfigManager: seeded from constructor legacy fields (accountEmail=${seed.accountEmail}, useProduction=${seed.useProduction})`);
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
logger.log('info', 'AcmeConfigManager: no AcmeConfig in DB and no legacy constructor fields — ACME disabled until configured via Domains > Certificates > Settings.');
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
else if (this.deriveSeedFromOptions()) {
|
|
38
|
-
logger.log('warn', 'AcmeConfigManager: ignoring constructor tls.contactEmail / smartProxyConfig.acme — DB already has AcmeConfigDoc. Manage via Domains > Certificates > Settings.');
|
|
22
|
+
logger.log('info', 'AcmeConfigManager: no AcmeConfig in DB — ACME disabled until configured via Domains > Certificates > Settings.');
|
|
39
23
|
}
|
|
40
24
|
this.cached = doc ? this.toPlain(doc) : null;
|
|
41
25
|
if (this.cached) {
|
|
@@ -96,51 +80,6 @@ export class AcmeConfigManager {
|
|
|
96
80
|
// ==========================================================================
|
|
97
81
|
// Internal helpers
|
|
98
82
|
// ==========================================================================
|
|
99
|
-
/**
|
|
100
|
-
* Build a seed object from the legacy constructor fields. Returns null
|
|
101
|
-
* if the user has not provided any of them.
|
|
102
|
-
*
|
|
103
|
-
* Supports BOTH `tls.contactEmail` (short form) and `smartProxyConfig.acme`
|
|
104
|
-
* (full form). `smartProxyConfig.acme` wins when both are present.
|
|
105
|
-
*/
|
|
106
|
-
deriveSeedFromOptions() {
|
|
107
|
-
const acme = this.options.smartProxyConfig?.acme;
|
|
108
|
-
const tls = this.options.tls;
|
|
109
|
-
// Prefer the explicit smartProxyConfig.acme block if present.
|
|
110
|
-
if (acme?.accountEmail) {
|
|
111
|
-
return {
|
|
112
|
-
accountEmail: acme.accountEmail,
|
|
113
|
-
enabled: acme.enabled !== false,
|
|
114
|
-
useProduction: acme.useProduction !== false,
|
|
115
|
-
autoRenew: acme.autoRenew !== false,
|
|
116
|
-
renewThresholdDays: acme.renewThresholdDays ?? 30,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
// Fall back to the short tls.contactEmail form.
|
|
120
|
-
if (tls?.contactEmail) {
|
|
121
|
-
return {
|
|
122
|
-
accountEmail: tls.contactEmail,
|
|
123
|
-
enabled: true,
|
|
124
|
-
useProduction: true,
|
|
125
|
-
autoRenew: true,
|
|
126
|
-
renewThresholdDays: 30,
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
return null;
|
|
130
|
-
}
|
|
131
|
-
async createSeedDoc(seed) {
|
|
132
|
-
const doc = new AcmeConfigDoc();
|
|
133
|
-
doc.configId = 'acme-config';
|
|
134
|
-
doc.accountEmail = seed.accountEmail;
|
|
135
|
-
doc.enabled = seed.enabled;
|
|
136
|
-
doc.useProduction = seed.useProduction;
|
|
137
|
-
doc.autoRenew = seed.autoRenew;
|
|
138
|
-
doc.renewThresholdDays = seed.renewThresholdDays;
|
|
139
|
-
doc.updatedAt = Date.now();
|
|
140
|
-
doc.updatedBy = 'seed';
|
|
141
|
-
await doc.save();
|
|
142
|
-
return doc;
|
|
143
|
-
}
|
|
144
83
|
toPlain(doc) {
|
|
145
84
|
return {
|
|
146
85
|
accountEmail: doc.accountEmail,
|
|
@@ -153,4 +92,4 @@ export class AcmeConfigManager {
|
|
|
153
92
|
};
|
|
154
93
|
}
|
|
155
94
|
}
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlci5hY21lLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2FjbWUvbWFuYWdlci5hY21lLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd6RDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBQ3BCLE1BQU0sR0FBdUIsSUFBSSxDQUFDO0lBRW5DLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFDbEQsTUFBTSxHQUFHLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFdkMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsZ0hBQWdILENBQUMsQ0FBQztRQUN2SSxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM3QyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsR0FBRyxDQUNSLE1BQU0sRUFDTix1REFBdUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLGFBQWEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLG1CQUFtQixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxDQUMvSixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSTtRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFT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
|
|
@@ -276,8 +276,8 @@ export declare class DcRouter {
|
|
|
276
276
|
*/
|
|
277
277
|
private registerServices;
|
|
278
278
|
private isRemoteIngressHubEnabled;
|
|
279
|
-
private
|
|
280
|
-
private
|
|
279
|
+
private getRemoteIngressHubSettingsMigrationSeed;
|
|
280
|
+
private getEmailSettingsMigrationSeed;
|
|
281
281
|
private startSmartAcmeInBackground;
|
|
282
282
|
private scheduleSmartAcmeStart;
|
|
283
283
|
private runSmartAcmeStartAttempt;
|
|
@@ -304,6 +304,10 @@ export declare class DcRouter {
|
|
|
304
304
|
private setupSmartProxy;
|
|
305
305
|
applySecurityPolicy(): Promise<void>;
|
|
306
306
|
private mergeSecurityPolicies;
|
|
307
|
+
private applyInboundProxyProtocolPolicies;
|
|
308
|
+
private getDesiredInboundProxyProtocolPolicy;
|
|
309
|
+
private getInboundProxyListenerKeys;
|
|
310
|
+
private mergeInboundProxyProtocolPolicies;
|
|
307
311
|
/**
|
|
308
312
|
* Generate SmartProxy routes for email configuration
|
|
309
313
|
*/
|
|
@@ -316,6 +320,7 @@ export declare class DcRouter {
|
|
|
316
320
|
private getCurrentGeneratedEmailRouteNames;
|
|
317
321
|
private shouldHydrateGeneratedEmailRoute;
|
|
318
322
|
private createServerFirstEmailRuntimeRoute;
|
|
323
|
+
private getRemoteIngressEmailInboundProxyPolicy;
|
|
319
324
|
private createEmailSocketProxyHandler;
|
|
320
325
|
private hydrateStoredRouteForRuntime;
|
|
321
326
|
/**
|