Sha256: c12e67466ba922dd366a0b87d9e0bce190c449da35c7604fc88074726b061b23

Contents?: true

Size: 1.23 KB

Versions: 26

Compression:

Stored size: 1.23 KB

Contents

'use strict';

const path = require('path');
const fs = require('fs');
const del = require('del');
const createCertificate = require('./createCertificate');

function getCertificate(logger) {
  // Use a self-signed certificate if no certificate was configured.
  // Cycle certs every 24 hours
  const certificatePath = path.join(__dirname, '../../ssl/server.pem');

  let certificateExists = fs.existsSync(certificatePath);

  if (certificateExists) {
    const certificateTtl = 1000 * 60 * 60 * 24;
    const certificateStat = fs.statSync(certificatePath);

    const now = new Date();

    // cert is more than 30 days old, kill it with fire
    if ((now - certificateStat.ctime) / certificateTtl > 30) {
      logger.info('SSL Certificate is more than 30 days old. Removing.');

      del.sync([certificatePath], { force: true });

      certificateExists = false;
    }
  }

  if (!certificateExists) {
    logger.info('Generating SSL Certificate');

    const attributes = [{ name: 'commonName', value: 'localhost' }];
    const pems = createCertificate(attributes);

    fs.writeFileSync(certificatePath, pems.private + pems.cert, {
      encoding: 'utf8',
    });
  }

  return fs.readFileSync(certificatePath);
}

module.exports = getCertificate;

Version data entries

26 entries across 25 versions & 8 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/webpack-dev-server/lib/utils/getCertificate.js
disco_app-0.18.0 test/dummy/node_modules/webpack-dev-server/lib/utils/getCertificate.js
disco_app-0.18.2 test/dummy/node_modules/webpack-dev-server/lib/utils/getCertificate.js
disco_app-0.16.1 test/dummy/node_modules/webpack-dev-server/lib/utils/getCertificate.js
disco_app-0.15.2 test/dummy/node_modules/webpack-dev-server/lib/utils/getCertificate.js
disco_app-0.18.4 test/dummy/node_modules/webpack-dev-server/lib/utils/getCertificate.js
disco_app-0.18.1 test/dummy/node_modules/webpack-dev-server/lib/utils/getCertificate.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/webpack-dev-server/lib/utils/getCertificate.js
disco_app-0.14.0 test/dummy/node_modules/webpack-dev-server/lib/utils/getCertificate.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/webpack-dev-server/lib/utils/getCertificate.js
tang-0.2.1 spec/tang_app/node_modules/webpack-dev-server/lib/utils/getCertificate.js
groonga-client-model-6.0.0 test/apps/rails6.0.3.5/node_modules/webpack-dev-server/lib/utils/getCertificate.js
groonga-client-model-6.0.0 test/apps/rails6.1.3/node_modules/webpack-dev-server/lib/utils/getCertificate.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/webpack-dev-server/lib/utils/getCertificate.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/webpack-dev-server/lib/utils/getCertificate.js
tang-0.2.0 spec/tang_app/node_modules/webpack-dev-server/lib/utils/getCertificate.js
tang-0.1.0 spec/tang_app/node_modules/webpack-dev-server/lib/utils/getCertificate.js
tang-0.0.9 spec/tang_app/node_modules/webpack-dev-server/lib/utils/getCertificate.js
enju_library-0.3.8 spec/dummy/node_modules/webpack-dev-server/lib/utils/getCertificate.js
jester-data-8.0.0 node_modules/webpack-dev-server/lib/utils/getCertificate.js