mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-11-01 08:05:23 +00:00
feat: move acme certificate automation into a plugin (C7)
This commit is contained in:
1 parent
4dbce08379
commit
8c1e02af89
123 files changed
+4808
-1912
No files matched your search
@@ -0,0 +1,28 @@
|
||||
import type { PluginTlsStatus } from "@termix/plugin-sdk/backend";
|
||||
|
||||
export const RENEW_BEFORE_MS = 30 * 86_400_000;
|
||||
|
||||
export type RenewalReason = "missing" | "self-signed" | "domain" | "expiring";
|
||||
|
||||
/**
|
||||
* Whether the served certificate should be replaced for `domain`: there is
|
||||
* none, it is core's self-signed one, it does not cover the domain, or it
|
||||
* expires within 30 days.
|
||||
*/
|
||||
export function renewalReason(
|
||||
status: PluginTlsStatus,
|
||||
domain: string,
|
||||
now: Date = new Date(),
|
||||
): RenewalReason | null {
|
||||
const cert = status.certificate;
|
||||
if (!cert) return "missing";
|
||||
if (cert.selfSigned) return "self-signed";
|
||||
const wanted = domain.toLowerCase();
|
||||
if (!cert.names.some((name) => name.toLowerCase() === wanted)) {
|
||||
return "domain";
|
||||
}
|
||||
if (new Date(cert.notAfter).getTime() - now.getTime() < RENEW_BEFORE_MS) {
|
||||
return "expiring";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
Reference in new issue
Block a user