function parsePort({ value, fallback, }: { value?: string; fallback: number; }) { const parsed = Number(value); if (!Number.isInteger(parsed) || parsed < 1 || parsed > 65535) { return fallback; } return parsed; } export const TlsData = { /** Public HTTPS port Caddy listens on. Never 80/443. */ CaddyHttpsPort: parsePort({ value: process.env.CADDY_HTTPS_PORT, fallback: 8443, }), /** Plain HTTP port for Caddy redirects/bootstrap. Never port 80. */ CaddyHttpPort: parsePort({ value: process.env.CADDY_HTTP_PORT, fallback: 8081, }), /** Default acme.sh DNS provider id, e.g. dns_cf. */ DefaultDnsProvider: process.env.ACME_DNS_PROVIDER || "", /** Use the Let's Encrypt staging endpoint. */ AcmeStaging: process.env.ACME_STAGING == "1", /** Keep the ingress port closed unless a route is enabled. */ IngressEnabled: process.env.CADDY_INGRESS_ENABLED != "0", RenewBeforeDays: 30, } as const;