allow wilcard in alias domains
This commit is contained in:
19
src/apps.js
19
src/apps.js
@@ -691,7 +691,13 @@ function validateLocations(locations, callback) {
|
||||
for (let location of locations) {
|
||||
if (!(location.domain in domainObjectMap)) return callback(new BoxError(BoxError.BAD_FIELD, 'No such domain', { field: 'location', domain: location.domain, subdomain: location.subdomain }));
|
||||
|
||||
error = domains.validateHostname(location.subdomain, domainObjectMap[location.domain]);
|
||||
let subdomain = location.subdomain;
|
||||
if (location.type === 'alias' && subdomain.startsWith('*')) {
|
||||
if (subdomain === '*') continue;
|
||||
subdomain = subdomain.replace(/^\*\./, ''); // remove *.
|
||||
}
|
||||
|
||||
error = domains.validateHostname(subdomain, domainObjectMap[location.domain]);
|
||||
if (error) return callback(new BoxError(BoxError.BAD_FIELD, 'Bad location: ' + error.message, { field: 'location', domain: location.domain, subdomain: location.subdomain }));
|
||||
}
|
||||
|
||||
@@ -776,7 +782,10 @@ function install(data, auditSource, callback) {
|
||||
}
|
||||
}
|
||||
|
||||
const locations = [{subdomain: location, domain}].concat(alternateDomains).concat(aliasDomains);
|
||||
const locations = [{ subdomain: location, domain, type: 'primary' }]
|
||||
.concat(alternateDomains.map(ad => _.extend(ad, { type: 'redirect' })))
|
||||
.concat(aliasDomains.map(ad => _.extend(ad, { type: 'alias' })));
|
||||
|
||||
validateLocations(locations, function (error, domainObjectMap) {
|
||||
if (error) return callback(error);
|
||||
|
||||
@@ -1211,7 +1220,9 @@ function setLocation(app, data, auditSource, callback) {
|
||||
values.aliasDomains = data.aliasDomains;
|
||||
}
|
||||
|
||||
const locations = [{subdomain: values.location, domain: values.domain}].concat(values.alternateDomains).concat(values.aliasDomains);
|
||||
const locations = [{ subdomain: values.location, domain: values.domain, type: 'primary' }]
|
||||
.concat(values.alternateDomains.map(ad => _.extend(ad, { type: 'redirect' })))
|
||||
.concat(values.aliasDomains.map(ad => _.extend(ad, { type: 'alias' })));
|
||||
|
||||
validateLocations(locations, function (error, domainObjectMap) {
|
||||
if (error) return callback(error);
|
||||
@@ -1640,7 +1651,7 @@ function clone(app, data, user, auditSource, callback) {
|
||||
let mailboxName = hasMailAddon(manifest) ? mailboxNameForLocation(location, manifest) : null;
|
||||
let mailboxDomain = hasMailAddon(manifest) ? domain : null;
|
||||
|
||||
const locations = [{subdomain: location, domain}];
|
||||
const locations = [{ subdomain: location, domain, type: 'primary' }];
|
||||
validateLocations(locations, function (error, domainObjectMap) {
|
||||
if (error) return callback(error);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user