epoxy works but everything else is womp womp for now

This commit is contained in:
wearrrrr 2024-03-08 10:08:05 -06:00
parent c8f4ceff9c
commit 9559f0986e
10 changed files with 103 additions and 41 deletions

View file

@ -1,6 +1,7 @@
import { uvPath } from "@titaniumnetwork-dev/ultraviolet";
import { epoxyPath } from "@mercuryworkshop/epoxy-transport";
import { baremuxPath } from "@mercuryworkshop/bare-mux";
import { libcurlPath } from "@mercuryworkshop/libcurl-transport";
import { createBareServer } from "@tomphttp/bare-server-node";
import express from "express";
import { createServer } from "http";
@ -16,7 +17,7 @@ import wisp from "wisp-server-node";
dotenv.config();
const LICENSE_SERVER_URL = "https://license.mercurywork.shop/validate?license=";
const whiteListedDomains = ["aluu.xyz"]; // Add any public domains you have here
const whiteListedDomains = ["aluu.xyz", "localhost:3000"]; // Add any public domains you have here
const failureFile = fs.readFileSync("Checkfailed.html", "utf8");
if (!existsSync("./dist")) build();
@ -73,15 +74,15 @@ async function MasqFail(req, res) {
// Woooooo masqr yayyyy (said no one)
// uncomment for masqr
/* app.use(async (req, res, next) => {
app.use(async (req, res, next) => {
if (req.headers.host && whiteListedDomains.includes(req.headers.host)) {
next();
return;
}
if (req.url.includes("/bare/")) { // replace this with your bare endpoint
// set this to your bare endpoint
if (req.url.includes("/bare/")) {
next();
return;
// Bypass for UV and other bares
}
const authheader = req.headers.authorization;
@ -121,7 +122,7 @@ async function MasqFail(req, res) {
MasqFail(req, res)
return;
}) */
})
app.use(express.static(path.join(process.cwd(), "static")));
@ -129,6 +130,7 @@ app.use(express.static(path.join(process.cwd(), "build")));
app.use("/uv/", express.static(uvPath));
app.use("/epoxy/", express.static(epoxyPath));
app.use("/baremux/", express.static(baremuxPath));
app.use("/libcurl/", express.static(libcurlPath));
app.use(express.json());
app.use(
express.urlencoded({

41
package-lock.json generated
View file

@ -11,9 +11,11 @@
"@astrojs/node": "^8.2.0",
"@mercuryworkshop/bare-mux": "^1.0.4",
"@mercuryworkshop/epoxy-transport": "^1.0.2",
"@mercuryworkshop/libcurl-transport": "^1.1.0",
"@nebula-services/ultraviolet": "^1.0.1-1.patch.7",
"@titaniumnetwork-dev/ultraviolet": "^3.0.0",
"@tomphttp/bare-server-node": "^2.0.1",
"@tomphttp/bare-client": "^2.2.0-alpha",
"@tomphttp/bare-server-node": "^2.0.3",
"astro": "^4.4.1",
"chalk": "^5.3.0",
"compression": "^1.7.4",
@ -963,6 +965,19 @@
"ws": "8.16.0"
}
},
"node_modules/@mercuryworkshop/libcurl-transport": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@mercuryworkshop/libcurl-transport/-/libcurl-transport-1.1.0.tgz",
"integrity": "sha512-332LEbSI19dJJa7TQ+A9ODUUFITh0t/ozD2QDG/OL7x0ESKYHkKUjoY7ZFQTdrFH7alHnjNqj0yyuKzYoWH8Mw==",
"dependencies": {
"esbuild-plugin-umd-wrapper": "^2.0.0",
"libcurl.js": "^0.4.1",
"rollup": "^4.12.0",
"rollup-plugin-node-resolve": "^5.2.0",
"rollup-plugin-typescript2": "^0.36.0",
"ws": "8.16.0"
}
},
"node_modules/@nebula-services/bare-client": {
"version": "1.1.2-beta.3-patch.1",
"resolved": "https://registry.npmjs.org/@nebula-services/bare-client/-/bare-client-1.1.2-beta.3-patch.1.tgz",
@ -1332,17 +1347,21 @@
"uuid": "dist/bin/uuid"
}
},
"node_modules/@tomphttp/bare-client": {
"version": "2.2.0-alpha",
"resolved": "https://registry.npmjs.org/@tomphttp/bare-client/-/bare-client-2.2.0-alpha.tgz",
"integrity": "sha512-xhcflOpwr92tkpp8SoDhB3nK3LHMBIjx+vgow37XobQew2k0/mXSxmaU7BsDFpOIa1CcLCEsR8gWn0v7Cy9+7Q=="
},
"node_modules/@tomphttp/bare-server-node": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@tomphttp/bare-server-node/-/bare-server-node-2.0.1.tgz",
"integrity": "sha512-L42TC/AldYRFBRZSxhkI0FC5TL8EC/NAsepNC/cWYTTiHQJ7mGg/vdTqNz8ShTYHr6LTHYkuD3/81nhX55SYtA==",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@tomphttp/bare-server-node/-/bare-server-node-2.0.3.tgz",
"integrity": "sha512-IGzZspDwzto+oPsvlV99OALJKH3X1nRWnpBE8EY6nrqu5I83xw3uSUacEdHNnW4rXG0IQ8vZwMH87VOMoArJ3A==",
"dependencies": {
"async-exit-hook": "^2.0.1",
"commander": "^10.0.1",
"dotenv": "^16.0.3",
"headers-polyfill": "^3.1.2",
"http-errors": "^2.0.0",
"ipaddr.js": "^2.0.1",
"ipaddr.js": "^2.1.0",
"source-map-support": "^0.5.21",
"ws": "^8.13.0"
},
@ -3780,11 +3799,6 @@
"url": "https://opencollective.com/unified"
}
},
"node_modules/headers-polyfill": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.3.0.tgz",
"integrity": "sha512-5e57etwBpNcDc0b6KCVWEh/Ro063OxPvzVimUdM0/tsYM/T7Hfy3kknIGj78SFTOhNd8AZY41U8mOHoO4LzmIQ=="
},
"node_modules/html-escaper": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz",
@ -4267,6 +4281,11 @@
"node": ">=6"
}
},
"node_modules/libcurl.js": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/libcurl.js/-/libcurl.js-0.4.2.tgz",
"integrity": "sha512-WuL2EgeYVuSsHFeJhpq83pOMX8+ei1E4Vpym7SKz6vPvuOEK9TBDCZRXDN/zr9o4T9UIy0FXxwpIEyHvSBNGmA=="
},
"node_modules/load-yaml-file": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz",

