jeansaad/hotel

View on GitHub
src/daemon/pem.js

Summary

Maintainability
A
0 mins
Test Coverage
const fs = require("fs");
const path = require("path");
const tildify = require("tildify");
const selfsigned = require("selfsigned");
const log = require("./log");
const { chaletDir } = require("../common");

const KEY_FILE = path.join(chaletDir, "key.pem");
const CERT_FILE = path.join(chaletDir, "cert.pem");

function generate() {
  if (fs.existsSync(KEY_FILE) && fs.existsSync(CERT_FILE)) {
    log(`Reading self-signed certificate in ${tildify(chaletDir)}`);
    return {
      key: fs.readFileSync(KEY_FILE, "utf-8"),
      cert: fs.readFileSync(CERT_FILE, "utf-8")
    };
  } else {
    log(`Generating self-signed certificate in ${tildify(chaletDir)}`);
    const pems = selfsigned.generate(
      [{ name: "commonName", value: "chalet" }],
      {
        keySize: 2048,
        days: 365,
        algorithm: "sha256"
      }
    );
    fs.writeFileSync(KEY_FILE, pems.private, "utf-8");
    fs.writeFileSync(CERT_FILE, pems.cert, "utf-8");

    return { key: pems.private, cert: pems.cert };
  }
}

module.exports = {
  KEY_FILE,
  CERT_FILE,
  generate
};