diff --git a/src/cloudron.js b/src/cloudron.js index 0d3763f21..fa308c804 100644 --- a/src/cloudron.js +++ b/src/cloudron.js @@ -56,12 +56,10 @@ const REBOOT_CMD = path.join(__dirname, 'scripts/reboot.sh'); const NOOP_CALLBACK = function (error) { if (error) debug(error); }; -function initialize(callback) { - assert.strictEqual(typeof callback, 'function'); - +async function initialize() { runStartupTasks(); - notifyUpdate(callback); + await notifyUpdate(); } function uninitialize(callback) { @@ -97,21 +95,19 @@ function onActivated(options, callback) { ], callback); } -function notifyUpdate(callback) { - assert.strictEqual(typeof callback, 'function'); - +async function notifyUpdate() { const version = safe.fs.readFileSync(paths.VERSION_FILE, 'utf8'); - if (version === constants.VERSION) return callback(); + if (version === constants.VERSION) return; - eventlog.add(eventlog.ACTION_UPDATE_FINISH, auditSource.CRON, { errorMessage: '', oldVersion: version || 'dev', newVersion: constants.VERSION }, function (error) { - if (error) return callback(error); + await eventlog.add(eventlog.ACTION_UPDATE_FINISH, auditSource.CRON, { errorMessage: '', oldVersion: version || 'dev', newVersion: constants.VERSION }); + return new Promise((resolve, reject) => { tasks.setCompletedByType(tasks.TASK_UPDATE, { error: null }, function (error) { - if (error && error.reason !== BoxError.NOT_FOUND) return callback(error); // when hotfixing, task may not exist + if (error && error.reason !== BoxError.NOT_FOUND) return reject(error); // when hotfixing, task may not exist safe.fs.writeFileSync(paths.VERSION_FILE, constants.VERSION, 'utf8'); - callback(); + resolve(); }); }); } diff --git a/src/crashnotifier.js b/src/crashnotifier.js index ec19a52ad..19f8876e6 100644 --- a/src/crashnotifier.js +++ b/src/crashnotifier.js @@ -4,7 +4,7 @@ exports = module.exports = { sendFailureLogs }; -var assert = require('assert'), +const assert = require('assert'), auditSource = require('./auditsource.js'), eventlog = require('./eventlog.js'), safe = require('safetydance'), @@ -38,7 +38,7 @@ function sendFailureLogs(unitName, callback) { return callback(); } - collectLogs(unitName, function (error, logs) { + collectLogs(unitName, async function (error, logs) { if (error) { console.error('Failed to collect logs.', error); logs = util.format('Failed to collect logs.', error); @@ -49,12 +49,11 @@ function sendFailureLogs(unitName, callback) { if (!safe.fs.writeFileSync(path.join(paths.CRASH_LOG_DIR, `${crashId}.log`), logs)) console.log(`Failed to stash logs to ${crashId}.log:`, safe.error); - eventlog.add(eventlog.ACTION_PROCESS_CRASH, auditSource.HEALTH_MONITOR, { processName: unitName, crashId: crashId }, function (error) { - if (error) console.log(`Error sending crashlog. Logs stashed at ${crashId}.log`); + [error] = await safe(eventlog.add(eventlog.ACTION_PROCESS_CRASH, auditSource.HEALTH_MONITOR, { processName: unitName, crashId: crashId })); + if (error) console.log(`Error sending crashlog. Logs stashed at ${crashId}.log`); - safe.fs.writeFileSync(CRASH_LOG_TIMESTAMP_FILE, String(Date.now())); + safe.fs.writeFileSync(CRASH_LOG_TIMESTAMP_FILE, String(Date.now())); - callback(); - }); + callback(); }); } diff --git a/src/provision.js b/src/provision.js index a32e629b0..185ca7eaf 100644 --- a/src/provision.js +++ b/src/provision.js @@ -116,7 +116,7 @@ function setup(dnsConfig, sysinfoConfig, auditSource, callback) { cloudron.setupDnsAndCert.bind(null, constants.DASHBOARD_LOCATION, domain, auditSource, (progress) => setProgress('setup', progress.message, NOOP_CALLBACK)), cloudron.setDashboardDomain.bind(null, domain, auditSource), setProgress.bind(null, 'setup', 'Done'), - eventlog.add.bind(null, eventlog.ACTION_PROVISION, auditSource, { }) + async () => eventlog.add(eventlog.ACTION_PROVISION, auditSource, { }) ], function (error) { gProvisionStatus.setup.active = false; gProvisionStatus.setup.errorMessage = error ? error.message : ''; @@ -231,7 +231,7 @@ function restore(backupConfig, backupId, version, sysinfoConfig, options, auditS ], done); }, settings.setBackupCredentials.bind(null, backupConfig), // update just the credentials and not the policy and flags - eventlog.add.bind(null, eventlog.ACTION_RESTORE, auditSource, { backupId }), + async () => eventlog.add(eventlog.ACTION_RESTORE, auditSource, { backupId }), ], function (error) { gProvisionStatus.restore.active = false; gProvisionStatus.restore.errorMessage = error ? error.message : ''; diff --git a/src/server.js b/src/server.js index 5cbafa134..8aa779798 100644 --- a/src/server.js +++ b/src/server.js @@ -373,7 +373,7 @@ function start(callback) { blobs.initSecrets, cloudron.initialize, gHttpServer.listen.bind(gHttpServer, constants.PORT, '127.0.0.1'), - eventlog.add.bind(null, eventlog.ACTION_START, { userId: null, username: 'boot' }, { version: constants.VERSION }) + async () => eventlog.add(eventlog.ACTION_START, { userId: null, username: 'boot' }, { version: constants.VERSION }) ], callback); } diff --git a/src/users.js b/src/users.js index 997cbea55..2d32f2805 100644 --- a/src/users.js +++ b/src/users.js @@ -56,7 +56,7 @@ exports = module.exports = { const ORDERED_ROLES = [ exports.ROLE_USER, exports.ROLE_USER_MANAGER, exports.ROLE_ADMIN, exports.ROLE_OWNER ]; -let assert = require('assert'), +const assert = require('assert'), BoxError = require('./boxerror.js'), crypto = require('crypto'), constants = require('./constants.js'), @@ -328,7 +328,9 @@ function remove(user, auditSource, callback) { userdb.del(user.id, function (error) { if (error) return callback(error); - eventlog.add(eventlog.ACTION_USER_REMOVE, auditSource, { userId: user.id, user: removePrivateFields(user) }, callback); + eventlog.add(eventlog.ACTION_USER_REMOVE, auditSource, { userId: user.id, user: removePrivateFields(user) }); + + callback(); }); }