feat(acme): Improve certificate management by adding global ACME configuration support and allowing route-level overrides. Enhanced error messages help identify missing ACME email and misconfigurations (e.g. wildcard domains). Documentation has been updated and new tests added to verify SmartCertManager behavior, ensuring a clearer migration path from legacy implementations.
This commit is contained in:
@ -2,15 +2,16 @@ import * as plugins from '../../../plugins.js';
|
||||
// Certificate types removed - define IAcmeOptions locally
|
||||
export interface IAcmeOptions {
|
||||
enabled?: boolean;
|
||||
email?: string;
|
||||
email?: string; // Required when any route uses certificate: 'auto'
|
||||
environment?: 'production' | 'staging';
|
||||
port?: number;
|
||||
useProduction?: boolean;
|
||||
renewThresholdDays?: number;
|
||||
autoRenew?: boolean;
|
||||
certificateStore?: string;
|
||||
accountEmail?: string; // Alias for email
|
||||
port?: number; // Port for HTTP-01 challenges (default: 80)
|
||||
useProduction?: boolean; // Use Let's Encrypt production (default: false)
|
||||
renewThresholdDays?: number; // Days before expiry to renew (default: 30)
|
||||
autoRenew?: boolean; // Enable automatic renewal (default: true)
|
||||
certificateStore?: string; // Directory to store certificates (default: './certs')
|
||||
skipConfiguredCerts?: boolean;
|
||||
renewCheckIntervalHours?: number;
|
||||
renewCheckIntervalHours?: number; // How often to check for renewals (default: 24)
|
||||
routeForwards?: any[];
|
||||
}
|
||||
import type { IRouteConfig } from './route-types.js';
|
||||
@ -97,7 +98,22 @@ export interface ISmartProxyOptions {
|
||||
useNetworkProxy?: number[]; // Array of ports to forward to NetworkProxy
|
||||
networkProxyPort?: number; // Port where NetworkProxy is listening (default: 8443)
|
||||
|
||||
// ACME configuration options for SmartProxy
|
||||
/**
|
||||
* Global ACME configuration options for SmartProxy
|
||||
*
|
||||
* When set, these options will be used as defaults for all routes
|
||||
* with certificate: 'auto' that don't have their own ACME configuration.
|
||||
* Route-specific ACME settings will override these defaults.
|
||||
*
|
||||
* Example:
|
||||
* ```ts
|
||||
* acme: {
|
||||
* email: 'ssl@example.com',
|
||||
* useProduction: false,
|
||||
* port: 80
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
acme?: IAcmeOptions;
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user