Add TLS feature with Caddy

This commit is contained in:
2026-10-21 09:13:59 +01:00
parent 1462067e72
commit ed4a6f3ec8
109 changed files with 6374 additions and 156 deletions
@@ -0,0 +1,61 @@
import type { BUN_SQLITE_WGUI_CLIENT_ROUTES } from "@/db/types/db";
import { TlsData } from "@/src/data/tls-data";
import { decrypt } from "@/src/utils/crypt";
import readAcmeEnv from "./read-acme-env";
type Params = {
route?: BUN_SQLITE_WGUI_CLIENT_ROUTES | null;
};
export type RouteAcmeConfig = {
provider: string;
email: string;
staging: boolean;
values: Record<string, string>;
source: "route" | "env";
};
export default async function readRouteAcmeConfig({
route,
}: Params): Promise<
| { success: true; config: RouteAcmeConfig }
| { success: false; msg: string }
> {
const acme_env = readAcmeEnv();
let route_values: Record<string, string> = {};
if (route?.acme_credentials) {
try {
const decrypted = await decrypt(route.acme_credentials);
const parsed = JSON.parse(decrypted) as Record<string, string>;
route_values = parsed || {};
} catch {
return {
success: false,
msg: `Could not decrypt the saved ACME credentials for this route`,
};
}
}
const provider =
route?.acme_dns_provider?.trim() ||
acme_env.values.ACME_DNS_PROVIDER ||
TlsData.DefaultDnsProvider;
const email =
route?.acme_email?.trim() || acme_env.values.ACME_EMAIL || "";
const source = route?.acme_dns_provider ? "route" : "env";
const values =
source == "route" ? route_values : acme_env.values;
return {
success: true,
config: {
provider,
email,
staging: route?.acme_staging == 1 || TlsData.AcmeStaging,
values,
source,
},
};
}