diff --git a/zefie_wtvp_minisrv/app.js b/zefie_wtvp_minisrv/app.js index 4c0da521..d9f35e2b 100644 --- a/zefie_wtvp_minisrv/app.js +++ b/zefie_wtvp_minisrv/app.js @@ -1292,9 +1292,15 @@ async function doHTTPProxy(socket, request_headers) { } const req = proxy_agent.request(options, function (res) { var data = []; + var total_data = 0; res.on('data', d => { data.push(d); + total_data += d.length; + if (total_data > 1024 * parseFloat(minisrv_config.services[request_type].max_response_size || 16)) { + console.warn(` * Response data exceeded ${minisrv_config.services[request_type].max_response_size || 16}MB limit, destroying...`); + res.destroy(); + } }) res.on('error', function (err) { diff --git a/zefie_wtvp_minisrv/includes/config.json b/zefie_wtvp_minisrv/includes/config.json index 9c17a00a..71aa59d9 100644 --- a/zefie_wtvp_minisrv/includes/config.json +++ b/zefie_wtvp_minisrv/includes/config.json @@ -349,7 +349,8 @@ "external_proxy_is_socks": false, // use a socks proxy "external_proxy_host": "127.0.0.1", // IP address or hostname of proxy "external_proxy_port": 1080, // Port of proxy - "flags": "0x00000001" + "flags": "0x00000001", + "max_response_size": 16 // Megabytes }, "https": { "port": 1650, @@ -358,7 +359,8 @@ "external_proxy_is_socks": false, // use a socks proxy "external_proxy_host": "127.0.0.1", // IP address or hostname of proxy "external_proxy_port": 1080, // Port of proxy - "flags": "0x00000001" + "flags": "0x00000001", + "max_response_size": 16 // Megabytes }, "proto": { "port": 1650, @@ -369,7 +371,8 @@ "external_proxy_host": "wayback.protoweb.org", "external_proxy_port": 7851, "external_proxy_is_http1": true, - "flags": "0x00000001" + "flags": "0x00000001", + "max_response_size": 16 // Megabytes }, "wtv-passport": { // wtv-passport (for messenger)