diff --git a/server/Server.js b/server/Server.js index 46850cbb..9bbdb486 100644 --- a/server/Server.js +++ b/server/Server.js @@ -6,6 +6,7 @@ const util = require('util') const fs = require('./libs/fsExtra') const fileUpload = require('./libs/expressFileupload') const cookieParser = require('cookie-parser') +const axios = require('axios') const { version } = require('../package.json') @@ -54,7 +55,25 @@ class Server { global.XAccel = process.env.USE_X_ACCEL global.AllowCors = process.env.ALLOW_CORS === '1' - if (process.env.DISABLE_SSRF_REQUEST_FILTER === '1') { + if (process.env.EXP_PROXY_SUPPORT === '1') { + Logger.info(`[Server] Experimental Proxy Support Enabled, SSRF Request Filter was Disabled`); + global.DisableSsrfRequestFilter = () => true + + axios.defaults.maxRedirects = 0; + axios.interceptors.response.use( + response => response, + error => { + if ([301, 302].includes(error.response?.status)) { + return axios({ + ...error.config, + url: error.response.headers.location, + }); + } + + return Promise.reject(error); + } + ); + } else if (process.env.DISABLE_SSRF_REQUEST_FILTER === '1') { Logger.info(`[Server] SSRF Request Filter Disabled`) global.DisableSsrfRequestFilter = () => true } else if (process.env.SSRF_REQUEST_FILTER_WHITELIST?.length) {