'use strict'; const express = require("express"); const bodyParser = require("body-parser"); const bodyHand = require('body'); const url = require('url'); const path = require('path'); const fetch = require('node-fetch'); global.config = require("./config.json"); const rtmap = require("./routemap-parser"); const app = express(); const address = global.config.net.address ?? "127.0.0.1"; const reverseTo = global.config.target ?? "https://example.org"; function logger (...p) { return; console.log("[DEBUG.main]:", ...p); } app.use('/*', async (req, res, next) => { // Myself body parser :) bodyHand(req, res, { limit: 9999999999, cache: false, encoding: 'base64' }, (err, body) => { if (!err) { req.body = Buffer.from(body, 'base64'); } else { req.body = undefined; } next(); }); }); app.use("*", async (req, res) => { logger("REQ HEADERS:>", req.headers); logger("originalUrl:>", req.originalUrl); const params = { method: req.method.toUpperCase(), headers: req.headers, redirect: "follow", follow: 20 }; delete params.headers.host; delete params.headers.referer; if (!["GET", "HEAD"].includes(params.method)) params.body = req.body; const reqAddress = url.resolve(reverseTo, path.join("/", req.originalUrl)); fetch(reverseTo, params) .then(async result => { const content = await result.text(); logger("result:", result); logger("result.text():", content); Object.entries(result?.headers ? result.headers : new Object()).forEach(([header, value]) => { res.set(header, value); }); res.status(result.status).send(content); }) .catch(err => { console.error(err); res.status(500).send("Error

Error:


Error catched. Check logs

"); }); }); rtmap.parse(); app.listen(global.config.net.port, address, (err) => { if (err) { throw err; } console.log(`Koboldcpp reverse proxy server listened at ${ address }:${global.config.net.port}`); })