disable compression by default and dont compress webrelays #4369

Signed-off-by: si458 <simonsmith5521@gmail.com>

si458 committed Jun 20, 2025 at 20:18 UTC 92c2b613185cf21ca5745f182b56a50c365957c4
5 files changed +5 -6
meshcentral-config-schema.json
+2 -2
@@ -536,8 +536,8 @@
536 },
537 "compression": {
538 "type": "boolean",
539 - "default": true,
540 - "description": "Enables GZIP compression for web requests."
539 + "default": false,
540 + "description": "Enables GZIP compression for web requests. Disabled by default."
541 },
542 "wsCompression": {
543 "type": "boolean",
monitoring.js
-1
@@ -14,7 +14,6 @@ module.exports.CreateMonitoring = function (parent, args) {
14 obj.express = require('express');
15 obj.app = obj.express();
16 obj.prometheus = null;
17 - if (args.compression !== false) { obj.app.use(require('compression')()); }
17 obj.app.disable('x-powered-by');
18 obj.counterMetrics = { // Counter Metrics always start at 0 and increase but never decrease
19 RelayErrors: { description: "Relay Errors" }, // parent.webserver.relaySessionErrorCount
sample-config-advanced.json
+1 -1
@@ -65,7 +65,7 @@
65 "_agentIdleTimeout": 150,
66 "_webPageLengthRandomization": false,
67 "_compression": true,
68 - "_wsCompression": false,
68 + "_wsCompression": true,
69 "_agentWsCompression": true,
70 "_noAgentUpdate": 1,
71 "_agentUpdateSystem": 1,
webrelayserver.js
-1
@@ -23,7 +23,6 @@ module.exports.CreateWebRelayServer = function (parent, db, args, certificates,
23 obj.tlsServer = null;
24 obj.net = require('net');
25 obj.app = obj.express();
26 - if (args.compression !== false) { obj.app.use(require('compression')()); }
26 obj.app.disable('x-powered-by');
27 obj.webRelayServer = null;
28 obj.port = 0;
webserver.js
+2 -1
@@ -65,9 +65,10 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
65 obj.db = db;
66 obj.app = obj.express();
67 if (obj.args.agentport) { obj.agentapp = obj.express(); }
68 - if (args.compression !== false) {
68 + if (args.compression === true) {
69 obj.app.use(require('compression')({ filter: function (req, res) {
70 if (req.path == '/devicefile.ashx') return false; // Don't compress device file transfers to show file sizes
71 + if ((args.relaydns != null) && (obj.args.relaydns.indexOf(req.hostname) >= 0)) return false; // Don't compress DNS relay requests
72 return require('compression').filter(req, res);
73 }}));
74 }