Add TLS feature with Caddy
This commit is contained in:
@@ -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,
|
||||
},
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user