mirror of
https://github.com/plebbit/seedit.git
synced 2025-12-28 00:18:14 -05:00
53 lines
1.7 KiB
JavaScript
Executable File
53 lines
1.7 KiB
JavaScript
Executable File
// use this proxy server to debug ipfs api requests made by electron
|
|
|
|
import http from 'http';
|
|
import httpProxy from 'http-proxy';
|
|
|
|
// start proxy
|
|
const proxy = httpProxy.createProxyServer({});
|
|
|
|
// rewrite the request
|
|
proxy.on('proxyReq', function (proxyReq, req, res, options) {
|
|
// remove headers that could potentially cause an ipfs 403 error
|
|
proxyReq.removeHeader('X-Forwarded-For');
|
|
proxyReq.removeHeader('X-Forwarded-Proto');
|
|
proxyReq.removeHeader('sec-ch-ua');
|
|
proxyReq.removeHeader('sec-ch-ua-mobile');
|
|
proxyReq.removeHeader('user-agent');
|
|
proxyReq.removeHeader('origin');
|
|
proxyReq.removeHeader('sec-fetch-site');
|
|
proxyReq.removeHeader('sec-fetch-mode');
|
|
proxyReq.removeHeader('sec-fetch-dest');
|
|
proxyReq.removeHeader('referer');
|
|
});
|
|
proxy.on('error', (e, req, res) => {
|
|
console.error(e);
|
|
// if not ended, will hang forever
|
|
res.statusCode = 502;
|
|
res.setHeader('Content-Type', 'text/plain');
|
|
res.end(`502 Bad Gateway: ${e.message}`);
|
|
});
|
|
|
|
// start server
|
|
const start = ({ proxyPort, targetPort } = {}) => {
|
|
const server = http.createServer();
|
|
|
|
// never timeout the keep alive connection
|
|
server.keepAliveTimeout = 0;
|
|
|
|
server.on('request', async (req, res) => {
|
|
console.log(new Date().toISOString(), req.method, req.url, req.rawHeaders);
|
|
|
|
// fix cors error from dev url localhost:3000
|
|
// should not be necessary in production build using file url
|
|
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
|
|
proxy.web(req, res, { target: `http://localhost:${targetPort}` });
|
|
});
|
|
server.on('error', console.error);
|
|
server.listen(proxyPort);
|
|
console.log(`proxy server listening on port ${proxyPort}`);
|
|
};
|
|
|
|
export default { start };
|