BREAKING CHANGE(certs): accept a second eventComms argument in certProvisionFunction, add cert provisioning event types, and emit certificate lifecycle events
This commit is contained in:
@@ -2,6 +2,6 @@
|
||||
* SmartProxy models
|
||||
*/
|
||||
// Export everything except IAcmeOptions from interfaces
|
||||
export type { ISmartProxyOptions, ISmartProxyCertStore, IConnectionRecord, TSmartProxyCertProvisionObject } from './interfaces.js';
|
||||
export type { ISmartProxyOptions, ISmartProxyCertStore, IConnectionRecord, TSmartProxyCertProvisionObject, ICertProvisionEventComms, ICertificateIssuedEvent, ICertificateFailedEvent } from './interfaces.js';
|
||||
export * from './route-types.js';
|
||||
export * from './metrics-types.js';
|
||||
|
||||
@@ -34,6 +34,38 @@ import type { IRouteConfig } from './route-types.js';
|
||||
*/
|
||||
export type TSmartProxyCertProvisionObject = plugins.tsclass.network.ICert | 'http01';
|
||||
|
||||
/**
|
||||
* Communication channel passed as second argument to certProvisionFunction.
|
||||
* Allows the callback to report metadata back to SmartProxy for event emission.
|
||||
*/
|
||||
export interface ICertProvisionEventComms {
|
||||
/** Informational log */
|
||||
log: (message: string) => void;
|
||||
/** Warning (non-fatal) */
|
||||
warn: (message: string) => void;
|
||||
/** Error */
|
||||
error: (message: string) => void;
|
||||
/** Set the certificate expiry date (for the issued event) */
|
||||
setExpiryDate: (date: Date) => void;
|
||||
/** Set the source/method used for provisioning (e.g. 'smartacme-dns-01') */
|
||||
setSource: (source: string) => void;
|
||||
}
|
||||
|
||||
/** Payload for 'certificate-issued' and 'certificate-renewed' events */
|
||||
export interface ICertificateIssuedEvent {
|
||||
domain: string;
|
||||
expiryDate?: string; // ISO 8601
|
||||
source: string; // e.g. 'certProvisionFunction', 'smartacme-dns-01'
|
||||
isRenewal?: boolean;
|
||||
}
|
||||
|
||||
/** Payload for 'certificate-failed' event */
|
||||
export interface ICertificateFailedEvent {
|
||||
domain: string;
|
||||
error: string;
|
||||
source: string;
|
||||
}
|
||||
|
||||
// Legacy options and type checking functions have been removed
|
||||
|
||||
/**
|
||||
@@ -140,7 +172,7 @@ export interface ISmartProxyOptions {
|
||||
* Optional certificate provider callback. Return 'http01' to use HTTP-01 challenges,
|
||||
* or a static certificate object for immediate provisioning.
|
||||
*/
|
||||
certProvisionFunction?: (domain: string) => Promise<TSmartProxyCertProvisionObject>;
|
||||
certProvisionFunction?: (domain: string, eventComms: ICertProvisionEventComms) => Promise<TSmartProxyCertProvisionObject>;
|
||||
|
||||
/**
|
||||
* Whether to fallback to ACME if custom certificate provision fails.
|
||||
|
||||
Reference in New Issue
Block a user