| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- const express = require('express');
- const http = require('http');
- const httpProxy = require('http-proxy');
- const app = express();
- const fromPort = 80;
- const toPort = 8080;
- const host = 'localhost';
- app.set('etag', false);
- app.use((req, res, next) => {
- res.set('Cache-Control', 'no-store');
- next();
- });
- app.get('*', async(req, res) => {
- const promise = fetch(`http://${host}:${toPort}` + req.url);
- const fetchResponse = await promise;
- fetchResponse.headers.forEach((value, key) => {
- res.setHeader(key, value);
- });
- const clone = fetchResponse.clone();
- let text = await fetchResponse.text();
- if(text.includes(`${host}:${toPort}`)) {
- text = text.replace(`${host}:${toPort}`, `${host}:${fromPort}`);
- res.send(text);
- } else {
- const arrayBuffer = await clone.arrayBuffer();
- const array = new Uint8Array(arrayBuffer);
- res.write(array);
- res.end();
- }
- });
- const server = http.createServer(app).listen(fromPort);
- server.on('upgrade', (req, socket, head) => {
- proxy.ws(req, socket, head);
- });
- const proxy = new httpProxy.createProxyServer({
- target: {
- host: host,
- port: toPort
- }
- });
|