fix dhparam generation

it cannot be created in default config creation time since it is
already run pre-VM snapshot time
This commit is contained in:
Girish Ramakrishnan
2021-11-17 11:48:06 -08:00
parent 515b1db9d0
commit 2ab2255115
3 changed files with 16 additions and 9 deletions
+12 -1
View File
@@ -10,7 +10,6 @@ exports = module.exports = {
const assert = require('assert'),
backups = require('./backups.js'),
backuptask = require('./backuptask.js'),
blobs = require('./blobs.js'),
BoxError = require('./boxerror.js'),
branding = require('./branding.js'),
constants = require('./constants.js'),
@@ -18,6 +17,7 @@ const assert = require('assert'),
debug = require('debug')('box:provision'),
domains = require('./domains.js'),
eventlog = require('./eventlog.js'),
fs = require('fs'),
mail = require('./mail.js'),
mounts = require('./mounts.js'),
reverseProxy = require('./reverseproxy.js'),
@@ -25,6 +25,7 @@ const assert = require('assert'),
semver = require('semver'),
settings = require('./settings.js'),
sysinfo = require('./sysinfo.js'),
paths = require('./paths.js'),
users = require('./users.js'),
tld = require('tldjs'),
tokens = require('./tokens.js'),
@@ -50,6 +51,14 @@ function setProgress(task, message, callback) {
if (callback) callback();
}
async function ensureDhparams() {
if (fs.existsSync(paths.DHPARAMS_FILE)) return;
debug('ensureDhparams: generating dhparams');
const dhparams = safe.child_process.execSync('openssl dhparam -dsaparam 2048');
if (!dhparams) throw new BoxError(BoxError.OPENSSL_ERROR, safe.error);
if (!safe.fs.writeFileSync(paths.DHPARAMS_FILE, dhparams)) throw new BoxError(BoxError.FS_ERROR, `Could not save dhparams.pem: ${safe.error.message}`);
}
async function unprovision() {
// TODO: also cancel any existing configureWebadmin task
await settings.setDashboardLocation('', '');
@@ -63,6 +72,7 @@ async function setupTask(domain, auditSource) {
try {
await cloudron.setupDnsAndCert(constants.DASHBOARD_LOCATION, domain, auditSource, (progress) => setProgress('setup', progress.message));
await ensureDhparams();
await cloudron.setDashboardDomain(domain, auditSource);
setProgress('setup', 'Done'),
await eventlog.add(eventlog.ACTION_PROVISION, auditSource, {});
@@ -160,6 +170,7 @@ async function restoreTask(backupConfig, backupId, sysinfoConfig, options, audit
const mailRestoreConfig = { backupConfig, backupId: mailBackups[0].id, backupFormat: mailBackups[0].format };
await backuptask.downloadMail(mailRestoreConfig, (progress) => setProgress('restore', progress.message));
await ensureDhparams();
await settings.setSysinfoConfig(sysinfoConfig);
await reverseProxy.restoreFallbackCertificates();