Added Cloudflare RocketLoader support.

Ylian Saint-Hilaire committed Jan 6, 2021 at 14:23 UTC 923ac49637ba5c4bf957069113f7f00f4d48dbaa
3 files changed +4 -1
certoperations.js
+1
@@ -110,6 +110,7 @@ module.exports.CertificateOperations = function (parent) {
110 var acmCerts = [], acmmatch = [];
111 if (amtacmactivation.certs != null) {
112 for (var j in amtacmactivation.certs) {
113 + if (j.startsWith('_')) continue; // Skip any certificates that start with underscore as the name.
114 var acmconfig = amtacmactivation.certs[j], r = null;
115
116 if ((typeof acmconfig.certpfx == 'string') && (typeof acmconfig.certpfxpass == 'string')) {
meshcentral.js
+1
@@ -1350,6 +1350,7 @@ function CreateMeshCentralServer(config, args) {
1350
1351 // Load CloudFlare trusted proxies list if needed
1352 if ((obj.config.settings.trustedproxy != null) && (typeof obj.config.settings.trustedproxy == 'string') && (obj.config.settings.trustedproxy.toLowerCase() == 'cloudflare')) {
1353 + obj.config.settings.extrascriptsrc = 'ajax.cloudflare.com'; // Add CloudFlare as a trusted script source. This allows for CloudFlare's RocketLoader feature.
1354 delete obj.args.trustedproxy;
1355 delete obj.config.settings.trustedproxy;
1356 obj.certificateOperations.loadTextFile('https://www.cloudflare.com/ips-v4', null, function (url, data, tag) {
webserver.js
+2 -1
@@ -5014,11 +5014,12 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
5014 const geourl = (domain.geolocation ? ' *.openstreetmap.org' : '');
5015 var selfurl = ' wss://' + req.headers.host;
5016 if ((xforwardedhost != null) && (xforwardedhost != req.headers.host)) { selfurl += ' wss://' + xforwardedhost; }
5017 + const extraScriptSrc = (parent.config.settings.extrascriptsrc != null) ? (' ' + parent.config.settings.extrascriptsrc) : '';
5018 const headers = {
5019 'Referrer-Policy': 'no-referrer',
5020 'X-XSS-Protection': '1; mode=block',
5021 'X-Content-Type-Options': 'nosniff',
5021 - 'Content-Security-Policy': "default-src 'none'; font-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'" + geourl + selfurl + "; img-src 'self'" + geourl + " data:; style-src 'self' 'unsafe-inline'; frame-src 'self' https://*.youtube.com mcrouter:; media-src 'self'; form-action 'self'"
5022 + 'Content-Security-Policy': "default-src 'none'; font-src 'self'; script-src 'self' 'unsafe-inline'" + extraScriptSrc + "; connect-src 'self'" + geourl + selfurl + "; img-src 'self'" + geourl + " data:; style-src 'self' 'unsafe-inline'; frame-src 'self' https://*.youtube.com mcrouter:; media-src 'self'; form-action 'self'"
5023 };
5024 if ((parent.config.settings.allowframing !== true) && (typeof parent.config.settings.allowframing !== 'string')) { headers['X-Frame-Options'] = 'sameorigin'; }
5025 res.set(headers);