add certificate manager stub

This commit is contained in:
Girish Ramakrishnan
2015-12-10 13:31:47 -08:00
parent 69845d5ddd
commit 66db918273
3 changed files with 54 additions and 1 deletions

37
src/certificatemanager.js Normal file
View File

@@ -0,0 +1,37 @@
/* jslint node:true */
'use strict';
var acme = require('./cert/acme.js'),
assert = require('assert'),
async = require('async'),
config = require('./config.js'),
debug = require('debug')('src/certificatemanager'),
paths = require('./paths.js'),
sysinfo = require('./sysinfo.js');
exports = module.exports = {
initialize: initialize,
uninitialize: uninitialize,
autoRenew: autoRenew
};
function initialize(callback) {
if (!config.isCustomDomain()) return callback();
callback();
// TODO: check if dns is in sync first!
// acme.getCertificate(config.adminFqdn(), paths.APP_CERTS_DIR, function (error) {
// copy to nginx cert dir
// reload nginx
// });
}
function uninitialize(callback) {
callback();
}
function autoRenew() {
debug('will automatically renew certs');
}

View File

@@ -7,6 +7,7 @@ exports = module.exports = {
var apps = require('./apps.js'),
assert = require('assert'),
certificateManager = require('./certificatemanager.js'),
cloudron = require('./cloudron.js'),
config = require('./config.js'),
CronJob = require('cron').CronJob,
@@ -23,7 +24,8 @@ var gAutoupdaterJob = null,
gBackupJob = null,
gCleanupTokensJob = null,
gDockerVolumeCleanerJob = null,
gSchedulerSyncJob = null;
gSchedulerSyncJob = null,
gCertificateRenewJob = null;
var NOOP_CALLBACK = function (error) { if (error) console.error(error); };
@@ -107,6 +109,14 @@ function recreateJobs(unusedTimeZone, callback) {
timeZone: allSettings[settings.TIME_ZONE_KEY]
});
if (gCertificateRenewJob) gCertificateRenewJob.stop();
gCertificateRenewJob = new CronJob({
cronTime: '00 00 */12 * * *', // every 12 hours
onTick: certificateManager.autoRenew,
start: true,
timeZone: allSettings[settings.TIME_ZONE_KEY]
});
settings.events.removeListener(settings.AUTOUPDATE_PATTERN_KEY, autoupdatePatternChanged);
settings.events.on(settings.AUTOUPDATE_PATTERN_KEY, autoupdatePatternChanged);
autoupdatePatternChanged(allSettings[settings.AUTOUPDATE_PATTERN_KEY]);
@@ -179,5 +189,8 @@ function uninitialize(callback) {
if (gSchedulerSyncJob) gSchedulerSyncJob.stop();
gSchedulerSyncJob = null;
if (gCertificateRenewJob) gCertificateRenewJob.stop();
gCertificateRenewJob = null;
callback();
}

View File

@@ -10,6 +10,7 @@ exports = module.exports = {
var assert = require('assert'),
async = require('async'),
auth = require('./auth.js'),
certificateManager = require('./certificatemanager.js'),
cloudron = require('./cloudron.js'),
cron = require('./cron.js'),
config = require('./config.js'),
@@ -234,6 +235,7 @@ function start(callback) {
async.series([
auth.initialize,
database.initialize,
certificateManager.initialize,
cloudron.initialize, // keep this here because it reads activation state that others depend on
taskmanager.initialize,
mailer.initialize,
@@ -254,6 +256,7 @@ function stop(callback) {
taskmanager.uninitialize,
cron.uninitialize,
mailer.uninitialize,
certificateManager.initialize,
database.uninitialize,
gHttpServer.close.bind(gHttpServer),
gInternalHttpServer.close.bind(gInternalHttpServer)