Merge pull request #430 from Aritro37/master

feat: 支持通过.env配置环境变量,后端支持设置前置路由
This commit is contained in:
xream 2025-03-17 17:07:37 +08:00 committed by GitHub
commit bb5c9d43d0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 26 additions and 6 deletions

View File

@ -27,6 +27,7 @@
"automerge": "1.0.1-preview.7", "automerge": "1.0.1-preview.7",
"body-parser": "^1.19.0", "body-parser": "^1.19.0",
"buffer": "^6.0.3", "buffer": "^6.0.3",
"dotenv": "^16.4.7",
"connect-history-api-fallback": "^2.0.0", "connect-history-api-fallback": "^2.0.0",
"cron": "^3.1.6", "cron": "^3.1.6",
"dns-packet": "^5.6.1", "dns-packet": "^5.6.1",

View File

@ -24,11 +24,30 @@ import registerParserRoutes from './parser';
export default function serve() { export default function serve() {
let port; let port;
let host; let host;
let prefix;
if ($.env.isNode) { if ($.env.isNode) {
const dotenv = eval(`require("dotenv")`);
dotenv.config();
port = eval('process.env.SUB_STORE_BACKEND_API_PORT') || 3000; port = eval('process.env.SUB_STORE_BACKEND_API_PORT') || 3000;
host = eval('process.env.SUB_STORE_BACKEND_API_HOST') || '::'; host = eval('process.env.SUB_STORE_BACKEND_API_HOST') || '::';
prefix = eval('process.env.SUB_STORE_BACKEND_PATH_PREFIX');
if (prefix && !prefix.startsWith("/")){
prefix = '/${prefix}'
}
} }
const $app = express({ substore: $, port, host }); const $app = express({ substore: $, port, host });
if (prefix && prefix.length >= 2){
$app.use((req, res, next) => {
if (req.path.startsWith(prefix)) {
const newPath = req.url.replace(prefix, '') || '/';
req.url = newPath;
next();
} else {
res.status(403).send();
}
});
}
// register routes // register routes
registerCollectionRoutes($app); registerCollectionRoutes($app);
registerSubscriptionRoutes($app); registerSubscriptionRoutes($app);
@ -216,7 +235,7 @@ export default function serve() {
app.use( app.use(
be_share_rewrite, be_share_rewrite,
createProxyMiddleware({ createProxyMiddleware({
target: `http://127.0.0.1:${port}`, target: `http://127.0.0.1:${port}${prefix}`,
changeOrigin: true, changeOrigin: true,
pathRewrite: async (path, req) => { pathRewrite: async (path, req) => {
if (req.method.toLowerCase() !== 'get') if (req.method.toLowerCase() !== 'get')
@ -237,7 +256,7 @@ export default function serve() {
app.use( app.use(
be_api_rewrite, be_api_rewrite,
createProxyMiddleware({ createProxyMiddleware({
target: `http://127.0.0.1:${port}${be_api}`, target: `http://127.0.0.1:${port}${prefix}${be_api}`,
pathRewrite: async (path) => { pathRewrite: async (path) => {
return path.includes('?') return path.includes('?')
? `${path}&share=true` ? `${path}&share=true`
@ -248,7 +267,7 @@ export default function serve() {
app.use( app.use(
be_download_rewrite, be_download_rewrite,
createProxyMiddleware({ createProxyMiddleware({
target: `http://127.0.0.1:${port}${be_download}`, target: `http://127.0.0.1:${port}${prefix}${be_download}`,
changeOrigin: true, changeOrigin: true,
}), }),
); );
@ -269,10 +288,10 @@ export default function serve() {
$.info(`[FRONTEND] ${fe_address}:${fe_port}`); $.info(`[FRONTEND] ${fe_address}:${fe_port}`);
if (fe_be_path) { if (fe_be_path) {
$.info( $.info(
`[FRONTEND -> BACKEND] ${fe_address}:${fe_port}${be_api_rewrite} -> http://127.0.0.1:${port}${be_api}`, `[FRONTEND -> BACKEND] ${fe_address}:${fe_port}${be_api_rewrite} -> http://127.0.0.1:${port}${prefix}${be_api}`,
); );
$.info( $.info(
`[FRONTEND -> BACKEND] ${fe_address}:${fe_port}${be_download_rewrite} -> http://127.0.0.1:${port}${be_download}`, `[FRONTEND -> BACKEND] ${fe_address}:${fe_port}${be_download_rewrite} -> http://127.0.0.1:${port}${prefix}${be_download}`,
); );
$.info( $.info(
`[SHARE BACKEND] ${fe_address}:${fe_port}${be_share_rewrite}`, `[SHARE BACKEND] ${fe_address}:${fe_port}${be_share_rewrite}`,