This commit is contained in:
QuiteAFancyEmerald 2024-07-07 21:31:55 -07:00
parent 2455cdcd2f
commit d359819ba3
6 changed files with 317 additions and 292 deletions

View file

@ -1,3 +1,9 @@
/* -----------------------------------------------
/* Authors: QuiteAFancyEmerald
/* GNU Affero General Public License v3.0: https://www.gnu.org/licenses/agpl-3.0.en.html
/* Card Shimmer Mouse Follow Script
/* ----------------------------------------------- */
const shimmerEffects = document.querySelectorAll(".box-card"); const shimmerEffects = document.querySelectorAll(".box-card");

View file

@ -1,49 +1,268 @@
/* ----------------------------------------------- /* -----------------------------------------------
/* Authors: QuiteAFancyEmerald and OlyB /* Authors: QuiteAFancyEmerald, Yoct, and OlyB
/* MIT license: http://opensource.org/licenses/MIT /* GNU Affero General Public License v3.0: https://www.gnu.org/licenses/agpl-3.0.en.html
/* Common functions /* MAIN Holy Unblocker LTS Common Script
/* ----------------------------------------------- */ /* ----------------------------------------------- */
function tryGetElement(id) { function tryGetElement(id) {
return document.getElementById(id) || {}; return document.getElementById(id) || {};
} }
/** /**
* Get the preferred apex domain name. * Get the preferred apex domain name.
* Not exactly apex, as any subdomain other than those listed will be ignored. * Not exactly apex, as any subdomain other than those listed will be ignored.
*/ **/
function getDomain() { function getDomain() {
return location.host.replace(/^(www|edu|cooking|beta)\./, ""); return location.host.replace(/^(www|edu|cooking|beta)\./, "");
} }
// nolag = no external js (arc widget, an-lytics, etc.) /* STEALTH FRAME */
function goFrame(url, nolag) { function goFrame(url) {
localStorage.setItem("huframesrc", url); localStorage.setItem("huframesrc", url);
window.location.href = nolag ? "?s&nolag" : "?s"; window.location.href = "?s";
} }
function goToUrl(url, stealth, nolag) { function goToUrl(url, stealth, nolag) {
if (stealth) { if (stealth) {
goFrame(url, nolag); goFrame(url, nolag);
} else { } else {
window.location.href = url; window.location.href = url;
} }
} }
/* COOKIE AUTH DEMO */
function setAuthCookie(s, lax) { function setAuthCookie(s, lax) {
document.cookie = s + "; expires=" + (Date.now() + 259200) + "; SameSite=" + (lax ? "Lax" : "None") + "; domain=." + getDomain() + "; path=/; Secure;"; document.cookie =
s +
"; expires=" +
(Date.now() + 259200) +
"; SameSite=" +
(lax ? "Lax" : "None") +
"; domain=." +
getDomain() +
"; path=/; Secure;";
} }
const sx = 'bing.com' + '/search?q='; /* OMNIBOX */
const sx = "bing.com" + "/search?q=";
function omnibox(url) { function omnibox(url) {
if (url.substring(0, 4) == "http") { if (url.substring(0, 4) == "http") {
return url; return url;
} else if (url.includes("." || "")) { } else if (url.includes("." || "")) {
return "https://" + url; return "https://" + url;
} else { } else {
return "https://" + sx + url; return "https://" + sx + url;
}
}
function uvUrl(url) {
return (
location.origin + __uv$config.prefix + __uv$config.encodeUrl(omnibox(url))
);
}
/* RAMMERHEAD CONFIGURATION */
function search(input, template) {
try {
// input is a valid URL:
// eg: https://example.com, https://example.com/test?q=param
return new URL(input).toString();
} catch (err) {
// input was not a valid URL
}
try {
// input is a valid URL when http:// is added to the start:
// eg: example.com, https://example.com/test?q=param
const url = new URL(`http://${input}`);
// only if the hostname has a TLD/subdomain
if (url.hostname.includes(".")) return url.toString();
} catch (err) {
// input was not valid URL
}
return template.replace("%s", encodeURIComponent(input));
}
async function RammerheadEncode(baseUrl) {
// Hellhead
const mod = (n, m) => ((n % m) + m) % m;
const baseDictionary =
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~-";
const shuffledIndicator = "_rhs";
const generateDictionary = function () {
let str = "";
const split = baseDictionary.split("");
while (split.length > 0) {
str += split.splice(Math.floor(Math.random() * split.length), 1)[0];
} }
return str;
};
class StrShuffler {
constructor(dictionary = generateDictionary()) {
this.dictionary = dictionary;
}
shuffle(str) {
if (str.startsWith(shuffledIndicator)) {
return str;
}
let shuffledStr = "";
for (let i = 0; i < str.length; i++) {
const char = str.charAt(i);
const idx = baseDictionary.indexOf(char);
if (char === "%" && str.length - i >= 3) {
shuffledStr += char;
shuffledStr += str.charAt(++i);
shuffledStr += str.charAt(++i);
} else if (idx === -1) {
shuffledStr += char;
} else {
shuffledStr += this.dictionary.charAt(
mod(idx + i, baseDictionary.length)
);
}
}
return shuffledIndicator + shuffledStr;
}
unshuffle(str) {
if (!str.startsWith(shuffledIndicator)) {
return str;
}
str = str.slice(shuffledIndicator.length);
let unshuffledStr = "";
for (let i = 0; i < str.length; i++) {
const char = str.charAt(i);
const idx = this.dictionary.indexOf(char);
if (char === "%" && str.length - i >= 3) {
unshuffledStr += char;
unshuffledStr += str.charAt(++i);
unshuffledStr += str.charAt(++i);
} else if (idx === -1) {
unshuffledStr += char;
} else {
unshuffledStr += baseDictionary.charAt(
mod(idx - i, baseDictionary.length)
);
}
}
return unshuffledStr;
}
}
function get(url, callback, shush = false) {
var request = new XMLHttpRequest();
request.open("GET", url, true);
request.send();
request.onerror = function () {
if (!shush) console.log("Cannot communicate with the server");
};
request.onload = function () {
if (request.status === 200) {
callback(request.responseText);
} else {
if (!shush)
console.log(
'unexpected server response to not match "200". Server says "' +
request.responseText +
'"'
);
}
};
}
var api = {
newsession(callback) {
get("/newsession", callback);
},
sessionexists(id, callback) {
get("/sessionexists?id=" + encodeURIComponent(id), function (res) {
if (res === "exists") return callback(true);
if (res === "not found") return callback(false);
console.log("unexpected response from server. received" + res);
});
},
shuffleDict(id, callback) {
console.log("Shuffling", id);
get("/api/shuffleDict?id=" + encodeURIComponent(id), function (res) {
callback(JSON.parse(res));
});
},
};
var localStorageKey = "rammerhead_sessionids";
var localStorageKeyDefault = "rammerhead_default_sessionid";
var sessionIdsStore = {
get() {
var rawData = localStorage.getItem(localStorageKey);
if (!rawData) return [];
try {
var data = JSON.parse(rawData);
if (!Array.isArray(data)) throw "getout";
return data;
} catch (e) {
return [];
}
},
set(data) {
if (!data || !Array.isArray(data)) throw new TypeError("must be array");
localStorage.setItem(localStorageKey, JSON.stringify(data));
},
getDefault() {
var sessionId = localStorage.getItem(localStorageKeyDefault);
if (sessionId) {
var data = sessionIdsStore.get();
data.filter(function (e) {
return e.id === sessionId;
});
if (data.length) return data[0];
}
return null;
},
setDefault(id) {
localStorage.setItem(localStorageKeyDefault, id);
},
};
function addSession(id) {
var data = sessionIdsStore.get();
data.unshift({ id: id, createdOn: new Date().toLocaleString() });
sessionIdsStore.set(data);
}
function getSessionId() {
return new Promise((resolve) => {
var id = localStorage.getItem("session-string");
api.sessionexists(id, function (value) {
if (!value) {
console.log("Session validation failed");
api.newsession(function (id) {
addSession(id);
localStorage.setItem("session-string", id);
console.log(id);
console.log("^ new id");
resolve(id);
});
} else {
resolve(id);
}
});
});
}
var ProxyHref;
return getSessionId().then((id) => {
return new Promise((resolve, reject) => {
api.shuffleDict(id, function (shuffleDict) {
var shuffler = new StrShuffler(shuffleDict);
ProxyHref = "/" + id + "/" + shuffler.shuffle(baseUrl);
resolve(ProxyHref);
});
});
});
} }
/* To use: /* To use:
@ -51,263 +270,72 @@ function omnibox(url) {
* *
* Examples: * Examples:
* goProx.corrosion("https://google.com") * goProx.corrosion("https://google.com")
* goProx.womginx("discord.com", true) * goProx.womginx("discord.com", true)
*/ */
function search(input, template) {
try {
// input is a valid URL:
// eg: https://example.com, https://example.com/test?q=param
return new URL(input).toString();
} catch (err) {
// input was not a valid URL
}
try {
// input is a valid URL when http:// is added to the start:
// eg: example.com, https://example.com/test?q=param
const url = new URL(`http://${input}`);
// only if the hostname has a TLD/subdomain
if (url.hostname.includes(".")) return url.toString();
} catch (err) {
// input was not valid URL
}
return template.replace("%s", encodeURIComponent(input));
}
async function RammerheadEncode(baseUrl) {
// Hellhead
const mod = (n, m) => ((n % m) + m) % m;
const baseDictionary =
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~-";
const shuffledIndicator = "_rhs";
const generateDictionary = function () {
let str = "";
const split = baseDictionary.split("");
while (split.length > 0) {
str += split.splice(Math.floor(Math.random() * split.length), 1)[0];
}
return str;
};
class StrShuffler {
constructor(dictionary = generateDictionary()) {
this.dictionary = dictionary;
}
shuffle(str) {
if (str.startsWith(shuffledIndicator)) {
return str;
}
let shuffledStr = "";
for (let i = 0; i < str.length; i++) {
const char = str.charAt(i);
const idx = baseDictionary.indexOf(char);
if (char === "%" && str.length - i >= 3) {
shuffledStr += char;
shuffledStr += str.charAt(++i);
shuffledStr += str.charAt(++i);
} else if (idx === -1) {
shuffledStr += char;
} else {
shuffledStr += this.dictionary.charAt(
mod(idx + i, baseDictionary.length)
);
}
}
return shuffledIndicator + shuffledStr;
}
unshuffle(str) {
if (!str.startsWith(shuffledIndicator)) {
return str;
}
str = str.slice(shuffledIndicator.length);
let unshuffledStr = "";
for (let i = 0; i < str.length; i++) {
const char = str.charAt(i);
const idx = this.dictionary.indexOf(char);
if (char === "%" && str.length - i >= 3) {
unshuffledStr += char;
unshuffledStr += str.charAt(++i);
unshuffledStr += str.charAt(++i);
} else if (idx === -1) {
unshuffledStr += char;
} else {
unshuffledStr += baseDictionary.charAt(
mod(idx - i, baseDictionary.length)
);
}
}
return unshuffledStr;
}
}
function get(url, callback, shush = false) {
var request = new XMLHttpRequest();
request.open("GET", url, true);
request.send();
request.onerror = function () {
if (!shush) console.log("Cannot communicate with the server");
};
request.onload = function () {
if (request.status === 200) {
callback(request.responseText);
} else {
if (!shush)
console.log(
'unexpected server response to not match "200". Server says "' +
request.responseText +
'"'
);
}
};
}
var api = {
newsession(callback) {
get("/newsession", callback);
},
sessionexists(id, callback) {
get("/sessionexists?id=" + encodeURIComponent(id), function (res) {
if (res === "exists") return callback(true);
if (res === "not found") return callback(false);
console.log("unexpected response from server. received" + res);
});
},
shuffleDict(id, callback) {
console.log("Shuffling", id);
get("/api/shuffleDict?id=" + encodeURIComponent(id), function (res) {
callback(JSON.parse(res));
});
}
};
var localStorageKey = "rammerhead_sessionids";
var localStorageKeyDefault = "rammerhead_default_sessionid";
var sessionIdsStore = {
get() {
var rawData = localStorage.getItem(localStorageKey);
if (!rawData) return [];
try {
var data = JSON.parse(rawData);
if (!Array.isArray(data)) throw "getout";
return data;
} catch (e) {
return [];
}
},
set(data) {
if (!data || !Array.isArray(data)) throw new TypeError("must be array");
localStorage.setItem(localStorageKey, JSON.stringify(data));
},
getDefault() {
var sessionId = localStorage.getItem(localStorageKeyDefault);
if (sessionId) {
var data = sessionIdsStore.get();
data.filter(function (e) {
return e.id === sessionId;
});
if (data.length) return data[0];
}
return null;
},
setDefault(id) {
localStorage.setItem(localStorageKeyDefault, id);
}
};
function addSession(id) {
var data = sessionIdsStore.get();
data.unshift({ id: id, createdOn: new Date().toLocaleString() });
sessionIdsStore.set(data);
}
function getSessionId() {
return new Promise((resolve) => {
var id = localStorage.getItem("session-string");
api.sessionexists(id, function (value) {
if (!value) {
console.log("Session validation failed");
api.newsession(function (id) {
addSession(id);
localStorage.setItem("session-string", id);
console.log(id);
console.log("^ new id");
resolve(id);
});
} else {
resolve(id);
}
});
});
}
var ProxyHref;
return getSessionId().then((id) => {
return new Promise((resolve, reject) => {
api.shuffleDict(id, function (shuffleDict) {
var shuffler = new StrShuffler(shuffleDict);
ProxyHref = "/" + id + "/" + shuffler.shuffle(baseUrl);
resolve(ProxyHref);
});
});
});
}
function uvUrl(url) {
return location.origin + __uv$config.prefix + __uv$config.encodeUrl(omnibox(url));
};
window.goProx = { window.goProx = {
// `location.protocol + "//" + getDomain()` more like `location.origin` // `location.protocol + "//" + getDomain()` more like `location.origin`
ultraviolet: function (url, stealth) { ultraviolet: function (url, stealth) {
//setAuthCookie("__cor_auth=1", false); //setAuthCookie("__cor_auth=1", false);
goToUrl(uvUrl(url), stealth); goToUrl(uvUrl(url), stealth);
}, },
rammerhead: async function (url, stealth) { rammerhead: async function (url, stealth) {
goToUrl(location.origin + await RammerheadEncode(omnibox(url)), stealth); goToUrl(location.origin + (await RammerheadEncode(omnibox(url))), stealth);
}, },
searx: function (stealth) { searx: function (stealth) {
goToUrl(location.protocol + "//c." + getDomain() + "/engine/", stealth); goToUrl(location.protocol + "//c." + getDomain() + "/engine/", stealth);
}, },
libreddit: function (stealth) { libreddit: function (stealth) {
goToUrl(location.protocol + "//c." + getDomain(), stealth); goToUrl(location.protocol + "//c." + getDomain(), stealth);
}, },
rnav: function (stealth) { rnav: function (stealth) {
goToUrl(location.protocol + "//client." + getDomain(), stealth); goToUrl(location.protocol + "//c." + getDomain(), stealth);
}, },
osu: function (stealth) { osu: function (stealth) {
goToUrl(location.origin + '/archive/osu', stealth); goToUrl(location.origin + "/archive/osu", stealth);
}, },
mcnow: function (stealth) { mcnow: function (stealth) {
goToUrl(uvUrl('https://now.gg/play/a/10010/b'), stealth); goToUrl(uvUrl("https://now.gg/play/a/10010/b"), stealth);
}, },
glife: function (stealth) { glife: function (stealth) {
goToUrl(uvUrl('https://now.gg/apps/lunime/5767/gacha-life.html'), stealth); goToUrl(uvUrl("https://now.gg/apps/lunime/5767/gacha-life.html"), stealth);
}, },
roblox: function (stealth) { roblox: function (stealth) {
goToUrl(uvUrl('https://now.gg/apps/roblox-corporation/5349/roblox.html'), stealth); goToUrl(
}, uvUrl("https://now.gg/apps/roblox-corporation/5349/roblox.html"),
amongus: function (stealth) { stealth
goToUrl(uvUrl('https://now.gg/apps/innersloth-llc/4047/among-us.html'), stealth); );
}, },
pubg: function (stealth) { amongus: function (stealth) {
goToUrl(uvUrl('https://now.gg/apps/proxima-beta/2609/pubg-mobile-resistance.html'), stealth); goToUrl(
}, uvUrl("https://now.gg/apps/innersloth-llc/4047/among-us.html"),
train: function (stealth) { stealth
goToUrl(uvUrl('https://hby.itch.io/last-train-home'), stealth); );
}, },
village: function (stealth) { pubg: function (stealth) {
goToUrl(uvUrl('https://kwoodhouse.itch.io/village-arsonist'), stealth); goToUrl(
}, uvUrl(
prison: function (stealth) { "https://now.gg/apps/proxima-beta/2609/pubg-mobile-resistance.html"
goToUrl(uvUrl('https://vimlark.itch.io/pick-up-prison'), stealth); ),
}, stealth
rpg: function (stealth) { );
goToUrl(uvUrl('https://alarts.itch.io/die-in-the-dungeon'), stealth); },
}, train: function (stealth) {
speed: function (stealth) { goToUrl(uvUrl("https://hby.itch.io/last-train-home"), stealth);
goToUrl(uvUrl('https://captain4lk.itch.io/what-the-road-brings'), stealth); },
}, village: function (stealth) {
heli: function (stealth) { goToUrl(uvUrl("https://kwoodhouse.itch.io/village-arsonist"), stealth);
goToUrl(uvUrl('https://benjames171.itch.io/helo-storm'), stealth); },
} prison: function (stealth) {
}; goToUrl(uvUrl("https://vimlark.itch.io/pick-up-prison"), stealth);
},
rpg: function (stealth) {
goToUrl(uvUrl("https://alarts.itch.io/die-in-the-dungeon"), stealth);
},
speed: function (stealth) {
goToUrl(uvUrl("https://captain4lk.itch.io/what-the-road-brings"), stealth);
},
heli: function (stealth) {
goToUrl(uvUrl("https://benjames171.itch.io/helo-storm"), stealth);
},
};

