diff --git a/app.js b/app.js index eb100a63..489c4456 100644 --- a/app.js +++ b/app.js @@ -572,4 +572,4 @@ app.use(async (req, res, next) => { res.redirect(307, config.prefix + btoa(req.session.url) + req.url) } else return next(); -}); +}); \ No newline at end of file diff --git a/public/assets/css/styles.css b/public/assets/css/styles.css index 1576453a..371f1d0f 100644 --- a/public/assets/css/styles.css +++ b/public/assets/css/styles.css @@ -35,6 +35,21 @@ section { user-select: none; } +#frame { + border: 0; + width: 100%; + height: 100%; + top: 0; + left: 0; + right: 0; + bottom: 0; + position: fixed; + z-index: 10; + background-color: #fff; + user-select: none; +} + + /* Button Hover */ diff --git a/public/expr/albp.js b/public/expr/albp.js deleted file mode 100644 index f93187b0..00000000 --- a/public/expr/albp.js +++ /dev/null @@ -1,30 +0,0 @@ -function $(id) { - return document.getElementById(id); -}; - -//AL -// $('al').onclick = function() { -// document.cookie = '__alloy_cookie_auth=yes; expires=' + (Date.now() + 259200) + '; SameSite=None; domain=.' + auth + '; path=/; Secure;'; -// return false; -//}; - -$('al').onclick = function() { - var url = $('url').value; - var det = document.domain; - var domain = det.replace('www.', '').split(/[/?#]/)[0]; - const origin = btoa(url) - window.location.href = "https://" + domain + "/fetch/utils/?url=" + origin; - document.cookie = '__alloy_cookie_auth=yes; expires=' + (Date.now() + 259200) + '; SameSite=Lax; domain=.' + auth + '; path=/; Secure;'; - return false; -}; - -// Cookie Auth -var host = location.hostname.split('.'); -var auth = location.hostname; -if (host.length == 3) { - auth = `${host[1]}.${host[2]}`; -} - -window.onload = function() { - $('url').focus(); -} \ No newline at end of file diff --git a/public/expr/pmbp.js b/public/expr/pmbp.js index a307a340..d2475db2 100644 --- a/public/expr/pmbp.js +++ b/public/expr/pmbp.js @@ -6,12 +6,12 @@ $('pmprox').onclick = function() { var url = $('url').value; var det = document.domain; var domain = det.replace('www.', '').split(/[/?#]/)[0]; - window.location.href = "https://c." + domain + "/prox?url=" + url; + document.getElementById("frame").src = "https://c." + domain + "/prox?url=" + url; document.cookie = 'oldsmobile=1; expires=' + (Date.now() + 259200) + '; SameSite=Lax; domain=.' + auth + '; path=/; Secure;'; + document.getElementById("frame").style.visiblity = "visible"; return false; }; - // Cookie Auth var host = location.hostname.split('.'); var auth = location.hostname; @@ -21,4 +21,6 @@ if (host.length == 3) { window.onload = function() { $('url').focus(); +} +$('url').focus(); } \ No newline at end of file diff --git a/public/expr/surf.js b/public/expr/surf.js new file mode 100644 index 00000000..6581cb53 --- /dev/null +++ b/public/expr/surf.js @@ -0,0 +1,156 @@ +$ = e => document.getElementById(e) || []; + +//AL +$('al').onclick = function() { + var frame = document.getElementById("frame"); + var url = $('url').value; + var det = document.domain; + var domain = det.replace('www.', '').split(/[/?#]/)[0]; + const origin = btoa(url) + frame.src = "https://" + domain + "/fetch/utils/?url=" + origin; + frame.style['visibility'] = "visible"; + document.cookie = '__alloy_cookie_auth=yes; expires=' + (Date.now() + 259200) + '; SameSite=Lax; domain=.' + auth + '; path=/; Secure;'; + return false; +}; + +$('albp').onclick = function() { + var frame = document.getElementById("frame"); + var url = $('url').value; + var det = document.domain; + var domain = det.replace('www.', '').split(/[/?#]/)[0]; + const origin = btoa(url) + window.location.href = "https://" + domain + "/fetch/utils/?url=" + origin; + document.cookie = '__alloy_cookie_auth=yes; expires=' + (Date.now() + 259200) + '; SameSite=Lax; domain=.' + auth + '; path=/; Secure;'; + return false; +}; + +//NU +$('nprox').onclick = function() { + var frame = document.getElementById("frame"); + var url = $('url').value; + var det = document.domain; + var domain = det.replace('www.', '').split(/[/?#]/)[0]; + frame.src = "https://a." + domain + "/call/" + url; + frame.style['visibility'] = "visible"; + document.cookie = 'nu_auth=yes; expires=' + (Date.now() + 259200) + '; SameSite=None; domain=.' + auth + '; path=/; Secure;'; + return false; +}; +$('nproxbp').onclick = function() { + var frame = document.getElementById("frame"); + var url = $('url').value; + var det = document.domain; + var domain = det.replace('www.', '').split(/[/?#]/)[0]; + window.location.href = "https://a." + domain + "/call/" + url; + document.cookie = 'nu_auth=yes; expires=' + (Date.now() + 259200) + '; SameSite=None; domain=.' + auth + '; path=/; Secure;'; + return false; +}; +//PD +$('pdprox').onclick = function() { + var frame = document.getElementById("frame"); + var url = $('url').value; + var det = document.domain; + var domain = det.replace('www.', '').split(/[/?#]/)[0]; + frame.src = "https://c." + domain + "/" + url; + frame.style['visibility'] = "visible"; + document.cookie = 'oldsmobile=owo; expires=' + (Date.now() + 259200) + '; SameSite=Lax; domain=.' + auth + '; path=/; Secure;'; + return false; +}; +$('pdproxbp').onclick = function() { + var frame = document.getElementById("frame"); + var url = $('url').value; + var det = document.domain; + var domain = det.replace('www.', '').split(/[/?#]/)[0]; + window.location.href = "https://c." + domain + "/" + url; + document.cookie = 'oldsmobile=owo; expires=' + (Date.now() + 259200) + '; SameSite=Lax; domain=.' + auth + '; path=/; Secure;'; + return false; +}; +//PM Load +$('pmprox').onclick = function() { + var frame = document.getElementById("frame"); + var url = $('url').value; + var det = document.domain; + var domain = det.replace('www.', '').split(/[/?#]/)[0]; + document.getElementById("frame").src = "https://c." + domain + "/prox?url=" + url; + frame.style['visibility'] = "visible"; + document.cookie = 'oldsmobile=1; expires=' + (Date.now() + 259200) + '; SameSite=Lax; domain=.' + auth + '; path=/; Secure;'; + document.getElementById("frame").style.visiblity = "visible"; + return false; +}; +$('pmproxbp').onclick = function() { + var frame = document.getElementById("frame"); + var url = $('url').value; + var det = document.domain; + var domain = det.replace('www.', '').split(/[/?#]/)[0]; + window.location.href = "https://c." + domain + "/prox?url=" + url; + document.cookie = 'oldsmobile=1; expires=' + (Date.now() + 259200) + '; SameSite=Lax; domain=.' + auth + '; path=/; Secure;'; + document.getElementById("frame").style.visiblity = "visible"; + return false; +}; +//YT +$('ytbtn').onclick = function() { + var frame = document.getElementById("frame"); + var yt = `https://youtube.com`; + var det = document.domain; + var domain = det.replace('www.', '').split(/[/?#]/)[0]; + const origin = btoa(yt) + frame.src = "https://" + domain + "/fetch/utils/?url=" + origin; + frame.style['visibility'] = "visible"; + document.cookie = '__alloy_cookie_auth=yes; expires=' + (Date.now() + 259200) + '; SameSite=Lax; domain=.' + auth + '; path=/; Secure;'; + return false; +}; +$('ytbtnm').onclick = function() { + var frame = document.getElementById("frame"); + var yt = `https://m.youtube.com`; + var det = document.domain; + var domain = det.replace('www.', '').split(/[/?#]/)[0]; + const origin = btoa(yt) + frame.src = "https://" + domain + "/fetch/utils/?url=" + origin; + frame.style['visibility'] = "visible"; + document.cookie = '__alloy_cookie_auth=yes; expires=' + (Date.now() + 259200) + '; SameSite=Lax; domain=.' + auth + '; path=/; Secure;'; + return false; +}; +$('ytbp').onclick = function() { + var frame = document.getElementById("frame"); + var yt = `https://youtube.com`; + var det = document.domain; + var domain = det.replace('www.', '').split(/[/?#]/)[0]; + const origin = btoa(yt) + window.location.href = "https://" + domain + "/fetch/utils/?url=" + origin; + document.cookie = '__alloy_cookie_auth=yes; expires=' + (Date.now() + 259200) + '; SameSite=Lax; domain=.' + auth + '; path=/; Secure;'; + return false; +}; + +//D +$('dbtn').onclick = function() { + var frame = document.getElementById("frame"); + var d = `https://discord.com/login`; + var det = document.domain; + var domain = det.replace('www.', '').split(/[/?#]/)[0]; + const origin = btoa(d) + frame.src = "https://" + domain + "/fetch/utils/?url=" + origin; + frame.style['visibility'] = "visible"; + document.cookie = '__alloy_cookie_auth=yes; expires=' + (Date.now() + 259200) + '; SameSite=Lax; domain=.' + auth + '; path=/; Secure;'; + return false; +}; +$('dbp').onclick = function() { + var frame = document.getElementById("frame"); + var d = `https://discord.com/login`; + var det = document.domain; + var domain = det.replace('www.', '').split(/[/?#]/)[0]; + const origin = btoa(d) + window.location.href = "https://" + domain + "/fetch/utils/?url=" + origin; + document.cookie = '__alloy_cookie_auth=yes; expires=' + (Date.now() + 259200) + '; SameSite=Lax; domain=.' + auth + '; path=/; Secure;'; + return false; +}; + + +// Cookie Auth +var host = location.hostname.split('.'); +var auth = location.hostname; +if (host.length == 3) { + auth = `${host[1]}.${host[2]}`; +} + +window.onload = function() { + $('url').focus(); +} \ No newline at end of file diff --git a/public/info.html b/public/info.html index 5fa290bb..00d4e2b8 100644 --- a/public/info.html +++ b/public/info.html @@ -24,6 +24,17 @@ + @@ -81,76 +92,247 @@
- -A website that can be used to bypass web filters; both extension and firewall. This is the public documentation for Holy Unblocker, a rather fancy website with some cool dynamic backgrounds while also focusing with detail put into the design and mechanics overall. Also has cool features like custom Tab Cloaks and with more to come. Works on a large number of sites including YouTube (Full Quality Support), Discord, CoolMathGames and more! Be sure to check the various branches as I update Holy Unblocker often with open access to yet to be released versions.
+Official Site: https://www.holyubofficial.net
+Be sure to join Titanium Network's Discord for more official site links: https://discord.com/invite/tgT48PH
+ +Either use the button above to deploy to Heroku or do the below:
+git clone https://github.com/QuiteAFancyEmerald/HolyUnblockerPublic.git
+
+cd HolyUnblockerPublic
+
+npm install
+
+npm start
+
+ The default place for the proxy when its started is http://localhost:8081
but you can change it if needed in config.json
This website has been hosted locally on Alloy Proxy. More more information go to the Alloy Proxy repo below.
+index.html
: The official homepage of the site.surf.html
: Surf Freely page, page offers to be redirected to either Alloy or Node.alloy.html
: Alloy Proxy page, configured as recommended with Alloy Proxy.node.html
: Links to a subdomain for Node Unblocker. I left it in just in case you would like to setup the site differently.pmprox.html
: Links to a subdomain for Powermouse. I left it in just in case you would like to setup the site differently.gtools.html
: Games page, help from @BinBashBanana and @kinglalu.info.html
: WIP Documentation.discordhub.html
: Hub for the discord proxy and its links.discordprox.html
: Links to a discord proxied through Alloy.pydodge.html
: Links to a subdomain with PyDodge B. Created by OlyB from a modified Via Proxy.flash.html
: Games page for flash games, credits given to @BinBashBanana and Titanium Network for its assets.icons.html
: Information regarding Settings Menu page. Added this in for standard users.terms.html
: Terms of Services, AUP and Privacy Policy page.gba.html
: Locally hosted Gameboy Emulator.krunker.html
: An iframe version of Krunker with keyword changes. Can be removed if not needed.youtube.html
: An proxied version of Youtube running off of the locally hosted Alloy Proxy.ythub.html
: Page linking proxied Youtube.ytmobile.html
: Page linking to a proxied YouTube for mobile users.chatbox.html
: Links to an externally hosted Chatbox.bookmarklets.html
: Page for Bookmarklets./public/
: The physical site base of Holy Unblocker goes here. Do not delete or modify /utils
as its needed for Alloy./public
/pages/
is used for important pages for the site./expr/
is used for important proxy scripts./archive/
and /css
is used for game related assets and pages./assets/
is used for various assets for CSS, JS and Bootstrap./vibeOS/
is used for vibeOS, an in-browser OS enviroment./expr
[Proxy Initial]bp.js
is used for future implementation of Cookie Auth and navigation to external proxies. Must be located in the
+
+ tag.[Proxy Initial]load.js
is used for initializing the bp script(s). Must be located in the <head>
tag.d.html
is used for a locally running Discord proxy along with dbp.js
auth.js
You will first want to host your proxies locally or externally.
+Out of the list of hosting providers Heroku and NodeClusters rank first as a preference. You may also self-host. Currently at this time Azure is used to host the official Holy Unblocker sites.
+After you have selected a decent VPS, use Cloudflare for the DNS records for both the site and the subdomains for the proxies.
+This is an example of DNS records involving Heroku. Self-hosting will require A records
preferably.
+
a.deepsoil.ml
is being used for Node Unblocker.p.deepsoil.ml
is being used for Powermouse.pd.deepsoil.ml
is being used for PyDodge B.cdn.deepsoil.ml
is being used for a private Alloy host on the official sites.As stated previously, Holy Unblocker is hosted locally with Alloy.
+So use Heroku to host. I personally favor it as a free choice.
+Make sure you connect your Heroku app to your GitHub and enable automatic deploys. Will make things easier. :)
+For beginners, Freenom is a good provider for obtaining domains for free. However the catch is that you can only use properly "Freenom" domains for free being .cf, .ml, .gq, ga and .tk. However these can be blocked rather easily.
+www.youdomainhere.cf
and yourdomainhere.cf
with .cf being interchangeable with other Freedom domain names..net
domain normally costs around $10. On Porkbun for the first year it costs $3 so its definitely a deal.Make sure they are CNAME although A records also work and try to follow this structure:
+Type | Name | Target
+CNAME | www | yourherokutargethere.herokudns.com
+ CNAME | @ | yourherokudnstargethere.herokudns.com
Below are if you want external proxies also with your site:
+CNAME | a | yournodeinstance.herokudns.com
+ CNAME | pd | yourpydodgebinstancehere.herokudns.com
+ CNAME | p | yourpowermouseinstancehere.herokudns.com
Make sure HTTPS is forced and have SSL set to Flexible for Heroku. Otherwise you can have SSL set to Full.
+Preferably if you have your own device use Visual Studio Code. Pretty much the best option you can get but obviously this is an opinion. Also make sure you have Node.JS installed on your machine.
+Not going to go too in depth with this part but first fork this repository. The clone it locally through a Terminal of some sort depending on what OS you are on. Make sure you navigate to the folder you want to set this up in.
+git clone https://github.com/QuiteAFancyEmerald/HolyUnblockerPublic.git
+
+cd HolyUnblockerPublic
+
+npm install
+
+ Now simply add the folder you cloned this repo in in VSC. Then run npm install
. I recommend that if you are releasing this publically on GitHub that you add a .gitignore
in your root directory with the following exclusions:
node_modules
Now you have your following workspace environment setup. To deploy the following workspace you just created you will need to look up depending on your hosting provider.
+For an online IDE that you can use on your school computer and/or chromebook use GitPod. Basically the equivalent of Visual Studio Code but with in-browser support.
+https://gitpod.io/
https://gitpod.io#https://github.com/YourNameHere/HolyUnblockerPublic/
Use the same steps above by running npm install
in your repository and adding a .gitignore
in your root directory specifying to exclude node_modules
.
This project uses Alloy Proxy, Node Unblocker, Powermouse and PyDodge which are linked below. Credits also given to Titanium Network and all it's developers as this project would not be possible without them. View the official website for more detail. :)
+Thanks.
+