Files
MTB_Backend/maven.js

65 lines
2.0 KiB
JavaScript

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
const app = express();
const port = 3001;
app.use((req, res, next) => {
const userAgent = req.headers['user-agent'];
if (userAgent && (userAgent.includes('PCL') || userAgent.includes('FCL') || userAgent.includes('HMCL') || userAgent.includes('BakaXL'))) {
next(); // User-Agent 已经包含所需字符串,无需修改
} else {
// 重定向前设置 User-Agent
req.customUserAgent = 'MTB Hello';
next();
}
});
app.get('/releases/:path(*)', (req, res) => {
const path = req.params.path;
const userAgent = req.customUserAgent || 'MTB Hello';
const redirectUrl = `https://bmclapi2.bangbang93.com/maven/${path}`;
res.set({
'Location': redirectUrl,
'User-Agent': userAgent
}).status(302).end();
}); //下载处理
app.get('/repository/release/:path(*)', (req, res) => {
const path = req.params.path;
const userAgent = req.customUserAgent || 'MTB Hello';
const redirectUrl = `https://bmclapi2.bangbang93.com/maven/${path}`;
res.set({
'Location': redirectUrl,
'User-Agent': userAgent
}).status(302).end();
}); //下载处理 Qulit
// 反代 maven Neoforge列表
app.use('/api/maven/versions/releases/net/neoforged/forge', createProxyMiddleware({
target: 'https://maven.neoforged.net/api/maven/versions/releases/net/neoforged/forge',
changeOrigin: true,
followRedirects: false
}));
app.use('/api/maven/versions/releases/net/neoforged/neoforge', createProxyMiddleware({
target: 'https://maven.neoforged.net/api/maven/versions/releases/net/neoforged/neoforge',
changeOrigin: true,
followRedirects: false
}));
//反代 maven Neoforge列表
app.get('/:path(*)', (req, res) => {
const path = req.params.path;
const userAgent = req.customUserAgent || 'MTB Hello';
const redirectUrl = `https://bmclapi2.bangbang93.com/maven/${path}`;
res.set({
'Location': redirectUrl,
'User-Agent': userAgent
}).status(302).end();
});
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});