mirror of
https://github.com/QuiteAFancyEmerald/Holy-Unblocker.git
synced 2025-05-13 03:50:02 -04:00
87 lines
1.5 KiB
JavaScript
87 lines
1.5 KiB
JavaScript
const WebSocket = require('ws'),
|
|
fs = require('fs');
|
|
|
|
const config = JSON.parse(fs.readFileSync('./config.json', {encoding:'utf8'}));
|
|
|
|
if (!config.prefix.startsWith('/')) {
|
|
|
|
config.prefix = `/${config.prefix}`;
|
|
|
|
}
|
|
|
|
if (!config.prefix.endsWith('/')) {
|
|
|
|
config.prefix = `${config.prefix}/`;
|
|
|
|
}
|
|
|
|
btoa = (str) => {
|
|
|
|
str = new Buffer.from(str).toString('base64');
|
|
|
|
return str;
|
|
|
|
};
|
|
|
|
atob = (str) => {
|
|
|
|
str = new Buffer.from(str, 'base64').toString('utf-8');
|
|
|
|
return str;
|
|
|
|
};
|
|
|
|
module.exports = (server) => {
|
|
|
|
const wss = new WebSocket.Server({ server: server });
|
|
|
|
wss.on('connection', (cli, req) => {
|
|
|
|
try {
|
|
|
|
const svr = new WebSocket(atob(req.url.toString().replace(`${config.prefix}ws/`, '')));
|
|
|
|
svr.on('message', (data) => {
|
|
|
|
try { cli.send(data) } catch(err){}
|
|
|
|
});
|
|
|
|
svr.on('open', () => {
|
|
|
|
cli.on('message', (data) => {
|
|
|
|
svr.send(data)
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
cli.on('close', (code) => {
|
|
|
|
try { svr.close(code); } catch(err) { svr.close(1006) };
|
|
|
|
});
|
|
|
|
svr.on('close', (code) => {
|
|
|
|
try { cli.close(code); } catch(err) { cli.close(1006) };
|
|
|
|
});
|
|
|
|
cli.on('error', (err) => {
|
|
|
|
try { svr.close(1001); } catch(err) { svr.close(1006) };
|
|
|
|
});
|
|
|
|
svr.on('error', (err) => {
|
|
|
|
try { cli.close(1001); } catch(err) { cli.close(1006) };
|
|
|
|
});
|
|
|
|
} catch(err) { cli.close(1001); }
|
|
});
|
|
}
|