35 lines
982 B
JavaScript
35 lines
982 B
JavaScript
|
|
const express = require('express');
|
||
|
|
const { createProxyMiddleware } = require('http-proxy-middleware');
|
||
|
|
|
||
|
|
const app = express();
|
||
|
|
const port = 8080;
|
||
|
|
|
||
|
|
// Middleware to handle dynamic IPv6 proxying
|
||
|
|
app.use('/:ipv6', (req, res, next) => {
|
||
|
|
const ipv6 = req.params.ipv6;
|
||
|
|
|
||
|
|
// Validate or sanitize the IPv6 if needed
|
||
|
|
const targetUrl = `http://[${ipv6}]:8000`;
|
||
|
|
console.log(`Proxying request to: ${targetUrl}`);
|
||
|
|
|
||
|
|
// Create and attach the proxy middleware *once per request*
|
||
|
|
const proxy = createProxyMiddleware({
|
||
|
|
target: targetUrl,
|
||
|
|
changeOrigin: true,
|
||
|
|
logLevel: 'debug',
|
||
|
|
// pathRewrite: {
|
||
|
|
// [`^/${ipv6}`]: '/', // Send to root of the target
|
||
|
|
// },
|
||
|
|
onError(err, req, res) {
|
||
|
|
console.error('Proxy error:', err.message);
|
||
|
|
res.status(502).send('Bad Gateway: Failed to connect to target');
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
return proxy(req, res, next);
|
||
|
|
});
|
||
|
|
|
||
|
|
app.listen(port, '0.0.0.0', () => {
|
||
|
|
console.log(`Proxy server listening on http://0.0.0.0:${port}`);
|
||
|
|
});
|