const express = require('express');
const http = require('http');
const https = require('https');
const url = require('url');
const app = express();
const PORT = 7015;
function setCorsHeaders(req, res) {
const allowedOrigin = req.headers.origin || '*';
res.header('Access-Control-Allow-Origin', allowedOrigin);
const allowedMethods = req.headers['access-control-request-method'] || '*';
res.header('Access-Control-Allow-Methods', allowedMethods);
const allowedHeaders = req.headers['access-control-request-headers'] || '*';
res.header('Access-Control-Allow-Headers', allowedHeaders);
res.header('Access-Control-Allow-Credentials', 'true');
res.header('Access-Control-Max-Age', '86400');
}
function createProxy(targetUrl) {
return (req, res) => {
const target = url.parse(targetUrl);
let path = req.url;
if (req.url.includes('register.json')) {
path = `/IntelliBusinessAPP/${req.url}`;
}
if (req.method === 'OPTIONS') {
setCorsHeaders(req, res);
res.statusCode = 204;
res.setHeader('Content-Length', '0');
res.end();
return;
}
const options = {
hostname: target.hostname,
port: target.port || (target.protocol === 'https:' ? 443 : 80),
path,
method: req.method,
headers: req.headers
};
const proxyReq = (target.protocol === 'https:' ? https : http).request(options, (proxyRes) => {
const headers = { ...proxyRes.headers };
setCorsHeaders(req, res);
let statusCode = proxyRes.statusCode;
res.writeHead(statusCode, headers);
proxyRes.pipe(res);
});
proxyReq.on('error', (err) => {
console.error('Proxy error:', err);
setCorsHeaders(req, res);
res.status(500).send('Proxy error');
});
req.pipe(proxyReq);
};
}
app.use('/', createProxy('http://localhost:8080'));
app.listen(PORT, () => {
console.log(`Proxy server is running on http://localhost:${PORT}`);
});
module.exports = app;