admin -> dashboard
This commit is contained in:
@@ -385,7 +385,7 @@ function registerWithLoginCredentials(options, callback) {
|
||||
login(options.email, options.password, options.totpToken || '', function (error, result) {
|
||||
if (error) return callback(error);
|
||||
|
||||
registerCloudron({ domain: settings.adminDomain(), accessToken: result.accessToken, version: constants.VERSION, purpose: options.purpose || '' }, callback);
|
||||
registerCloudron({ domain: settings.dashboardDomain(), accessToken: result.accessToken, version: constants.VERSION, purpose: options.purpose || '' }, callback);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -133,9 +133,9 @@ function runStartupTasks() {
|
||||
|
||||
// always generate webadmin config since we have no versioning mechanism for the ejs
|
||||
function (callback) {
|
||||
if (!settings.adminDomain()) return callback();
|
||||
if (!settings.dashboardDomain()) return callback();
|
||||
|
||||
reverseProxy.writeDashboardConfig(settings.adminDomain(), callback);
|
||||
reverseProxy.writeDashboardConfig(settings.dashboardDomain(), callback);
|
||||
},
|
||||
|
||||
// check activation state and start the platform
|
||||
@@ -174,8 +174,8 @@ function getConfig(callback) {
|
||||
callback(null, {
|
||||
apiServerOrigin: settings.apiServerOrigin(),
|
||||
webServerOrigin: settings.webServerOrigin(),
|
||||
adminDomain: settings.adminDomain(),
|
||||
adminFqdn: settings.adminFqdn(),
|
||||
adminDomain: settings.dashboardDomain(),
|
||||
adminFqdn: settings.dashboardFqdn(),
|
||||
mailFqdn: settings.mailFqdn(),
|
||||
version: constants.VERSION,
|
||||
isDemo: settings.isDemo(),
|
||||
@@ -295,7 +295,7 @@ function prepareDashboardDomain(domain, auditSource, callback) {
|
||||
domains.get(domain, function (error, domainObject) {
|
||||
if (error) return callback(error);
|
||||
|
||||
const fqdn = domains.fqdn(constants.ADMIN_LOCATION, domainObject);
|
||||
const fqdn = domains.fqdn(constants.DASHBOARD_LOCATION, domainObject);
|
||||
|
||||
apps.getAll(function (error, result) {
|
||||
if (error) return callback(error);
|
||||
@@ -303,7 +303,7 @@ function prepareDashboardDomain(domain, auditSource, callback) {
|
||||
const conflict = result.filter(app => app.fqdn === fqdn);
|
||||
if (conflict.length) return callback(new BoxError(BoxError.BAD_STATE, 'Dashboard location conflicts with an existing app'));
|
||||
|
||||
tasks.add(tasks.TASK_SETUP_DNS_AND_CERT, [ constants.ADMIN_LOCATION, domain, auditSource ], function (error, taskId) {
|
||||
tasks.add(tasks.TASK_SETUP_DNS_AND_CERT, [ constants.DASHBOARD_LOCATION, domain, auditSource ], function (error, taskId) {
|
||||
if (error) return callback(error);
|
||||
|
||||
tasks.startTask(taskId, {}, NOOP_CALLBACK);
|
||||
@@ -328,9 +328,9 @@ function setDashboardDomain(domain, auditSource, callback) {
|
||||
reverseProxy.writeDashboardConfig(domain, function (error) {
|
||||
if (error) return callback(error);
|
||||
|
||||
const fqdn = domains.fqdn(constants.ADMIN_LOCATION, domainObject);
|
||||
const fqdn = domains.fqdn(constants.DASHBOARD_LOCATION, domainObject);
|
||||
|
||||
settings.setAdminLocation(domain, fqdn, function (error) {
|
||||
settings.setDashboardLocation(domain, fqdn, function (error) {
|
||||
if (error) return callback(error);
|
||||
|
||||
appstore.updateCloudron({ domain }, NOOP_CALLBACK);
|
||||
|
||||
@@ -22,7 +22,7 @@ exports = module.exports = {
|
||||
'admins', 'users' // ldap code uses 'users' pseudo group
|
||||
],
|
||||
|
||||
ADMIN_LOCATION: 'my',
|
||||
DASHBOARD_LOCATION: 'my',
|
||||
|
||||
PORT: CLOUDRON ? 3000 : 5454,
|
||||
INTERNAL_SMTP_PORT: 2525, // this value comes from the mail container
|
||||
|
||||
@@ -319,8 +319,8 @@ function createSubcontainer(app, name, cmd, options, callback) {
|
||||
'CLOUDRON=1',
|
||||
'CLOUDRON_PROXY_IP=172.18.0.1',
|
||||
`CLOUDRON_APP_HOSTNAME=${app.id}`,
|
||||
`${envPrefix}WEBADMIN_ORIGIN=${settings.adminOrigin()}`,
|
||||
`${envPrefix}API_ORIGIN=${settings.adminOrigin()}`,
|
||||
`${envPrefix}WEBADMIN_ORIGIN=${settings.dashboardOrigin()}`,
|
||||
`${envPrefix}API_ORIGIN=${settings.dashboardOrigin()}`,
|
||||
`${envPrefix}APP_ORIGIN=https://${domain}`,
|
||||
`${envPrefix}APP_DOMAIN=${domain}`
|
||||
];
|
||||
|
||||
@@ -119,7 +119,7 @@ function validateHostname(location, domainObject) {
|
||||
];
|
||||
if (RESERVED_LOCATIONS.indexOf(location) !== -1) return new BoxError(BoxError.BAD_FIELD, location + ' is reserved', { field: 'location' });
|
||||
|
||||
if (hostname === settings.adminFqdn()) return new BoxError(BoxError.BAD_FIELD, location + ' is reserved', { field: 'location' });
|
||||
if (hostname === settings.dashboardFqdn()) return new BoxError(BoxError.BAD_FIELD, location + ' is reserved', { field: 'location' });
|
||||
|
||||
// workaround https://github.com/oncletom/tld.js/issues/73
|
||||
var tmp = hostname.replace('_', '-');
|
||||
@@ -198,7 +198,7 @@ function add(domain, data, auditSource, callback) {
|
||||
|
||||
if (!dkimSelector) {
|
||||
// create a unique suffix. this lets one add this domain can be added in another cloudron instance and not have their dkim selector conflict
|
||||
const suffix = crypto.createHash('sha256').update(settings.adminDomain()).digest('hex').substr(0, 6);
|
||||
const suffix = crypto.createHash('sha256').update(settings.dashboardDomain()).digest('hex').substr(0, 6);
|
||||
dkimSelector = `cloudron-${suffix}`;
|
||||
}
|
||||
|
||||
@@ -254,7 +254,7 @@ function update(domain, data, auditSource, callback) {
|
||||
|
||||
let { zoneName, provider, config, fallbackCertificate, tlsConfig, wellKnown } = data;
|
||||
|
||||
if (settings.isDemo() && (domain === settings.adminDomain())) return callback(new BoxError(BoxError.CONFLICT, 'Not allowed in demo mode'));
|
||||
if (settings.isDemo() && (domain === settings.dashboardDomain())) return callback(new BoxError(BoxError.CONFLICT, 'Not allowed in demo mode'));
|
||||
|
||||
domaindb.get(domain, function (error, domainObject) {
|
||||
if (error) return callback(error);
|
||||
@@ -313,7 +313,7 @@ function del(domain, auditSource, callback) {
|
||||
assert.strictEqual(typeof auditSource, 'object');
|
||||
assert.strictEqual(typeof callback, 'function');
|
||||
|
||||
if (domain === settings.adminDomain()) return callback(new BoxError(BoxError.CONFLICT, 'Cannot remove admin domain'));
|
||||
if (domain === settings.dashboardDomain()) return callback(new BoxError(BoxError.CONFLICT, 'Cannot remove admin domain'));
|
||||
if (domain === settings.mailDomain()) return callback(new BoxError(BoxError.CONFLICT, 'Cannot remove mail domain. Change the mail server location first'));
|
||||
|
||||
domaindb.del(domain, function (error) {
|
||||
@@ -568,8 +568,8 @@ function syncDnsRecords(options, progressCallback, callback) {
|
||||
progress += Math.round(100/(1+domains.length));
|
||||
|
||||
let locations = [];
|
||||
if (domain.domain === settings.adminDomain()) locations.push({ subdomain: constants.ADMIN_LOCATION, domain: settings.adminDomain() });
|
||||
if (domain.domain === settings.mailDomain() && settings.mailFqdn() !== settings.adminFqdn()) locations.push({ subdomain: mailSubdomain, domain: settings.mailDomain() });
|
||||
if (domain.domain === settings.dashboardDomain()) locations.push({ subdomain: constants.DASHBOARD_LOCATION, domain: settings.dashboardDomain() });
|
||||
if (domain.domain === settings.mailDomain() && settings.mailFqdn() !== settings.dashboardFqdn()) locations.push({ subdomain: mailSubdomain, domain: settings.mailDomain() });
|
||||
|
||||
allApps.forEach(function (app) {
|
||||
const appLocations = [{ subdomain: app.location, domain: app.domain }].concat(app.alternateDomains).concat(app.aliasDomains);
|
||||
|
||||
@@ -32,7 +32,7 @@ function sync(auditSource, callback) {
|
||||
|
||||
debug(`refreshDNS: updating ip from ${info.ip} to ${ip}`);
|
||||
|
||||
domains.upsertDnsRecords(constants.ADMIN_LOCATION, settings.adminDomain(), 'A', [ ip ], function (error) {
|
||||
domains.upsertDnsRecords(constants.DASHBOARD_LOCATION, settings.dashboardDomain(), 'A', [ ip ], function (error) {
|
||||
if (error) return callback(error);
|
||||
|
||||
debug('refreshDNS: updated admin location');
|
||||
|
||||
@@ -723,8 +723,8 @@ function restartMail(callback) {
|
||||
services.getServiceConfig('mail', function (error, serviceConfig) {
|
||||
if (error) return callback(error);
|
||||
|
||||
debug(`restartMail: restarting mail container with mailFqdn:${settings.mailFqdn()} adminDomain:${settings.adminDomain()}`);
|
||||
configureMail(settings.mailFqdn(), settings.adminDomain(), serviceConfig, callback);
|
||||
debug(`restartMail: restarting mail container with mailFqdn:${settings.mailFqdn()} adminDomain:${settings.dashboardDomain()}`);
|
||||
configureMail(settings.mailFqdn(), settings.dashboardDomain(), serviceConfig, callback);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ function getMailConfig(callback) {
|
||||
|
||||
callback(null, {
|
||||
cloudronName: cloudronName || '',
|
||||
notificationFrom: `"${cloudronName}" <no-reply@${settings.adminDomain()}>`,
|
||||
notificationFrom: `"${cloudronName}" <no-reply@${settings.dashboardDomain()}>`,
|
||||
supportEmail: supportConfig.email
|
||||
});
|
||||
});
|
||||
@@ -70,7 +70,7 @@ function sendMail(mailOptions, callback) {
|
||||
host: data.ip,
|
||||
port: data.port,
|
||||
auth: {
|
||||
user: mailOptions.authUser || `no-reply@${settings.adminDomain()}`,
|
||||
user: mailOptions.authUser || `no-reply@${settings.dashboardDomain()}`,
|
||||
pass: data.relayToken
|
||||
}
|
||||
}));
|
||||
@@ -122,11 +122,11 @@ function sendInvite(user, invitor, inviteLink) {
|
||||
|
||||
var templateData = {
|
||||
user: user.displayName || user.username || user.email,
|
||||
webadminUrl: settings.adminOrigin(),
|
||||
webadminUrl: settings.dashboardOrigin(),
|
||||
inviteLink: inviteLink,
|
||||
invitor: invitor ? invitor.email : null,
|
||||
cloudronName: mailConfig.cloudronName,
|
||||
cloudronAvatarUrl: settings.adminOrigin() + '/api/v1/cloudron/avatar'
|
||||
cloudronAvatarUrl: settings.dashboardOrigin() + '/api/v1/cloudron/avatar'
|
||||
};
|
||||
|
||||
var mailOptions = {
|
||||
@@ -168,7 +168,7 @@ function sendNewLoginLocation(user, loginLocation) {
|
||||
country,
|
||||
city,
|
||||
cloudronName: mailConfig.cloudronName,
|
||||
cloudronAvatarUrl: settings.adminOrigin() + '/api/v1/cloudron/avatar'
|
||||
cloudronAvatarUrl: settings.dashboardOrigin() + '/api/v1/cloudron/avatar'
|
||||
};
|
||||
|
||||
const mailOptions = {
|
||||
@@ -197,9 +197,9 @@ function passwordReset(user) {
|
||||
|
||||
var templateData = {
|
||||
user: user.displayName || user.username || user.email,
|
||||
resetLink: `${settings.adminOrigin()}/login.html?resetToken=${user.resetToken}`,
|
||||
resetLink: `${settings.dashboardOrigin()}/login.html?resetToken=${user.resetToken}`,
|
||||
cloudronName: mailConfig.cloudronName,
|
||||
cloudronAvatarUrl: settings.adminOrigin() + '/api/v1/cloudron/avatar'
|
||||
cloudronAvatarUrl: settings.dashboardOrigin() + '/api/v1/cloudron/avatar'
|
||||
};
|
||||
|
||||
var mailOptions = {
|
||||
@@ -226,12 +226,12 @@ function boxUpdateAvailable(mailTo, updateInfo, callback) {
|
||||
var converter = new showdown.Converter();
|
||||
|
||||
var templateData = {
|
||||
webadminUrl: settings.adminOrigin(),
|
||||
webadminUrl: settings.dashboardOrigin(),
|
||||
newBoxVersion: updateInfo.version,
|
||||
changelog: updateInfo.changelog,
|
||||
changelogHTML: updateInfo.changelog.map(function (e) { return converter.makeHtml(e); }),
|
||||
cloudronName: mailConfig.cloudronName,
|
||||
cloudronAvatarUrl: settings.adminOrigin() + '/api/v1/cloudron/avatar'
|
||||
cloudronAvatarUrl: settings.dashboardOrigin() + '/api/v1/cloudron/avatar'
|
||||
};
|
||||
|
||||
var templateDataText = JSON.parse(JSON.stringify(templateData));
|
||||
@@ -266,10 +266,10 @@ function appUpdatesAvailable(mailTo, apps, callback) {
|
||||
});
|
||||
|
||||
var templateData = {
|
||||
webadminUrl: settings.adminOrigin(),
|
||||
webadminUrl: settings.dashboardOrigin(),
|
||||
apps: apps,
|
||||
cloudronName: mailConfig.cloudronName,
|
||||
cloudronAvatarUrl: settings.adminOrigin() + '/api/v1/cloudron/avatar'
|
||||
cloudronAvatarUrl: settings.dashboardOrigin() + '/api/v1/cloudron/avatar'
|
||||
};
|
||||
|
||||
var templateDataText = JSON.parse(JSON.stringify(templateData));
|
||||
|
||||
@@ -138,10 +138,10 @@ function oomEvent(eventId, app, addon, containerId, event, callback) {
|
||||
let title, message;
|
||||
if (app) {
|
||||
title = `The application at ${app.fqdn} ran out of memory.`;
|
||||
message = `The application has been restarted automatically. If you see this notification often, consider increasing the [memory limit](${settings.adminOrigin()}/#/app/${app.id}/resources)`;
|
||||
message = `The application has been restarted automatically. If you see this notification often, consider increasing the [memory limit](${settings.dashboardOrigin()}/#/app/${app.id}/resources)`;
|
||||
} else if (addon) {
|
||||
title = `The ${addon.name} service ran out of memory`;
|
||||
message = `The service has been restarted automatically. If you see this notification often, consider increasing the [memory limit](${settings.adminOrigin()}/#/services)`;
|
||||
message = `The service has been restarted automatically. If you see this notification often, consider increasing the [memory limit](${settings.dashboardOrigin()}/#/services)`;
|
||||
}
|
||||
|
||||
forEachAdmin({ skip: [] }, function (admin, done) {
|
||||
@@ -243,7 +243,7 @@ function backupFailed(eventId, taskId, errorMessage, callback) {
|
||||
assert.strictEqual(typeof callback, 'function');
|
||||
|
||||
forEachSuperadmin({ skip: [] }, function (admin, callback) {
|
||||
mailer.backupFailed(admin.email, errorMessage, `${settings.adminOrigin()}/logs.html?taskId=${taskId}`);
|
||||
mailer.backupFailed(admin.email, errorMessage, `${settings.dashboardOrigin()}/logs.html?taskId=${taskId}`);
|
||||
add(admin.id, eventId, 'Backup failed', `Backup failed: ${errorMessage}. Logs are available [here](/logs.html?taskId=${taskId}).`, callback);
|
||||
}, callback);
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ function unprovision(callback) {
|
||||
|
||||
// TODO: also cancel any existing configureWebadmin task
|
||||
async.series([
|
||||
settings.setAdminLocation.bind(null, '', ''),
|
||||
settings.setDashboardLocation.bind(null, '', ''),
|
||||
mail.clearDomains,
|
||||
domains.clear
|
||||
], callback);
|
||||
@@ -101,7 +101,7 @@ function setup(dnsConfig, sysinfoConfig, auditSource, callback) {
|
||||
};
|
||||
|
||||
async.series([
|
||||
settings.setMailLocation.bind(null, domain, `${constants.ADMIN_LOCATION}.${domain}`), // default mail location. do this before we add the domain for upserting mail DNS
|
||||
settings.setMailLocation.bind(null, domain, `${constants.DASHBOARD_LOCATION}.${domain}`), // default mail location. do this before we add the domain for upserting mail DNS
|
||||
domains.add.bind(null, domain, data, auditSource),
|
||||
sysinfo.testConfig.bind(null, sysinfoConfig)
|
||||
], function (error) {
|
||||
@@ -111,7 +111,7 @@ function setup(dnsConfig, sysinfoConfig, auditSource, callback) {
|
||||
|
||||
async.series([
|
||||
settings.setSysinfoConfig.bind(null, sysinfoConfig),
|
||||
cloudron.setupDnsAndCert.bind(null, constants.ADMIN_LOCATION, domain, auditSource, (progress) => setProgress('setup', progress.message, NOOP_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, { })
|
||||
@@ -204,11 +204,11 @@ function restore(backupConfig, backupId, version, sysinfoConfig, options, auditS
|
||||
settings.setSysinfoConfig.bind(null, sysinfoConfig),
|
||||
reverseProxy.restoreFallbackCertificates,
|
||||
(done) => {
|
||||
const adminDomain = settings.adminDomain(); // load this fresh from after the backup.restore
|
||||
const adminDomain = settings.dashboardDomain(); // load this fresh from after the backup.restore
|
||||
async.series([
|
||||
(next) => {
|
||||
if (options.skipDnsSetup) return next();
|
||||
cloudron.setupDnsAndCert(constants.ADMIN_LOCATION, adminDomain, auditSource, (progress) => setProgress('restore', progress.message, NOOP_CALLBACK), next);
|
||||
cloudron.setupDnsAndCert(constants.DASHBOARD_LOCATION, adminDomain, auditSource, (progress) => setProgress('restore', progress.message, NOOP_CALLBACK), next);
|
||||
},
|
||||
cloudron.setDashboardDomain.bind(null, adminDomain, auditSource)
|
||||
], done);
|
||||
@@ -241,7 +241,7 @@ function getStatus(callback) {
|
||||
webServerOrigin: settings.webServerOrigin(), // used by CaaS tool
|
||||
cloudronName: allSettings[settings.CLOUDRON_NAME_KEY],
|
||||
footer: branding.renderFooter(allSettings[settings.FOOTER_KEY] || constants.FOOTER),
|
||||
adminFqdn: settings.adminDomain() ? settings.adminFqdn() : null,
|
||||
adminFqdn: settings.dashboardDomain() ? settings.dashboardFqdn() : null,
|
||||
language: allSettings[settings.LANGUAGE_KEY],
|
||||
activated: activated,
|
||||
provider: settings.provider() // used by setup wizard of marketplace images
|
||||
|
||||
@@ -402,7 +402,7 @@ function writeDashboardNginxConfig(bundle, configFileName, vhost, callback) {
|
||||
|
||||
const data = {
|
||||
sourceDir: path.resolve(__dirname, '..'),
|
||||
adminOrigin: settings.adminOrigin(),
|
||||
adminOrigin: settings.dashboardOrigin(),
|
||||
vhost: vhost,
|
||||
hasIPv6: sysinfo.hasIPv6(),
|
||||
endpoint: 'admin',
|
||||
@@ -429,7 +429,7 @@ function writeDashboardConfig(domain, callback) {
|
||||
domains.get(domain, function (error, domainObject) {
|
||||
if (error) return callback(error);
|
||||
|
||||
const adminFqdn = domains.fqdn(constants.ADMIN_LOCATION, domainObject);
|
||||
const adminFqdn = domains.fqdn(constants.DASHBOARD_LOCATION, domainObject);
|
||||
|
||||
getCertificatePath(adminFqdn, domainObject.domain, function (error, bundle) {
|
||||
if (error) return callback(error);
|
||||
@@ -459,7 +459,7 @@ function writeAppNginxConfig(app, fqdn, bundle, callback) {
|
||||
|
||||
const data = {
|
||||
sourceDir: sourceDir,
|
||||
adminOrigin: settings.adminOrigin(),
|
||||
adminOrigin: settings.dashboardOrigin(),
|
||||
vhost: fqdn,
|
||||
hasIPv6: sysinfo.hasIPv6(),
|
||||
ip: app.containerIp,
|
||||
@@ -611,10 +611,10 @@ function renewCerts(options, auditSource, progressCallback, callback) {
|
||||
let appDomains = [];
|
||||
|
||||
// add webadmin and mail domain
|
||||
if (settings.mailFqdn() === settings.adminFqdn()) {
|
||||
appDomains.push({ domain: settings.adminDomain(), fqdn: settings.adminFqdn(), type: 'webadmin+mail', nginxConfigFilename: path.join(paths.NGINX_APPCONFIG_DIR, `${settings.adminFqdn()}.conf`) });
|
||||
if (settings.mailFqdn() === settings.dashboardFqdn()) {
|
||||
appDomains.push({ domain: settings.dashboardDomain(), fqdn: settings.dashboardFqdn(), type: 'webadmin+mail', nginxConfigFilename: path.join(paths.NGINX_APPCONFIG_DIR, `${settings.dashboardFqdn()}.conf`) });
|
||||
} else {
|
||||
appDomains.push({ domain: settings.adminDomain(), fqdn: settings.adminFqdn(), type: 'webadmin', nginxConfigFilename: path.join(paths.NGINX_APPCONFIG_DIR, `${settings.adminFqdn()}.conf`) });
|
||||
appDomains.push({ domain: settings.dashboardDomain(), fqdn: settings.dashboardFqdn(), type: 'webadmin', nginxConfigFilename: path.join(paths.NGINX_APPCONFIG_DIR, `${settings.dashboardFqdn()}.conf`) });
|
||||
appDomains.push({ domain: settings.mailDomain(), fqdn: settings.mailFqdn(), type: 'mail' });
|
||||
}
|
||||
|
||||
@@ -657,7 +657,7 @@ function renewCerts(options, auditSource, progressCallback, callback) {
|
||||
|
||||
// reconfigure since the cert changed
|
||||
if (appDomain.type === 'webadmin' || appDomain.type === 'webadmin+mail') {
|
||||
return writeDashboardNginxConfig(bundle, `${settings.adminFqdn()}.conf`, settings.adminFqdn(), iteratorCallback);
|
||||
return writeDashboardNginxConfig(bundle, `${settings.dashboardFqdn()}.conf`, settings.dashboardFqdn(), iteratorCallback);
|
||||
} else if (appDomain.type === 'primary') {
|
||||
return writeAppNginxConfig(appDomain.app, appDomain.fqdn, bundle, iteratorCallback);
|
||||
} else if (appDomain.type === 'alternate') {
|
||||
@@ -690,7 +690,7 @@ function renewCerts(options, auditSource, progressCallback, callback) {
|
||||
|
||||
function removeAppConfigs() {
|
||||
for (let appConfigFile of fs.readdirSync(paths.NGINX_APPCONFIG_DIR)) {
|
||||
if (appConfigFile !== constants.NGINX_DEFAULT_CONFIG_FILE_NAME && !appConfigFile.startsWith(constants.ADMIN_LOCATION)) {
|
||||
if (appConfigFile !== constants.NGINX_DEFAULT_CONFIG_FILE_NAME && !appConfigFile.startsWith(constants.DASHBOARD_LOCATION)) {
|
||||
fs.unlinkSync(path.join(paths.NGINX_APPCONFIG_DIR, appConfigFile));
|
||||
}
|
||||
}
|
||||
@@ -716,7 +716,7 @@ function writeDefaultConfig(options, callback) {
|
||||
|
||||
const data = {
|
||||
sourceDir: path.resolve(__dirname, '..'),
|
||||
adminOrigin: settings.adminOrigin(),
|
||||
adminOrigin: settings.dashboardOrigin(),
|
||||
vhost: '',
|
||||
hasIPv6: sysinfo.hasIPv6(),
|
||||
endpoint: options.activated ? 'ip' : 'setup',
|
||||
|
||||
@@ -521,8 +521,8 @@ describe('App API', function () {
|
||||
docker.getContainer(appEntry.containerId).inspect(function (error, data) {
|
||||
expect(error).to.not.be.ok();
|
||||
expect(data.Config.ExposedPorts['7777/tcp']).to.eql({ });
|
||||
expect(data.Config.Env).to.contain('CLOUDRON_WEBADMIN_ORIGIN=' + settings.adminOrigin());
|
||||
expect(data.Config.Env).to.contain('CLOUDRON_API_ORIGIN=' + settings.adminOrigin());
|
||||
expect(data.Config.Env).to.contain('CLOUDRON_WEBADMIN_ORIGIN=' + settings.dashboardOrigin());
|
||||
expect(data.Config.Env).to.contain('CLOUDRON_API_ORIGIN=' + settings.dashboardOrigin());
|
||||
expect(data.Config.Env).to.contain('CLOUDRON=1');
|
||||
expect(data.Config.Env).to.contain('CLOUDRON_APP_ORIGIN=https://' + APP_LOCATION + '.' + DOMAIN_0.domain);
|
||||
expect(data.Config.Env).to.contain('CLOUDRON_APP_DOMAIN=' + APP_LOCATION + '.' + DOMAIN_0.domain);
|
||||
|
||||
@@ -28,7 +28,7 @@ function setup(done) {
|
||||
database._clear,
|
||||
|
||||
settings._setApiServerOrigin.bind(null, 'http://localhost:6060'),
|
||||
settings.setAdminLocation.bind(null, 'appstore-test.example.com', 'my.appstore-test.example.com'),
|
||||
settings.setDashboardLocation.bind(null, 'appstore-test.example.com', 'my.appstore-test.example.com'),
|
||||
|
||||
function createAdmin(callback) {
|
||||
superagent.post(SERVER_URL + '/api/v1/cloudron/activate')
|
||||
|
||||
@@ -185,7 +185,7 @@ describe('Cloudron API', function () {
|
||||
expect(result.statusCode).to.equal(200);
|
||||
expect(result.body.apiServerOrigin).to.eql('http://localhost:6060');
|
||||
expect(result.body.webServerOrigin).to.eql('https://cloudron.io');
|
||||
expect(result.body.adminFqdn).to.eql(settings.adminFqdn());
|
||||
expect(result.body.adminFqdn).to.eql(settings.dashboardFqdn());
|
||||
expect(result.body.version).to.eql(constants.VERSION);
|
||||
expect(result.body.cloudronName).to.be.a('string');
|
||||
|
||||
@@ -200,7 +200,7 @@ describe('Cloudron API', function () {
|
||||
expect(result.statusCode).to.equal(200);
|
||||
expect(result.body.apiServerOrigin).to.eql('http://localhost:6060');
|
||||
expect(result.body.webServerOrigin).to.eql('https://cloudron.io');
|
||||
expect(result.body.adminFqdn).to.eql(settings.adminFqdn());
|
||||
expect(result.body.adminFqdn).to.eql(settings.dashboardFqdn());
|
||||
expect(result.body.version).to.eql(constants.VERSION);
|
||||
expect(result.body.cloudronName).to.be.a('string');
|
||||
done();
|
||||
|
||||
@@ -20,7 +20,7 @@ var async = require('async'),
|
||||
|
||||
var SERVER_URL = 'http://localhost:' + constants.PORT;
|
||||
|
||||
const ADMIN_DOMAIN = {
|
||||
const DASHBOARD_DOMAIN = {
|
||||
domain: 'admin.com',
|
||||
zoneName: 'admin.com',
|
||||
config: {},
|
||||
@@ -49,7 +49,7 @@ function setup(done) {
|
||||
|
||||
function dnsSetup(callback) {
|
||||
superagent.post(SERVER_URL + '/api/v1/cloudron/setup')
|
||||
.send({ dnsConfig: { provider: ADMIN_DOMAIN.provider, domain: ADMIN_DOMAIN.domain, config: ADMIN_DOMAIN.config, tlsConfig: { provider: 'fallback' } } })
|
||||
.send({ dnsConfig: { provider: DASHBOARD_DOMAIN.provider, domain: DASHBOARD_DOMAIN.domain, config: DASHBOARD_DOMAIN.config, tlsConfig: { provider: 'fallback' } } })
|
||||
.end(function (error, result) {
|
||||
expect(result).to.be.ok();
|
||||
expect(result.statusCode).to.eql(200);
|
||||
@@ -170,7 +170,7 @@ describe('Mail API', function () {
|
||||
callback(null, dnsAnswerQueue[hostname][type]);
|
||||
};
|
||||
|
||||
const suffix = crypto.createHash('sha256').update(settings.adminDomain()).digest('hex').substr(0, 6);
|
||||
const suffix = crypto.createHash('sha256').update(settings.dashboardDomain()).digest('hex').substr(0, 6);
|
||||
dkimDomain = `cloudron-${suffix}._domainkey.${DOMAIN_0.domain}`;
|
||||
spfDomain = DOMAIN_0.domain;
|
||||
mxDomain = DOMAIN_0.domain;
|
||||
@@ -230,7 +230,7 @@ describe('Mail API', function () {
|
||||
expect(res.body.dns.spf.domain).to.eql(spfDomain);
|
||||
expect(res.body.dns.spf.type).to.eql('TXT');
|
||||
expect(res.body.dns.spf.value).to.eql(null);
|
||||
expect(res.body.dns.spf.expected).to.eql('v=spf1 a:' + settings.adminFqdn() + ' ~all');
|
||||
expect(res.body.dns.spf.expected).to.eql('v=spf1 a:' + settings.dashboardFqdn() + ' ~all');
|
||||
expect(res.body.dns.spf.status).to.eql(false);
|
||||
|
||||
expect(res.body.dns.dmarc).to.be.an('object');
|
||||
@@ -269,7 +269,7 @@ describe('Mail API', function () {
|
||||
expect(res.statusCode).to.equal(200);
|
||||
|
||||
expect(res.body.dns.spf).to.be.an('object');
|
||||
expect(res.body.dns.spf.expected).to.eql('v=spf1 a:' + settings.adminFqdn() + ' ~all');
|
||||
expect(res.body.dns.spf.expected).to.eql('v=spf1 a:' + settings.dashboardFqdn() + ' ~all');
|
||||
expect(res.body.dns.spf.status).to.eql(false);
|
||||
expect(res.body.dns.spf.value).to.eql(null);
|
||||
|
||||
@@ -311,7 +311,7 @@ describe('Mail API', function () {
|
||||
expect(res.statusCode).to.equal(200);
|
||||
|
||||
expect(res.body.dns.spf).to.be.an('object');
|
||||
expect(res.body.dns.spf.expected).to.eql('v=spf1 a:' + settings.adminFqdn() + ' a:random.com ~all');
|
||||
expect(res.body.dns.spf.expected).to.eql('v=spf1 a:' + settings.dashboardFqdn() + ' a:random.com ~all');
|
||||
expect(res.body.dns.spf.status).to.eql(false);
|
||||
expect(res.body.dns.spf.value).to.eql('v=spf1 a:random.com ~all');
|
||||
|
||||
@@ -387,7 +387,7 @@ describe('Mail API', function () {
|
||||
dnsAnswerQueue[mxDomain].MX = [ { priority: '10', exchange: settings.mailFqdn() } ];
|
||||
dnsAnswerQueue[dmarcDomain].TXT = [['v=DMARC1; p=reject; pct=100']];
|
||||
dnsAnswerQueue[dkimDomain].TXT = [['v=DKIM1; t=s; p=', mail._readDkimPublicKeySync(DOMAIN_0.domain) ]];
|
||||
dnsAnswerQueue[spfDomain].TXT = [['v=spf1 a:' + settings.adminFqdn() + ' ~all']];
|
||||
dnsAnswerQueue[spfDomain].TXT = [['v=spf1 a:' + settings.dashboardFqdn() + ' ~all']];
|
||||
|
||||
superagent.get(SERVER_URL + '/api/v1/mail/' + DOMAIN_0.domain + '/status')
|
||||
.query({ access_token: token })
|
||||
@@ -404,8 +404,8 @@ describe('Mail API', function () {
|
||||
expect(res.body.dns.spf).to.be.an('object');
|
||||
expect(res.body.dns.spf.domain).to.eql(spfDomain);
|
||||
expect(res.body.dns.spf.type).to.eql('TXT');
|
||||
expect(res.body.dns.spf.value).to.eql('v=spf1 a:' + settings.adminFqdn() + ' ~all');
|
||||
expect(res.body.dns.spf.expected).to.eql('v=spf1 a:' + settings.adminFqdn() + ' ~all');
|
||||
expect(res.body.dns.spf.value).to.eql('v=spf1 a:' + settings.dashboardFqdn() + ' ~all');
|
||||
expect(res.body.dns.spf.expected).to.eql('v=spf1 a:' + settings.dashboardFqdn() + ' ~all');
|
||||
expect(res.body.dns.spf.status).to.eql(true);
|
||||
|
||||
expect(res.body.dns.dmarc).to.be.an('object');
|
||||
|
||||
@@ -965,10 +965,10 @@ function setupTurn(app, options, callback) {
|
||||
if (!turnSecret) return callback(new BoxError(BoxError.ADDONS_ERROR, 'Turn secret is missing'));
|
||||
|
||||
const env = [
|
||||
{ name: 'CLOUDRON_STUN_SERVER', value: settings.adminFqdn() },
|
||||
{ name: 'CLOUDRON_STUN_SERVER', value: settings.dashboardFqdn() },
|
||||
{ name: 'CLOUDRON_STUN_PORT', value: '3478' },
|
||||
{ name: 'CLOUDRON_STUN_TLS_PORT', value: '5349' },
|
||||
{ name: 'CLOUDRON_TURN_SERVER', value: settings.adminFqdn() },
|
||||
{ name: 'CLOUDRON_TURN_SERVER', value: settings.dashboardFqdn() },
|
||||
{ name: 'CLOUDRON_TURN_PORT', value: '3478' },
|
||||
{ name: 'CLOUDRON_TURN_TLS_PORT', value: '5349' },
|
||||
{ name: 'CLOUDRON_TURN_SECRET', value: turnSecret }
|
||||
@@ -1564,7 +1564,7 @@ function startTurn(existingInfra, serviceConfig, callback) {
|
||||
const tag = infra.images.turn.tag;
|
||||
const memoryLimit = serviceConfig.memoryLimit || SERVICES['turn'].defaultMemoryLimit;
|
||||
const memory = system.getMemoryAllocation(memoryLimit);
|
||||
const realm = settings.adminFqdn();
|
||||
const realm = settings.dashboardFqdn();
|
||||
|
||||
const blobGet = util.callbackify(blobs.get);
|
||||
blobGet(blobs.ADDON_TURN_SECRET, function (error, turnSecret) {
|
||||
|
||||
@@ -67,15 +67,15 @@ exports = module.exports = {
|
||||
// these values come from the cache
|
||||
apiServerOrigin,
|
||||
webServerOrigin,
|
||||
adminDomain,
|
||||
setAdminLocation,
|
||||
dashboardDomain,
|
||||
setDashboardLocation,
|
||||
setMailLocation,
|
||||
|
||||
mailFqdn,
|
||||
mailDomain,
|
||||
|
||||
adminOrigin,
|
||||
adminFqdn,
|
||||
dashboardOrigin,
|
||||
dashboardFqdn,
|
||||
|
||||
isDemo,
|
||||
|
||||
@@ -106,8 +106,8 @@ exports = module.exports = {
|
||||
|
||||
API_SERVER_ORIGIN_KEY: 'api_server_origin',
|
||||
WEB_SERVER_ORIGIN_KEY: 'web_server_origin',
|
||||
ADMIN_DOMAIN_KEY: 'admin_domain',
|
||||
ADMIN_FQDN_KEY: 'admin_fqdn',
|
||||
DASHBOARD_DOMAIN_KEY: 'admin_domain',
|
||||
DASHBOARD_FQDN_KEY: 'admin_fqdn',
|
||||
MAIL_DOMAIN_KEY: 'mail_domain',
|
||||
MAIL_FQDN_KEY: 'mail_fqdn',
|
||||
PROVIDER_KEY: 'provider',
|
||||
@@ -173,8 +173,8 @@ let gDefaults = (function () {
|
||||
mandatory2FA: false
|
||||
};
|
||||
|
||||
result[exports.ADMIN_DOMAIN_KEY] = '';
|
||||
result[exports.ADMIN_FQDN_KEY] = '';
|
||||
result[exports.DASHBOARD_DOMAIN_KEY] = '';
|
||||
result[exports.DASHBOARD_FQDN_KEY] = '';
|
||||
result[exports.MAIL_DOMAIN_KEY] = '';
|
||||
result[exports.MAIL_FQDN_KEY] = '';
|
||||
|
||||
@@ -792,8 +792,8 @@ function initCache(callback) {
|
||||
gCache = {
|
||||
apiServerOrigin: allSettings[exports.API_SERVER_ORIGIN_KEY],
|
||||
webServerOrigin: allSettings[exports.WEB_SERVER_ORIGIN_KEY],
|
||||
adminDomain: allSettings[exports.ADMIN_DOMAIN_KEY],
|
||||
adminFqdn: allSettings[exports.ADMIN_FQDN_KEY],
|
||||
dashboardDomain: allSettings[exports.DASHBOARD_DOMAIN_KEY],
|
||||
dashboardFqdn: allSettings[exports.DASHBOARD_FQDN_KEY],
|
||||
mailDomain: allSettings[exports.MAIL_DOMAIN_KEY],
|
||||
mailFqdn: allSettings[exports.MAIL_FQDN_KEY],
|
||||
isDemo: allSettings[exports.DEMO_KEY],
|
||||
@@ -805,19 +805,19 @@ function initCache(callback) {
|
||||
}
|
||||
|
||||
// this is together so we can do this in a transaction later
|
||||
function setAdminLocation(adminDomain, adminFqdn, callback) {
|
||||
assert.strictEqual(typeof adminDomain, 'string');
|
||||
assert.strictEqual(typeof adminFqdn, 'string');
|
||||
function setDashboardLocation(dashboardDomain, dashboardFqdn, callback) {
|
||||
assert.strictEqual(typeof dashboardFqdn, 'string');
|
||||
assert.strictEqual(typeof dashboardFqdn, 'string');
|
||||
assert.strictEqual(typeof callback, 'function');
|
||||
|
||||
settingsdb.set(exports.ADMIN_DOMAIN_KEY, adminDomain, function (error) {
|
||||
settingsdb.set(exports.DASHBOARD_DOMAIN_KEY, dashboardDomain, function (error) {
|
||||
if (error) return callback(error);
|
||||
|
||||
settingsdb.set(exports.ADMIN_FQDN_KEY, adminFqdn, function (error) {
|
||||
settingsdb.set(exports.DASHBOARD_FQDN_KEY, dashboardDomain, function (error) {
|
||||
if (error) return callback(error);
|
||||
|
||||
gCache.adminDomain = adminDomain;
|
||||
gCache.adminFqdn = adminFqdn;
|
||||
gCache.dashboardDomain = dashboardDomain;
|
||||
gCache.dashboardFqdn = dashboardFqdn;
|
||||
|
||||
callback(null);
|
||||
});
|
||||
@@ -884,9 +884,9 @@ function setFooter(footer, callback) {
|
||||
function provider() { return gCache.provider; }
|
||||
function apiServerOrigin() { return gCache.apiServerOrigin; }
|
||||
function webServerOrigin() { return gCache.webServerOrigin; }
|
||||
function adminDomain() { return gCache.adminDomain; }
|
||||
function adminFqdn() { return gCache.adminFqdn; }
|
||||
function dashboardDomain() { return gCache.dashboardDomain; }
|
||||
function dashboardFqdn() { return gCache.dashboardFqdn; }
|
||||
function isDemo() { return gCache.isDemo; }
|
||||
function mailDomain() { return gCache.mailDomain; }
|
||||
function mailFqdn() { return gCache.mailFqdn; }
|
||||
function adminOrigin() { return 'https://' + adminFqdn(); }
|
||||
function dashboardOrigin() { return 'https://' + dashboardFqdn(); }
|
||||
|
||||
@@ -15,7 +15,7 @@ var async = require('async'),
|
||||
settings = require('../settings.js'),
|
||||
settingsdb = require('../settingsdb.js');
|
||||
|
||||
const ADMIN_DOMAIN = 'appstore-test.example.com';
|
||||
const DASHBOARD_DOMAIN = 'appstore-test.example.com';
|
||||
const APPSTORE_TOKEN = 'appstoretoken';
|
||||
const APP_ID = 'appid';
|
||||
const APPSTORE_APP_ID = 'appstoreappid';
|
||||
@@ -28,7 +28,7 @@ function setup(done) {
|
||||
database.initialize,
|
||||
database._clear,
|
||||
settings._setApiServerOrigin.bind(null, MOCK_API_SERVER_ORIGIN),
|
||||
settings.setAdminLocation.bind(null, ADMIN_DOMAIN, 'my.' + ADMIN_DOMAIN),
|
||||
settings.setDashboardLocation.bind(null, DASHBOARD_DOMAIN, 'my.' + DASHBOARD_DOMAIN),
|
||||
settings.initCache
|
||||
], done);
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ describe('apptask', function () {
|
||||
database.initialize,
|
||||
database._clear,
|
||||
blobs.initSecrets,
|
||||
settings.setAdminLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
settings.setDashboardLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE),
|
||||
userdb.add.bind(null, ADMIN.id, ADMIN),
|
||||
appdb.add.bind(null, APP.id, APP.appStoreId, APP.manifest, APP.location, APP.domain, APP.portBindings, APP)
|
||||
|
||||
@@ -182,7 +182,7 @@ describe('backups', function () {
|
||||
fs.mkdir.bind(null, BACKUP_DIR, { recursive: true }),
|
||||
database.initialize,
|
||||
database._clear,
|
||||
settings.setAdminLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
settings.setDashboardLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE),
|
||||
settingsdb.set.bind(null, settings.BACKUP_CONFIG_KEY, JSON.stringify({
|
||||
provider: 'filesystem',
|
||||
|
||||
@@ -36,7 +36,7 @@ describe('dns provider', function () {
|
||||
async.series([
|
||||
database.initialize,
|
||||
database._clear,
|
||||
settings.setAdminLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
settings.setDashboardLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE)
|
||||
], done);
|
||||
});
|
||||
|
||||
@@ -82,7 +82,7 @@ describe('Domains', function () {
|
||||
async.series([
|
||||
database.initialize,
|
||||
database._clear,
|
||||
settings.setAdminLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
settings.setDashboardLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE),
|
||||
appdb.add.bind(null, APP.id, APP.appStoreId, APP.manifest, APP.location, APP.domain, APP.portBindings, APP)
|
||||
], done);
|
||||
|
||||
@@ -226,7 +226,7 @@ function setup(done) {
|
||||
domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE),
|
||||
cleanupUsers,
|
||||
createOwner,
|
||||
settings.setAdminLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain)
|
||||
settings.setDashboardLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain)
|
||||
], done);
|
||||
}
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ function setup(done) {
|
||||
database.initialize.bind(null),
|
||||
database._clear.bind(null),
|
||||
ldapServer.start.bind(null),
|
||||
settings.setAdminLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
settings.setDashboardLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE),
|
||||
function (callback) {
|
||||
users.createOwner(USER_0.username, USER_0.password, USER_0.email, USER_0.displayName, AUDIT_SOURCE, function (error, result) {
|
||||
|
||||
@@ -34,7 +34,7 @@ function setup(done) {
|
||||
database.initialize,
|
||||
database._clear,
|
||||
domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE),
|
||||
settings.setAdminLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
settings.setDashboardLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
], done);
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ function setup(done) {
|
||||
database.initialize,
|
||||
database._clear,
|
||||
blobs.initSecrets,
|
||||
settings.setAdminLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
settings.setDashboardLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE),
|
||||
settings.initCache
|
||||
], done);
|
||||
|
||||
@@ -33,7 +33,7 @@ var USER_0 = {
|
||||
permissions: null
|
||||
};
|
||||
|
||||
const ADMIN_DOMAIN = 'updatechecker-test.example.com';
|
||||
const DASHBOARD_DOMAIN = 'updatechecker-test.example.com';
|
||||
|
||||
const DOMAIN_0 = {
|
||||
domain: 'example.com',
|
||||
@@ -81,10 +81,10 @@ describe('updatechecker - box', function () {
|
||||
database.initialize,
|
||||
database._clear,
|
||||
settings._setApiServerOrigin.bind(null, 'http://localhost:4444'),
|
||||
settings.setAdminLocation.bind(null, ADMIN_DOMAIN, 'my.' + ADMIN_DOMAIN),
|
||||
settings.setDashboardLocation.bind(null, DASHBOARD_DOMAIN, 'my.' + DASHBOARD_DOMAIN),
|
||||
cron.startJobs,
|
||||
domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE),
|
||||
settings.setAdminLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
settings.setDashboardLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
users.createOwner.bind(null, USER_0.username, USER_0.password, USER_0.email, USER_0.displayName, AUDIT_SOURCE),
|
||||
settings.setAutoupdatePattern.bind(null, constants.AUTOUPDATE_PATTERN_NEVER),
|
||||
settingsdb.set.bind(null, settings.CLOUDRON_TOKEN_KEY, 'atoken'),
|
||||
@@ -183,7 +183,7 @@ describe('updatechecker - app', function () {
|
||||
settings._setApiServerOrigin.bind(null, 'http://localhost:4444'),
|
||||
cron.startJobs,
|
||||
domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE),
|
||||
settings.setAdminLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
settings.setDashboardLocation.bind(null, DOMAIN_0.domain, 'my.' + DOMAIN_0.domain),
|
||||
users.createOwner.bind(null, USER_0.username, USER_0.password, USER_0.email, USER_0.displayName, AUDIT_SOURCE),
|
||||
appdb.add.bind(null, APP_0.id, APP_0.appStoreId, APP_0.manifest, APP_0.location, APP_0.domain, apps._translatePortBindings(APP_0.portBindings, APP_0.manifest), APP_0),
|
||||
settings.setAutoupdatePattern.bind(null, constants.AUTOUPDATE_PATTERN_NEVER),
|
||||
|
||||
@@ -631,7 +631,7 @@ function getOwner(callback) {
|
||||
}
|
||||
|
||||
function inviteLink(user, directoryConfig) {
|
||||
let link = `${settings.adminOrigin()}/setupaccount.html?resetToken=${user.resetToken}&email=${encodeURIComponent(user.email)}`;
|
||||
let link = `${settings.dashboardOrigin()}/setupaccount.html?resetToken=${user.resetToken}&email=${encodeURIComponent(user.email)}`;
|
||||
|
||||
if (user.username) link += `&username=${encodeURIComponent(user.username)}`;
|
||||
if (user.displayName) link += `&displayName=${encodeURIComponent(user.displayName)}`;
|
||||
@@ -719,7 +719,7 @@ function setTwoFactorAuthenticationSecret(userId, callback) {
|
||||
|
||||
if (result.twoFactorAuthenticationEnabled) return callback(new BoxError(BoxError.ALREADY_EXISTS));
|
||||
|
||||
var secret = speakeasy.generateSecret({ name: `Cloudron ${settings.adminFqdn()} (${result.username})` });
|
||||
var secret = speakeasy.generateSecret({ name: `Cloudron ${settings.dashboardFqdn()} (${result.username})` });
|
||||
|
||||
userdb.update(userId, { twoFactorAuthenticationSecret: secret.base32, twoFactorAuthenticationEnabled: false }, function (error) {
|
||||
if (error) return callback(error);
|
||||
@@ -863,7 +863,7 @@ function getAvatarUrl(user, callback) {
|
||||
|
||||
userdb.getAvatar(user.id, function (error, avatar) {
|
||||
if (error) return callback(error);
|
||||
if (avatar) return callback(null, `${settings.adminOrigin()}/api/v1/profile/avatar/${user.id}`);
|
||||
if (avatar) return callback(null, `${settings.dashboardOrigin()}/api/v1/profile/avatar/${user.id}`);
|
||||
|
||||
const emailHash = require('crypto').createHash('md5').update(user.email).digest('hex');
|
||||
return callback(null, `https://www.gravatar.com/avatar/${emailHash}.jpg`);
|
||||
|
||||
Reference in New Issue
Block a user