Allow per-app configuration of robots.txt

https://developers.google.com/search/reference/robots_txt has
the specification

Part of #344
This commit is contained in:
Girish Ramakrishnan
2017-07-14 12:19:27 -05:00
parent 5697bcf43f
commit acd00222e5
12 changed files with 84 additions and 14 deletions

View File

@@ -243,6 +243,14 @@ function validateDebugMode(debugMode) {
return null;
}
function validateRobotsTxt(robotsTxt) {
if (robotsTxt === null) return null;
// TODO: validate the robots file?
return null;
}
function getDuplicateErrorDetails(location, portBindings, error) {
assert.strictEqual(typeof location, 'string');
assert.strictEqual(typeof portBindings, 'object');
@@ -403,6 +411,7 @@ function install(data, auditSource, callback) {
xFrameOptions = data.xFrameOptions || 'SAMEORIGIN',
sso = 'sso' in data ? data.sso : null,
debugMode = data.debugMode || null,
robotsTxt = data.robotsTxt || null,
backupId = data.backupId || null;
assert(data.appStoreId || data.manifest); // atleast one of them is required
@@ -434,6 +443,9 @@ function install(data, auditSource, callback) {
error = validateDebugMode(debugMode);
if (error) return callback(error);
error = validateRobotsTxt(robotsTxt);
if (error) return callback(error);
if ('sso' in data && !('optionalSso' in manifest)) return callback(new AppsError(AppsError.BAD_FIELD, 'sso can only be specified for apps with optionalSso'));
// if sso was unspecified, enable it by default if possible
if (sso === null) sso = !!manifest.addons['ldap'] || !!manifest.addons['oauth'];
@@ -548,6 +560,12 @@ function configure(appId, data, auditSource, callback) {
if (error) return callback(error);
}
if ('robotsTxt' in data) {
values.robotsTxt = data.robotsTxt || null;
error = validateRobotsTxt(values.robotsTxt);
if (error) return callback(error);
}
// save cert to boxdata/certs. TODO: move this to apptask when we have a real task queue
if ('cert' in data && 'key' in data) {
if (data.cert && data.key) {