mirror of
https://github.com/QuiteAFancyEmerald/Holy-Unblocker.git
synced 2025-05-12 19:40:02 -04:00
Fixed Errors
This commit is contained in:
parent
c042af6daa
commit
7b0d636db0
2 changed files with 8 additions and 115 deletions
119
app.js
119
app.js
|
@ -2,122 +2,15 @@
|
|||
/* Author : QuiteAFancyEmerald, YÖCTDÖNALD'S and SexyDuceDuce with help from Divide
|
||||
/* MIT license: http://opensource.org/licenses/MIT
|
||||
/* ----------------------------------------------- */
|
||||
|
||||
const alloy = require('alloyproxy'),
|
||||
rewrite = require('alloyproxy/libs/rewriting.js'),
|
||||
char_insert = require('./src/charinsert.js'),
|
||||
path = require('path'),
|
||||
config = require('./config.json'),
|
||||
fs = require('fs'),
|
||||
http = require('http'),
|
||||
https = require('https'),
|
||||
querystring = require('querystring'),
|
||||
express = require('express'),
|
||||
app = express();
|
||||
|
||||
if (!config.prefix.startsWith('/')) config.prefix = '/' + config.prefix;
|
||||
|
||||
if (!config.prefix.endsWith('/')) config.prefix = config.prefix + '/';
|
||||
|
||||
var server, protocol = 'http://';
|
||||
|
||||
server = http.createServer(app);
|
||||
|
||||
btoa = (str) => {
|
||||
str = new Buffer.from(str).toString('base64');
|
||||
return str;
|
||||
};
|
||||
|
||||
atob = (str) => {
|
||||
str = new Buffer.from(str, 'base64').toString('utf-8');
|
||||
return str;
|
||||
};
|
||||
|
||||
const localprox = new alloy({
|
||||
prefix: config.prefix,
|
||||
error: (proxy) => { proxy.res.send(fs.readFileSync('./error.html', { encoding: 'utf8' }).replace('%ERR%', proxy.error.info.message.replace(/</gi, '<‌').replace(/>/gi, '>‌'))); }, // Doing replace functions on "<" and ">" to prevent XSS.
|
||||
const [express, alloy, http, fs, path, char_insert] = [require('express'), require('alloyproxy'), require('http'), require('fs'), require('path'), require('./src/charinsert.js')], [app, config] = [express(), JSON.parse(fs.readFileSync('./config.json', { encoding: 'utf8' }))], server = http.createServer(app), localprox = new alloy({
|
||||
prefix: '/fetch/',
|
||||
error: (proxy) => { proxy.res.send(fs.readFileSync('./views/error.html', { encoding: 'utf8' }).replace('%ERR%', proxy.error.info.message.replace(/</gi, '<‌').replace(/>/gi, '>‌'))); }, // Doing replace functions on "<" and ">" to prevent XSS.
|
||||
request: [],
|
||||
response: [],
|
||||
injection: true,
|
||||
});
|
||||
|
||||
// The main part of the proxy.
|
||||
|
||||
app.use(config.prefix, (req, res, next) => {
|
||||
|
||||
req.url = config.prefix + req.url.slice(1);
|
||||
|
||||
if (config.cookie_auth) {
|
||||
|
||||
if (req.headers['cookie'] && req.headers['cookie'].match(config.cookie_auth)) return localprox.app(req, res, next);
|
||||
|
||||
res.send(fs.readFileSync('./views/error.html', { encoding: 'utf8' }).replace('%ERR%', 'Authorization required.<br>Go back to the main page.<br>-Bot Protection-'));
|
||||
|
||||
res.statusCode = 400;
|
||||
|
||||
} else localprox.app(req, res, next);
|
||||
|
||||
injection: true
|
||||
});
|
||||
|
||||
app.get(config.prefix, (req, res, next) => {
|
||||
|
||||
if (req.query.url) {
|
||||
|
||||
var url = atob(req.query.url);
|
||||
|
||||
if (url.startsWith('//')) url = 'http:' + url;
|
||||
|
||||
if (url.startsWith('https://') || url.startsWith('http://')) { return res.redirect(config.prefix + rewrite.url(url)) }
|
||||
|
||||
else return res.redirect(config.prefix + rewrite.url('http://' + url))
|
||||
|
||||
} else return next();
|
||||
|
||||
});
|
||||
|
||||
//Cookie Auth
|
||||
|
||||
app.post(`/session/`, async(req, res, next) => {
|
||||
|
||||
req.body = await new Promise(resolve => {
|
||||
|
||||
var body = '';
|
||||
|
||||
req.on('data', chunk => body += chunk).on('end', () => {
|
||||
|
||||
try {
|
||||
|
||||
if (body.startsWith('{') && body.endsWith('}')) { resolve(JSON.parse(body)) }
|
||||
|
||||
else {
|
||||
|
||||
resolve(querystring.parse(body));
|
||||
|
||||
};
|
||||
|
||||
} catch(err) { resolve({}) }
|
||||
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
if (req.body.url) {
|
||||
|
||||
if (req.body.url.startsWith('//')) { req.body.url = 'http:' + req.body.url; } else if (req.body.url.startsWith('https://') || req.body.url.startsWith('http://')) { req.body.url = req.body.url } else { req.body.url = 'http://' + req.body.url};
|
||||
|
||||
if (config.cookie_auth) {
|
||||
|
||||
res.set('Set-Cookie', config.cookie_auth + `; path=${config.prefix};`);
|
||||
|
||||
};
|
||||
|
||||
return res.redirect(config.prefix + rewrite.url(req.body.url));
|
||||
|
||||
} else next();
|
||||
|
||||
|
||||
});
|
||||
app.use(localprox.app);
|
||||
|
||||
//Cloudflare Attack Mode Fix
|
||||
|
||||
|
@ -129,6 +22,7 @@ app.post('/', async(req, res) => {
|
|||
});
|
||||
|
||||
//Querystring Navigation
|
||||
|
||||
app.get('/', async(req, res, t) => res.send(fs.readFileSync(path.join(__dirname, 'views', 'pages,index.html,info.html,archive,archive,hidden.html'.split(',')['/,/?in,/?fg,/?rr,/?j'.split(',').indexOf(req.url) + 1], ',surf.html,f.html,run.html,frames,redirects3,proxnav5,nav7'.replace(/,[^,]+/g, e => ([] + e.match(/\D+/)).repeat(+e.match(/\d+/) + 1)).split(',')[t = 'z,fg,rr,k,dd,n,yh,ym,a,b,y,e,d,p,c,f,g,h,i,m,t,x'.split(',').indexOf(req.url.slice(2)) + 1], (t = ',,,,krunker,discordprox,chatbox,ythub,ytmobile,alloy,node,youtube,pydodge,discordhub,pmprox,credits,flash,gtools,games5,icons,gba,terms,bookmarklets'.split(',')[t]) && t + '.html'), 'utf8')));
|
||||
|
||||
app.use(char_insert.static(path.join(__dirname, 'views')));
|
||||
|
@ -137,6 +31,7 @@ localprox.ws(server);
|
|||
|
||||
server.listen(process.env.PORT || config.port);
|
||||
|
||||
|
||||
/*
|
||||
// Easier to read version of app.js. Remove this if you would like an optimized version
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue