@serve.zone/dcrouter 13.44.1 → 14.0.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.
Files changed (33) hide show
  1. package/deno.json +1 -1
  2. package/dist_serve/bundle.js +1882 -1453
  3. package/dist_ts/00_commitinfo_data.js +2 -2
  4. package/dist_ts/acme/manager.acme-config.d.ts +1 -14
  5. package/dist_ts/acme/manager.acme-config.js +4 -65
  6. package/dist_ts/classes.dcrouter.d.ts +7 -2
  7. package/dist_ts/classes.dcrouter.js +105 -27
  8. package/dist_ts/config/classes.api-token-manager.js +3 -3
  9. package/dist_ts/db/documents/classes.acme-config.doc.d.ts +1 -3
  10. package/dist_ts/db/documents/classes.acme-config.doc.js +2 -4
  11. package/dist_ts/dns/manager.dns.d.ts +0 -13
  12. package/dist_ts/dns/manager.dns.js +1 -81
  13. package/dist_ts/opsserver/handlers/certificate.handler.d.ts +0 -9
  14. package/dist_ts/opsserver/handlers/certificate.handler.js +1 -40
  15. package/dist_ts/opsserver/handlers/config.handler.js +11 -12
  16. package/dist_ts/opsserver/handlers/email-settings.handler.js +2 -2
  17. package/dist_ts_interfaces/data/acme-config.d.ts +1 -3
  18. package/dist_ts_interfaces/requests/certificate.d.ts +0 -12
  19. package/dist_ts_migrations/index.js +2 -2
  20. package/dist_ts_web/00_commitinfo_data.js +2 -2
  21. package/dist_ts_web/elements/network/ops-view-routes.js +118 -142
  22. package/package.json +4 -4
  23. package/ts/00_commitinfo_data.ts +1 -1
  24. package/ts/acme/manager.acme-config.ts +3 -77
  25. package/ts/classes.dcrouter.ts +120 -28
  26. package/ts/config/classes.api-token-manager.ts +2 -2
  27. package/ts/db/documents/classes.acme-config.doc.ts +1 -3
  28. package/ts/dns/manager.dns.ts +0 -103
  29. package/ts/opsserver/handlers/certificate.handler.ts +0 -47
  30. package/ts/opsserver/handlers/config.handler.ts +10 -11
  31. package/ts/opsserver/handlers/email-settings.handler.ts +1 -1
  32. package/ts_web/00_commitinfo_data.ts +1 -1
  33. package/ts_web/elements/network/ops-view-routes.ts +124 -146
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '13.44.1',
6
+ version: '14.0.0',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsV0FBVyxFQUFFLDBFQUEwRTtDQUN4RixDQUFBIn0=
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 from the DB; if empty, seeds from legacy constructor
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 from the DB; if empty, seeds from legacy constructor
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
- let doc = await AcmeConfigDoc.load();
20
+ const doc = await AcmeConfigDoc.load();
26
21
  if (!doc) {
27
- // First-boot path: seed from legacy constructor fields if present.
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlci5hY21lLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2FjbWUvbWFuYWdlci5hY21lLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUl6RDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUdSO0lBRlosTUFBTSxHQUF1QixJQUFJLENBQUM7SUFFMUMsWUFBb0IsT0FBeUI7UUFBekIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7SUFBRyxDQUFDO0lBRTFDLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFDbEQsSUFBSSxHQUFHLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFckMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsbUVBQW1FO1lBQ25FLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckMsTUFBTSxDQUFDLEdBQUcsQ0FDUixNQUFNLEVBQ04sMEVBQTBFLElBQUksQ0FBQyxZQUFZLG1CQUFtQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQ3BJLENBQUM7WUFDSixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxDQUFDLEdBQUcsQ0FDUixNQUFNLEVBQ04saUpBQWlKLENBQ2xKLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQztZQUN4QyxNQUFNLENBQUMs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
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 getRemoteIngressHubSettingsLegacySeed;
280
- private getEmailSettingsLegacySeed;
279
+ private getRemoteIngressHubSettingsMigrationSeed;
280
+ private getEmailSettingsMigrationSeed;
281
281
  private startSmartAcmeInBackground;
282
282
  private scheduleSmartAcmeStart;
283
283
  private runSmartAcmeStartAttempt;
@@ -312,6 +312,11 @@ export declare class DcRouter {
312
312
  * Generate SmartProxy routes for DNS configuration
313
313
  */
314
314
  private generateDnsRoutes;
315
+ private getRuntimeEmailRoutes;
316
+ private getCurrentGeneratedEmailRouteNames;
317
+ private shouldHydrateGeneratedEmailRoute;
318
+ private createServerFirstEmailRuntimeRoute;
319
+ private createEmailSocketProxyHandler;
315
320
  private hydrateStoredRouteForRuntime;
316
321
  /**
317
322
  * Check if a domain matches a pattern (including wildcard support)