Browse Source

Properly escape HTML and add support for highlight links in setupchecks

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
tags/v29.0.0beta1
Côme Chilliet 5 months ago
parent
commit
8766a90cff
No account linked to committer's email address
1 changed files with 17 additions and 3 deletions
  1. 17
    3
      core/js/setupchecks.js

+ 17
- 3
core/js/setupchecks.js View File

return deferred.promise(); return deferred.promise();
}, },


escapeHTML: function(text) {
return text.toString()
.split('&').join('&amp;')
.split('<').join('&lt;')
.split('>').join('&gt;')
.split('"').join('&quot;')
.split('\'').join('&#039;')
},

/** /**
* @param message The message string containing placeholders. * @param message The message string containing placeholders.
* @param parameters An object with keys as placeholders and values as their replacements. * @param parameters An object with keys as placeholders and values as their replacements.
for (var [placeholder, parameter] of Object.entries(parameters)) { for (var [placeholder, parameter] of Object.entries(parameters)) {
var replacement; var replacement;
if (parameter.type === 'user') { if (parameter.type === 'user') {
replacement = '@' + parameter.name;
replacement = '@' + this.escapeHTML(parameter.name);
} else if (parameter.type === 'file') { } else if (parameter.type === 'file') {
replacement = parameter.path || parameter.name;
replacement = this.escapeHTML(parameter.path) || this.escapeHTML(parameter.name);
} else if (parameter.type === 'highlight') {
replacement = '<a href="' + encodeURI(parameter.link) + '">' + this.escapeHTML(parameter.name) + '</a>';
} else { } else {
replacement = parameter.name;
replacement = this.escapeHTML(parameter.name);
} }
message = message.replace('{' + placeholder + '}', replacement); message = message.replace('{' + placeholder + '}', replacement);
} }
} }


var message = setupCheck.description; var message = setupCheck.description;
if (message) {
message = this.escapeHTML(message)
}
if (setupCheck.descriptionParameters) { if (setupCheck.descriptionParameters) {
message = this.richToParsed(message, setupCheck.descriptionParameters); message = this.richToParsed(message, setupCheck.descriptionParameters);
} }

Loading…
Cancel
Save