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

41
package-lock.json generated
View file

@ -11,9 +11,11 @@
"@astrojs/node": "^8.2.0", "@astrojs/node": "^8.2.0",
"@mercuryworkshop/bare-mux": "^1.0.4", "@mercuryworkshop/bare-mux": "^1.0.4",
"@mercuryworkshop/epoxy-transport": "^1.0.2", "@mercuryworkshop/epoxy-transport": "^1.0.2",
"@mercuryworkshop/libcurl-transport": "^1.1.0",
"@nebula-services/ultraviolet": "^1.0.1-1.patch.7", "@nebula-services/ultraviolet": "^1.0.1-1.patch.7",
"@titaniumnetwork-dev/ultraviolet": "^3.0.0", "@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", "astro": "^4.4.1",
"chalk": "^5.3.0", "chalk": "^5.3.0",
"compression": "^1.7.4", "compression": "^1.7.4",
@ -963,6 +965,19 @@
"ws": "8.16.0" "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": { "node_modules/@nebula-services/bare-client": {
"version": "1.1.2-beta.3-patch.1", "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", "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" "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": { "node_modules/@tomphttp/bare-server-node": {
"version": "2.0.1", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/@tomphttp/bare-server-node/-/bare-server-node-2.0.1.tgz", "resolved": "https://registry.npmjs.org/@tomphttp/bare-server-node/-/bare-server-node-2.0.3.tgz",
"integrity": "sha512-L42TC/AldYRFBRZSxhkI0FC5TL8EC/NAsepNC/cWYTTiHQJ7mGg/vdTqNz8ShTYHr6LTHYkuD3/81nhX55SYtA==", "integrity": "sha512-IGzZspDwzto+oPsvlV99OALJKH3X1nRWnpBE8EY6nrqu5I83xw3uSUacEdHNnW4rXG0IQ8vZwMH87VOMoArJ3A==",
"dependencies": { "dependencies": {
"async-exit-hook": "^2.0.1", "async-exit-hook": "^2.0.1",
"commander": "^10.0.1", "commander": "^10.0.1",
"dotenv": "^16.0.3", "dotenv": "^16.0.3",
"headers-polyfill": "^3.1.2",
"http-errors": "^2.0.0", "http-errors": "^2.0.0",
"ipaddr.js": "^2.0.1", "ipaddr.js": "^2.1.0",
"source-map-support": "^0.5.21", "source-map-support": "^0.5.21",
"ws": "^8.13.0" "ws": "^8.13.0"
}, },
@ -3780,11 +3799,6 @@
"url": "https://opencollective.com/unified" "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": { "node_modules/html-escaper": {
"version": "3.0.3", "version": "3.0.3",
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz",
@ -4267,6 +4281,11 @@
"node": ">=6" "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": { "node_modules/load-yaml-file": {
"version": "0.2.0", "version": "0.2.0",
"resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", "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", "@astrojs/node": "^8.2.0",
"@mercuryworkshop/bare-mux": "^1.0.4", "@mercuryworkshop/bare-mux": "^1.0.4",
"@mercuryworkshop/epoxy-transport": "^1.0.2", "@mercuryworkshop/epoxy-transport": "^1.0.2",
"@mercuryworkshop/libcurl-transport": "^1.1.0",
"@nebula-services/ultraviolet": "^1.0.1-1.patch.7", "@nebula-services/ultraviolet": "^1.0.1-1.patch.7",
"@titaniumnetwork-dev/ultraviolet": "^3.0.0", "@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", "astro": "^4.4.1",
"chalk": "^5.3.0", "chalk": "^5.3.0",
"compression": "^1.7.4", "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"> <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} {buttonNameDefault}
<span class="caret"></span></button <span class="caret"></span></button>
>
<ul class="dropdown-menu" id={id + "-menu"}> <ul class="dropdown-menu" id={id + "-menu"}>
{ {
dropdownList.map((item: any) => { dropdownList.map((item: any) => {

View file

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

View file

@ -25,6 +25,12 @@ const openPageWith = [
{ name: "About:Blank", value: "about:blank" }, { name: "About:Blank", value: "about:blank" },
{ name: t("settings.proxy.openPageWith.newTab"), value: "newTab" }, { 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"> <div class="settings-container">
@ -33,7 +39,7 @@ const openPageWith = [
<Dropdown <Dropdown
buttonNameDefault="Ultraviolet" buttonNameDefault="Ultraviolet"
dropdownList={proxyList} dropdownList={proxyList}
, localStorageKey="alu__selectedProxy"
id="dropdown__selected-proxy" id="dropdown__selected-proxy"
/> />
</div> </div>
@ -42,7 +48,7 @@ const openPageWith = [
<Dropdown <Dropdown
buttonNameDefault="Google" buttonNameDefault="Google"
dropdownList={searchEngineList} dropdownList={searchEngineList}
, localStorageKey="alu__searchEngine"
id="dropdown__search-engine" id="dropdown__search-engine"
/> />
</div> </div>
@ -51,10 +57,19 @@ const openPageWith = [
<Dropdown <Dropdown
buttonNameDefault={t("settings.proxy.openPageWith.embed")} buttonNameDefault={t("settings.proxy.openPageWith.embed")}
dropdownList={openPageWith} dropdownList={openPageWith}
, localStorageKey="alu__selectedOpenWith"
id="dropdown__open-with" id="dropdown__open-with"
/> />
</div> </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"> <div class="setting__bare-url">
<label class="setting-label" for="bare-url-input">{t("settings.proxy.bareURL")}</label> <label class="setting-label" for="bare-url-input">{t("settings.proxy.bareURL")}</label>
<Input inputName="bare-url" height="50px" /> <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 selectedProxyDropdown = document.getElementById("dropdown__selected-proxy-menu");
let searchEngineDropdown = document.getElementById("dropdown__search-engine-menu"); let searchEngineDropdown = document.getElementById("dropdown__search-engine-menu");
let openWithDropdown = document.getElementById("dropdown__open-with-menu"); let openWithDropdown = document.getElementById("dropdown__open-with-menu");
let currentTransportDropdown = document.getElementById("dropdown__transport-menu");
let bareUrlInput = document.getElementById("bare-url-input"); let bareUrlInput = document.getElementById("bare-url-input");
let searxngUrlInput = document.getElementById("searxng-url-input"); let searxngUrlInput = document.getElementById("searxng-url-input");
let savedSearxngUrl = localStorage.getItem("alu__searxngUrl"); let savedSearxngUrl = localStorage.getItem("alu__searxngUrl");
@ -308,22 +309,31 @@ const t = useTranslations(lang);
// Proxy settings // Proxy settings
applyInputListeners(bareUrlInput, "alu__bareUrl"); applyInputListeners(bareUrlInput, "alu__bareUrl");
applyInputListeners(searxngUrlInput, "alu__searxngUrl"); 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( applyDropdownEventListeners(
searchEngineDropdown, searchEngineDropdown,
"dropdown__search-engine", "dropdown__search-engine",
"alu__search_engine", "alu__searchEngine",
checkSearxng checkSearxng
); );
applyDropdownEventListeners( // applyDropdownEventListeners(
selectedProxyDropdown, // selectedProxyDropdown,
"dropdown__selected-proxy", // "dropdown__selected-proxy",
"alu__selectedProxy" // "alu__selectedProxy"
); // );
applyDropdownEventListeners( // applyDropdownEventListeners(
openWithDropdown, // openWithDropdown,
"dropdown__open-with", // "dropdown__open-with",
"alu__selectedOpenWith" // "alu__selectedOpenWith"
); // );
if (localStorage.getItem("bareUrl")) { if (localStorage.getItem("bareUrl")) {
bareUrlInput.value = localStorage.getItem("bareUrl"); bareUrlInput.value = localStorage.getItem("bareUrl");
} else { } else {
@ -339,8 +349,8 @@ const t = useTranslations(lang);
function checkSearxng() { function checkSearxng() {
// This function checks if the "searxng" option was clicked, display an additional option if so. // This function checks if the "searxng" option was clicked, display an additional option if so.
if (localStorage.getItem("alu__search_engine")) { if (localStorage.getItem("alu__searchEngine")) {
if (JSON.parse(localStorage.getItem("alu__search_engine")).value.toLowerCase() == "searx") { if (JSON.parse(localStorage.getItem("alu__searchEngine")).value.toLowerCase() == "searx") {
document.getElementsByClassName("setting__searxng-url")[0].style.opacity = "1"; document.getElementsByClassName("setting__searxng-url")[0].style.opacity = "1";
} else { } else {
document.getElementsByClassName("setting__searxng-url")[0].style.opacity = "0"; document.getElementsByClassName("setting__searxng-url")[0].style.opacity = "0";
@ -461,7 +471,7 @@ const t = useTranslations(lang);
position: relative; position: relative;
gap: 25px; gap: 25px;
} }
@media (max-width: 880px) { @media (max-width: 1116px) {
.popup { .popup {
flex-direction: column; flex-direction: column;
min-height: 80%; min-height: 80%;
@ -517,7 +527,7 @@ const t = useTranslations(lang);
height: calc(50% - 72px); height: calc(50% - 72px);
border-radius: 0 32px 0 0; border-radius: 0 32px 0 0;
} }
@media (min-width: 880px) { @media (min-width: 1116px) {
#setting-tab-proxy:checked ~ .marker { #setting-tab-proxy:checked ~ .marker {
transform: translateY(0%); transform: translateY(0%);
} }

View file

@ -3,12 +3,19 @@
const wispURLDefault = const wispURLDefault =
(location.protocol === "https:" ? "wss://" : "ws://") + location.host + "/wisp/"; (location.protocol === "https:" ? "wss://" : "ws://") + location.host + "/wisp/";
class TransportManager { class TransportManager {
private transport = localStorage.getItem("alu__currentTransport") || "EpxMod.EpoxyClient"; private transport = "EpxMod.EpoxyClient";
constructor(transport?: string) { constructor(transport?: string) {
if (transport) { if (transport) {
this.transport = 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() { getTransport() {
return this.transport; return this.transport;
@ -20,6 +27,6 @@
} }
} }
const TransportMgr = new TransportManager(); const TransportMgr = new TransportManager();
registerRemoteListener(navigator.serviceWorker.controller); registerRemoteListener(navigator.serviceWorker.controller!);
TransportMgr.setTransport(TransportMgr.getTransport()); TransportMgr.setTransport(TransportMgr.getTransport());
</script> </script>

View file

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

View file

@ -15,6 +15,12 @@ export function getStaticPaths() {
<Layout title={t("pages.home")}> <Layout title={t("pages.home")}>
<script src="/baremux/bare.cjs" is:inline></script> <script src="/baremux/bare.cjs" is:inline></script>
<script src="/epoxy/index.js" 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 /> <TransportManager />
<div class="main-content"> <div class="main-content">
<h1 class="title-text">{t("menu.welcome")}</h1> <h1 class="title-text">{t("menu.welcome")}</h1>