From e05475aa5e051cbdb954c005235180a552b05b43 Mon Sep 17 00:00:00 2001 From: xream Date: Wed, 13 Dec 2023 02:04:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20Node.js=20=E5=89=8D=E7=AB=AF=E4=BB=A3?= =?UTF-8?q?=E7=90=86=E5=90=8E=E7=AB=AF=E8=B7=AF=E7=94=B1=20=E9=9C=80?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=20?= =?UTF-8?q?=E6=B3=A8=E6=84=8F=E5=AE=89=E5=85=A8=20`SUB=5FSTORE=5FFRONTEND?= =?UTF-8?q?=5FPATH=3D/prefix`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/package.json | 2 +- backend/src/restful/index.js | 34 ++++++++++++++++++++++++++++------ 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/backend/package.json b/backend/package.json index 9131b0c..cb71c1c 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "sub-store", - "version": "2.14.125", + "version": "2.14.126", "description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.", "main": "src/main.js", "scripts": { diff --git a/backend/src/restful/index.js b/backend/src/restful/index.js index 545fc21..185d59b 100644 --- a/backend/src/restful/index.js +++ b/backend/src/restful/index.js @@ -68,23 +68,42 @@ export default function serve() { const staticFileMiddleware = express_.static(fe_path); - let be_rewrite = ''; + let be_api_rewrite = ''; + let be_download_rewrite = ''; let be_api = '/api/'; + let be_download = '/download/'; if (fe_be_path) { if (!fe_be_path.startsWith('/')) { throw new Error( 'SUB_STORE_FRONTEND_BACKEND_PATH should start with /', ); } - be_rewrite = `${fe_be_path === '/' ? '' : fe_be_path}${be_api}`; + be_api_rewrite = `${ + fe_be_path === '/' ? '' : fe_be_path + }${be_api}`; + be_download_rewrite = `${ + fe_be_path === '/' ? '' : fe_be_path + }${be_download}`; app.use( - be_rewrite, + be_api_rewrite, createProxyMiddleware({ target: `http://127.0.0.1:${port}`, changeOrigin: true, pathRewrite: (path) => { - return path.startsWith(be_rewrite) - ? path.replace(be_rewrite, be_api) + return path.startsWith(be_api_rewrite) + ? path.replace(be_api_rewrite, be_api) + : path; + }, + }), + ); + app.use( + be_download_rewrite, + createProxyMiddleware({ + target: `http://127.0.0.1:${port}`, + changeOrigin: true, + pathRewrite: (path) => { + return path.startsWith(be_download_rewrite) + ? path.replace(be_download_rewrite, be_download) : path; }, }), @@ -106,7 +125,10 @@ export default function serve() { $.info(`[FRONTEND] ${fe_address}:${fe_port}`); if (fe_be_path) { $.info( - `[FRONTEND -> BACKEND] ${fe_address}:${fe_port}${be_rewrite} -> http://127.0.0.1:${port}${be_api}`, + `[FRONTEND -> BACKEND] ${fe_address}:${fe_port}${be_api_rewrite} -> http://127.0.0.1:${port}${be_api}`, + ); + $.info( + `[FRONTEND -> BACKEND] ${fe_address}:${fe_port}${be_download_rewrite} -> http://127.0.0.1:${port}${be_download}`, ); } });