mirror of
https://github.com/QuiteAFancyEmerald/Holy-Unblocker.git
synced 2025-05-14 04:20:00 -04:00
53 lines
1.7 KiB
JavaScript
53 lines
1.7 KiB
JavaScript
const exitHook = require('async-exit-hook');
|
|
const RammerheadProxy = require('../classes/RammerheadProxy');
|
|
const addStaticDirToProxy = require('../util/addStaticDirToProxy');
|
|
const RammerheadSessionFileCache = require('../classes/RammerheadSessionFileCache');
|
|
const config = require('../config');
|
|
const setupRoutes = require('./setupRoutes');
|
|
const setupPipeline = require('./setupPipeline');
|
|
const RammerheadLogging = require('../classes/RammerheadLogging');
|
|
|
|
/**
|
|
*
|
|
* @returns {import('node:http').Server}
|
|
*/
|
|
function createRammerhead() {
|
|
require.main = module;
|
|
|
|
const logger = new RammerheadLogging({
|
|
logLevel: config.logLevel,
|
|
generatePrefix: (level) => config.generatePrefix(level)
|
|
});
|
|
|
|
const proxyServer = new RammerheadProxy({
|
|
logger,
|
|
loggerGetIP: config.getIP,
|
|
bindingAddress: config.bindingAddress,
|
|
port: config.port,
|
|
crossDomainPort: null,
|
|
dontListen: true,
|
|
ssl: config.ssl,
|
|
getServerInfo: config.getServerInfo,
|
|
disableLocalStorageSync: config.disableLocalStorageSync,
|
|
diskJsCachePath: config.diskJsCachePath,
|
|
jsCacheSize: config.jsCacheSize
|
|
});
|
|
|
|
if (config.publicDir) addStaticDirToProxy(proxyServer, config.publicDir);
|
|
|
|
const fileCacheOptions = { logger, ...config.fileCacheSessionConfig };
|
|
const sessionStore = new RammerheadSessionFileCache(fileCacheOptions);
|
|
sessionStore.attachToProxy(proxyServer);
|
|
|
|
setupPipeline(proxyServer, sessionStore);
|
|
setupRoutes(proxyServer, sessionStore, logger);
|
|
|
|
// nicely close proxy server and save sessions to store before we exit
|
|
exitHook(() => {
|
|
proxyServer.close();
|
|
});
|
|
|
|
return proxyServer.server1;
|
|
}
|
|
|
|
module.exports = createRammerhead;
|