diff --git a/src/cloudron.js b/src/cloudron.js index ba7f06557..57a12b25d 100644 --- a/src/cloudron.js +++ b/src/cloudron.js @@ -19,6 +19,8 @@ exports = module.exports = { backup: backup, ensureBackup: ensureBackup, + isActivatedSync: isActivatedSync, + events: new (require('events').EventEmitter)(), EVENT_ACTIVATED: 'activated' @@ -59,7 +61,8 @@ var REBOOT_CMD = path.join(__dirname, 'scripts/reboot.sh'), INSTALLER_UPDATE_URL = 'http://127.0.0.1:2020/api/v1/installer/update'; var gAddDnsRecordsTimerId = null, - gCloudronDetails = null; // cached cloudron details like region,size... + gCloudronDetails = null, // cached cloudron details like region,size... + gIsActivated = false; // cached activation state so that return value is synchronous function debugApp(app, args) { assert(!app || typeof app === 'object'); @@ -114,7 +117,15 @@ function initialize(callback) { exports.events.on(exports.EVENT_ACTIVATED, addDnsRecords); } - callback(null); + userdb.count(function (error, count) { + if (error) return callback(new CloudronError(CloudronError.INTERNAL_ERROR, error)); + + gIsActivated = count !== 0; + + if (gIsActivated && process.env.BOX_ENV !== 'test') addDnsRecords(); + + callback(null); + }); } function uninitialize(callback) { @@ -126,6 +137,10 @@ function uninitialize(callback) { callback(null); } +function isActivatedSync() { + return gIsActivated; +} + function setTimeZone(ip, callback) { assert.strictEqual(typeof ip, 'string'); assert.strictEqual(typeof callback, 'function'); @@ -177,6 +192,7 @@ function activate(username, password, email, ip, callback) { tokendb.add(token, tokendb.PREFIX_USER + userObject.id, result.id, expires, '*', function (error) { if (error) return callback(new CloudronError(CloudronError.INTERNAL_ERROR, error)); + gIsActivated = true; exports.events.emit(exports.EVENT_ACTIVATED); callback(null, { token: token, expires: expires }); diff --git a/src/cron.js b/src/cron.js index 5dd4a72c4..29e945591 100644 --- a/src/cron.js +++ b/src/cron.js @@ -56,7 +56,7 @@ function initialize(callback) { gInitialized = true; - callback(); + if (cloudron.isActivatedSync()) recreateJobs(callback); else callback(); } function recreateJobs(unusedTimeZone, callback) {