update
This commit is contained in:
@ -24,23 +24,31 @@ export * from './storage/file-storage.js';
|
||||
|
||||
// Convenience function to create a certificate provisioner with common settings
|
||||
import { CertProvisioner } from './providers/cert-provisioner.js';
|
||||
import type { TCertProvisionObject } from './providers/cert-provisioner.js';
|
||||
import { buildPort80Handler } from './acme/acme-factory.js';
|
||||
import type { IAcmeOptions, IDomainForwardConfig } from './models/certificate-types.js';
|
||||
import type { IDomainConfig } from '../forwarding/config/domain-config.js';
|
||||
import type { IAcmeOptions, IRouteForwardConfig } from './models/certificate-types.js';
|
||||
import type { IRouteConfig } from '../proxies/smart-proxy/models/route-types.js';
|
||||
|
||||
/**
|
||||
* Interface for NetworkProxyBridge used by CertProvisioner
|
||||
*/
|
||||
interface ICertNetworkProxyBridge {
|
||||
applyExternalCertificate(certData: any): void;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a complete certificate provisioning system with default settings
|
||||
* @param domainConfigs Domain configurations
|
||||
* @param routeConfigs Route configurations that may need certificates
|
||||
* @param acmeOptions ACME options for certificate provisioning
|
||||
* @param networkProxyBridge Bridge to apply certificates to network proxy
|
||||
* @param certProvider Optional custom certificate provider
|
||||
* @returns Configured CertProvisioner
|
||||
*/
|
||||
export function createCertificateProvisioner(
|
||||
domainConfigs: IDomainConfig[],
|
||||
routeConfigs: IRouteConfig[],
|
||||
acmeOptions: IAcmeOptions,
|
||||
networkProxyBridge: any, // Placeholder until NetworkProxyBridge is migrated
|
||||
certProvider?: any // Placeholder until cert provider type is properly defined
|
||||
networkProxyBridge: ICertNetworkProxyBridge,
|
||||
certProvider?: (domain: string) => Promise<TCertProvisionObject>
|
||||
): CertProvisioner {
|
||||
// Build the Port80Handler for ACME challenges
|
||||
const port80Handler = buildPort80Handler(acmeOptions);
|
||||
@ -50,32 +58,10 @@ export function createCertificateProvisioner(
|
||||
renewThresholdDays = 30,
|
||||
renewCheckIntervalHours = 24,
|
||||
autoRenew = true,
|
||||
domainForwards = []
|
||||
routeForwards = []
|
||||
} = acmeOptions;
|
||||
|
||||
// Create and return the certificate provisioner
|
||||
// Convert domain configs to route configs for the new CertProvisioner
|
||||
const routeConfigs = domainConfigs.map(config => {
|
||||
// Create a basic route config with the minimum required properties
|
||||
return {
|
||||
match: {
|
||||
ports: 443,
|
||||
domains: config.domains
|
||||
},
|
||||
action: {
|
||||
type: 'forward' as const,
|
||||
target: config.forwarding.target,
|
||||
tls: {
|
||||
mode: config.forwarding.type === 'https-terminate-to-https' ?
|
||||
'terminate-and-reencrypt' as const :
|
||||
'terminate' as const,
|
||||
certificate: 'auto' as 'auto'
|
||||
},
|
||||
security: config.forwarding.security
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
return new CertProvisioner(
|
||||
routeConfigs,
|
||||
port80Handler,
|
||||
@ -84,6 +70,6 @@ export function createCertificateProvisioner(
|
||||
renewThresholdDays,
|
||||
renewCheckIntervalHours,
|
||||
autoRenew,
|
||||
domainForwards
|
||||
routeForwards
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user