View file

@ -12,9 +12,11 @@
"@astrojs/node": "^8.2.0",
"@mercuryworkshop/bare-mux": "^1.0.4",
"@mercuryworkshop/epoxy-transport": "^1.0.2",
"@mercuryworkshop/libcurl-transport": "^1.1.0",
"@nebula-services/ultraviolet": "^1.0.1-1.patch.7",
"@titaniumnetwork-dev/ultraviolet": "^3.0.0",
"@tomphttp/bare-server-node": "^2.0.1",
"@tomphttp/bare-client": "^2.2.0-alpha",
"@tomphttp/bare-server-node": "^2.0.3",
"astro": "^4.4.1",
"chalk": "^5.3.0",
"compression": "^1.7.4",

View file

@ -1,12 +1,11 @@
---
const { buttonNameDefault, dropdownList, id } = Astro.props;
const { buttonNameDefault, dropdownList, id, localStorageKey } = Astro.props;
---
<div class="dropdown">
<button id={id} class="dropdown-toggle" type="button" data-toggle="dropdown">
<button data-local-storage-key={localStorageKey} id={id} class="dropdown-toggle" type="button" data-toggle="dropdown">
{buttonNameDefault}
<span class="caret"></span></button
>
<span class="caret"></span></button>
<ul class="dropdown-menu" id={id + "-menu"}>
{
dropdownList.map((item: any) => {

View file

@ -37,6 +37,7 @@ const t = useTranslations(lang);
z-index: 10;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
box-shadow: -2px 5px 10px 0px var(--accent-color);
}
.left,

View file

@ -25,6 +25,12 @@ const openPageWith = [
{ name: "About:Blank", value: "about:blank" },
{ name: t("settings.proxy.openPageWith.newTab"), value: "newTab" },
];
const transportsList = [
{ name: "Bare", value: "BareMod.BareClient" },
{ name: "Epoxy", value: "EpxMod.EpoxyClient" },
{ name: "Libcurl", value: "CurlMod.LibcurlClient" }
]
---
<div class="settings-container">
@ -33,7 +39,7 @@ const openPageWith = [
<Dropdown
buttonNameDefault="Ultraviolet"
dropdownList={proxyList}
,
localStorageKey="alu__selectedProxy"
id="dropdown__selected-proxy"
/>
</div>
@ -42,7 +48,7 @@ const openPageWith = [
<Dropdown
buttonNameDefault="Google"
dropdownList={searchEngineList}
,
localStorageKey="alu__searchEngine"
id="dropdown__search-engine"
/>
</div>
@ -51,10 +57,19 @@ const openPageWith = [
<Dropdown
buttonNameDefault={t("settings.proxy.openPageWith.embed")}
dropdownList={openPageWith}
,
localStorageKey="alu__selectedOpenWith"
id="dropdown__open-with"
/>
</div>
<div class="setting__transport">
<label class="setting-label">{t("settings.proxy.selectedTransport")}</label>
<Dropdown
buttonNameDefault="Bare"
dropdownList={transportsList}
localStorageKey="alu__selectedTransport"
id="dropdown__transport"
/>
</div>
<div class="setting__bare-url">
<label class="setting-label" for="bare-url-input">{t("settings.proxy.bareURL")}</label>
<Input inputName="bare-url" height="50px" />

View file

@ -297,6 +297,7 @@ const t = useTranslations(lang);
let selectedProxyDropdown = document.getElementById("dropdown__selected-proxy-menu");
let searchEngineDropdown = document.getElementById("dropdown__search-engine-menu");
let openWithDropdown = document.getElementById("dropdown__open-with-menu");
let currentTransportDropdown = document.getElementById("dropdown__transport-menu");
let bareUrlInput = document.getElementById("bare-url-input");
let searxngUrlInput = document.getElementById("searxng-url-input");
let savedSearxngUrl = localStorage.getItem("alu__searxngUrl");
@ -308,22 +309,31 @@ const t = useTranslations(lang);
// Proxy settings
applyInputListeners(bareUrlInput, "alu__bareUrl");
applyInputListeners(searxngUrlInput, "alu__searxngUrl");
[selectedProxyDropdown, openWithDropdown, currentTransportDropdown].forEach((dropdown) => {
let dropdownButton = document.getElementById(dropdown.id.replace("-menu", ""))
console.log(dropdownButton)
applyDropdownEventListeners(
dropdown,
dropdownButton.id,
dropdownButton.dataset.localStorageKey
);
});
applyDropdownEventListeners(
searchEngineDropdown,
"dropdown__search-engine",
"alu__search_engine",
"alu__searchEngine",
checkSearxng
);
applyDropdownEventListeners(
selectedProxyDropdown,
"dropdown__selected-proxy",
"alu__selectedProxy"
);
applyDropdownEventListeners(
openWithDropdown,
"dropdown__open-with",
"alu__selectedOpenWith"
);
// applyDropdownEventListeners(
// selectedProxyDropdown,
// "dropdown__selected-proxy",
// "alu__selectedProxy"
// );
// applyDropdownEventListeners(
// openWithDropdown,
// "dropdown__open-with",
// "alu__selectedOpenWith"
// );
if (localStorage.getItem("bareUrl")) {
bareUrlInput.value = localStorage.getItem("bareUrl");
} else {
@ -339,8 +349,8 @@ const t = useTranslations(lang);
function checkSearxng() {
// This function checks if the "searxng" option was clicked, display an additional option if so.
if (localStorage.getItem("alu__search_engine")) {
if (JSON.parse(localStorage.getItem("alu__search_engine")).value.toLowerCase() == "searx") {
if (localStorage.getItem("alu__searchEngine")) {
if (JSON.parse(localStorage.getItem("alu__searchEngine")).value.toLowerCase() == "searx") {
document.getElementsByClassName("setting__searxng-url")[0].style.opacity = "1";
} else {
document.getElementsByClassName("setting__searxng-url")[0].style.opacity = "0";
@ -461,7 +471,7 @@ const t = useTranslations(lang);
position: relative;
gap: 25px;
}
@media (max-width: 880px) {
@media (max-width: 1116px) {
.popup {
flex-direction: column;
min-height: 80%;
@ -517,7 +527,7 @@ const t = useTranslations(lang);
height: calc(50% - 72px);
border-radius: 0 32px 0 0;
}
@media (min-width: 880px) {
@media (min-width: 1116px) {
#setting-tab-proxy:checked ~ .marker {
transform: translateY(0%);
}

View file

@ -3,12 +3,19 @@
const wispURLDefault =
(location.protocol === "https:" ? "wss://" : "ws://") + location.host + "/wisp/";
class TransportManager {
private transport = localStorage.getItem("alu__currentTransport") || "EpxMod.EpoxyClient";
private transport = "EpxMod.EpoxyClient";
constructor(transport?: string) {
if (transport) {
this.transport = transport;
}
if (localStorage.getItem("alu__selectedTransport") != null && !transport) {
this.transport = JSON.parse(localStorage.getItem("alu__selectedTransport")!).value;
}
if (localStorage.getItem("alu__selectedTransport") == null) {
// Set the default transport for the next reload.
localStorage.setItem("alu__selectedTransport", JSON.stringify({ value: this.transport }));
}
}
getTransport() {
return this.transport;
@ -20,6 +27,6 @@
}
}
const TransportMgr = new TransportManager();
registerRemoteListener(navigator.serviceWorker.controller);
registerRemoteListener(navigator.serviceWorker.controller!);
TransportMgr.setTransport(TransportMgr.getTransport());
</script>

View file

@ -40,6 +40,7 @@
"settings.proxy.openPageWith": "Open With",
"settings.proxy.openPageWith.embed": "Embed",
"settings.proxy.openPageWith.newTab": "New Tab",
"settings.proxy.selectedTransport": "Transport",
"settings.proxy.searxngURL": "Searx URL",
"settings.proxy.bareURL": "Bare URL",

View file

@ -15,6 +15,12 @@ export function getStaticPaths() {
<Layout title={t("pages.home")}>
<script src="/baremux/bare.cjs" is:inline></script>
<script src="/epoxy/index.js" is:inline></script>
<script src="/libcurl/index.cjs" is:inline></script>
<script>
import { createBareClient } from '@tomphttp/bare-client';
createBareClient('http://localhost:8080/bare/');
</script>
<TransportManager />
<div class="main-content">
<h1 class="title-text">{t("menu.welcome")}</h1>