View file

@ -1,6 +1,6 @@
/* ----------------------------------------------- /* -----------------------------------------------
/* Authors: OlyB /* Authors: OlyB
/* MIT license: http://opensource.org/licenses/MIT /* GNU Affero General Public License v3.0: https://www.gnu.org/licenses/agpl-3.0.en.html
/* Settings Menu /* Settings Menu
/* ----------------------------------------------- */ /* ----------------------------------------------- */

View file

@ -1,6 +1,6 @@
/* ----------------------------------------------- /* -----------------------------------------------
/* Authors: YÖCTDÖNALD'S, QuiteAFancyEmerald, and OlyB with help from MikeLime /* Authors: YÖCTDÖNALD'S, QuiteAFancyEmerald, and OlyB with help from MikeLime
/* MIT license: http://opensource.org/licenses/MIT /* GNU Affero General Public License v3.0: https://www.gnu.org/licenses/agpl-3.0.en.html
/* Hidden Links /* Hidden Links
/* ----------------------------------------------- */ /* ----------------------------------------------- */

View file

@ -1,6 +1,6 @@
/* ----------------------------------------------- /* -----------------------------------------------
/* Authors: OlyB /* Authors: OlyB
/* MIT license: http://opensource.org/licenses/MIT /* GNU Affero General Public License v3.0: https://www.gnu.org/licenses/agpl-3.0.en.html
/* prSet script /* prSet script
/* ----------------------------------------------- */ /* ----------------------------------------------- */

View file

@ -32,15 +32,6 @@
} }
document.getElementById("frame").src = localStorage.getItem("huframesrc"); document.getElementById("frame").src = localStorage.getItem("huframesrc");
// make arc widget if nolag isn't specified
/*if (!queries.hasOwnProperty("nolag")) {
var arcw = document.createElement("script");
arcw.setAttribute("async", "");
arcw.src = "https://arc.io/widget.min.js#2BzvQ1em";
document.head.appendChild(arcw);
}
*/
</script> </script>
<script src="assets/js/csel.js"></script> <script src="assets/js/csel.js"></script>
</body> </body>