locadot
Version:
Secure your local development environment with HTTPS and custom domains like dev.localhost.
44 lines (43 loc) • 1.85 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createSSL = createSSL;
const appdata_path_1 = __importDefault(require("appdata-path"));
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const CERT_PATH = (0, appdata_path_1.default)("locadot");
const mkcert_1 = require("mkcert");
const logger_1 = __importDefault(require("./logger"));
async function createSSL(domain) {
logger_1.default.info(`🔐 Preparing SSL cert for ${domain}`);
const KEY_FILE = path_1.default.join(CERT_PATH, domain + ".key");
const CERT_FILE = path_1.default.join(CERT_PATH, domain + ".pem");
if (fs_1.default.existsSync(KEY_FILE) && fs_1.default.existsSync(CERT_FILE)) {
logger_1.default.info(`🔄 Using existing certificate for ${domain}`);
const key = fs_1.default.readFileSync(KEY_FILE, "utf-8");
const cert = fs_1.default.readFileSync(CERT_FILE, "utf-8");
return { key, cert };
}
// Otherwise, generate a new one
logger_1.default.info(`🔐 Generating SSL cert for ${domain}`);
const ca = await (0, mkcert_1.createCA)({
organization: "Locadot",
countryCode: "IN",
state: "DevState",
locality: "DevTown",
validity: 365,
});
const cert = await (0, mkcert_1.createCert)({
domains: [domain],
ca: ca,
validity: 365,
organization: "Locadot",
});
if (!fs_1.default.existsSync(CERT_PATH))
fs_1.default.mkdirSync(CERT_PATH, { recursive: true });
fs_1.default.writeFileSync(KEY_FILE, cert.key);
fs_1.default.writeFileSync(CERT_FILE, cert.cert);
return { key: cert.key, cert: cert.cert };
}