make libcurl the default transport and finish up stuff

This commit is contained in:
Russell2259
2024-03-12 21:10:56 -06:00
parent bb8e5fcdf2
commit 5b2d02b60a
9 changed files with 95 additions and 32 deletions
+2 -2
View File
@@ -9,8 +9,8 @@
"version": "1.3.2",
"license": "GNU-3.0-or-later",
"dependencies": {
"@mercuryworkshop/bare-mux": "^1.0.4",
"@mercuryworkshop/epoxy-transport": "^1.0.2",
"@mercuryworkshop/bare-mux": "^1.0.5",
"@mercuryworkshop/epoxy-transport": "^1.1.0",
"@mercuryworkshop/libcurl-transport": "^1.2.2",
"@nebula-services/dynamic": "^0.7.2-patch.2",
"@titaniumnetwork-dev/ultraviolet": "^3.0.0",
+2 -2
View File
@@ -12,8 +12,8 @@
"author": "Polaris Development Group",
"license": "GNU-3.0-or-later",
"dependencies": {
"@mercuryworkshop/bare-mux": "^1.0.4",
"@mercuryworkshop/epoxy-transport": "^1.0.2",
"@mercuryworkshop/bare-mux": "^1.0.5",
"@mercuryworkshop/epoxy-transport": "^1.1.0",
"@mercuryworkshop/libcurl-transport": "^1.2.2",
"@nebula-services/dynamic": "^0.7.2-patch.2",
"@titaniumnetwork-dev/ultraviolet": "^3.0.0",
+4 -2
View File
@@ -21,7 +21,7 @@
</div>
<script type="module">
import { loadProxyWorker, storage } from '/assets/js/utils.js';
import { loadProxyWorker, storage, loadCJS } from '/assets/js/utils.js';
const settingsStorage = storage('settings');
@@ -33,7 +33,9 @@
}));
}
if (location.pathname.slice(1).startsWith(settingsStorage.get('proxy') || 'uv')) loadProxyWorker(settingsStorage.get('proxy') || 'uv')
await loadCJS('/baremux/bare.cjs');
if (location.pathname.slice(1).startsWith((settingsStorage.get('proxy') || '').split(':')[0] || 'uv')) loadProxyWorker((settingsStorage.get('proxy') || '').split(':')[0] || 'uv')
.then(() => location.reload())
.catch(() => {
document.querySelector('h1').textContent = 'Error';
+25 -5
View File
@@ -121,11 +121,31 @@ app.use(async (req, res, next) => {
}
});
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('/dynamic/', express.static(dynamicPath));
app.use('/uv/', express.static(uvPath, {
setHeaders: (res, path) => {
if (path.endsWith('.cjs')) res.setHeader('Content-Type', 'text/javascript');
}
}));
app.use('/epoxy/', express.static(epoxyPath, {
setHeaders: (res, path) => {
if (path.endsWith('.cjs')) res.setHeader('Content-Type', 'text/javascript');
}
}));
app.use('/baremux/', express.static(baremuxPath, {
setHeaders: (res, path) => {
if (path.endsWith('.cjs')) res.setHeader('Content-Type', 'text/javascript');
}
}));
app.use('/libcurl/', express.static(libcurlPath, {
setHeaders: (res, path) => {
if (path.endsWith('.cjs')) res.setHeader('Content-Type', 'text/javascript');
}
}));
app.use('/dynamic/', express.static(dynamicPath, {
setHeaders: (res, path) => {
if (path.endsWith('.cjs')) res.setHeader('Content-Type', 'text/javascript');
}
}));
app.use(async (req, res) => {
res.setHeader('content-type', 'text/html');
+49 -3
View File
@@ -60,10 +60,49 @@ export const uuid = () => ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g,
* Register a proxy service worker
* @param {'uv' | 'dynamic'} proxy
*/
export const loadProxyWorker = async (proxy) => await navigator.serviceWorker.register(`/${proxy}/sw.js`, {
scope: `/${proxy}/service/`
export const loadProxyWorker = async (proxy) => await navigator.serviceWorker.register(`/${proxy.split(':')[0]}/sw.js`, {
scope: `/${proxy.split(':')[0]}/service/`
});
/**
* Set the bare transport
* @param {'epoxy' | 'libcurl' | 'bare'} name
* @param {any} options
*/
export const setTransport = async (name, options) => {
const transports = {
'epoxy': {
src: '/epoxy/index.js',
id: 'EpxMod.EpoxyClient',
options: {
wisp: location.origin.replace('http', 'ws') + '/wisp/'
}
},
'libcurl': {
src: '/libcurl/index.cjs',
id: 'CurlMod.LibcurlClient',
options: {
wisp: location.origin.replace('http', 'ws') + '/wisp/',
wasm: location.origin + '/libcurl/libcurl.wasm'
}
},
'bare': {
src: '/assets/js/bare-transport.js',
id: 'BareMod.BareClient',
options: location.origin + '/bare/'
}
};
if (!Object.keys(transports).includes(name)) throw 'Invalid Transport';
const transport = transports[name];
await loadCJS(transport.src);
await loadCJS('/baremux/bare.cjs');
BareMux.SetTransport(transport.id, options || transport.options);
}
/**
Broken
@@ -156,6 +195,13 @@ export const isScrollable = (element) => element.scrollWidth > element.clientWid
*/
export const evalify = (code) => '(' + String(code) + ')()';
export const loadCJS = (src) => new Promise((resolve, reject) => {
const el = document.createElement('script');
el.src = src;
document.body.appendChild(el);
el.onload = () => resolve();
});
/**
* @type {import('./utils/ctc.js').CrossTabCommunication}
*/
@@ -163,7 +209,7 @@ var CrossTabCommunication;
try {
CrossTabCommunication = ctc;
} catch { CrossTabCommunication = () => {}; }
} catch { CrossTabCommunication = () => { }; }
export default {
storage,
+6 -9
View File
@@ -1,18 +1,15 @@
import { loadProxyWorker, encoder, storage } from './utils.js';
import { loadProxyWorker, encoder, storage, loadCJS, setTransport } from './utils.js';
import { loadSettings } from './settings.js';
BareMux.SetTransport('EpxMod.EpoxyClient', { wisp: location.origin.replace('http', 'ws') + '/wisp/' });
/*BareMux.SetTransport('CurlMod.LibcurlClient', {
wisp: location.origin.replace('http', 'ws') + '/wisp/',
wasm: '/libcurl/libcurl.wasm'
});*/
//BareMux.SetTransport('BareMod.BareClient', location.origin + '/bare/');
await loadCJS('/baremux/bare.cjs');
loadSettings();
const params = new URLSearchParams(location.search);
const settingsStorage = storage('settings');
if ((settingsStorage.get('proxy') || 'uv').startsWith('uv')) await setTransport((settingsStorage.get('proxy') || '').split(':')[1] || 'libcurl');
window.history.replaceState({}, '', location.pathname);
if (params.get('load')) {
@@ -25,9 +22,9 @@ if (params.get('load')) {
sessionStorage.setItem('loaddata', JSON.stringify(parsedData));
if (parsedData.proxied) {
await loadProxyWorker(settingsStorage.get('proxy') || 'uv');
await loadProxyWorker((settingsStorage.get('proxy') || '').split(':')[0] || 'uv');
document.querySelector('#loadframe').src = `/${settingsStorage.get('proxy') || 'uv'}/service/${encoder['xor'].encode(parsedData.target)}`;
document.querySelector('#loadframe').src = `/${(settingsStorage.get('proxy') || '').split(':')[0] || 'uv'}/service/${encoder['xor'].encode(parsedData.target)}`;
} else document.querySelector('#loadframe').src = parsedData.target;
document.querySelector('#loadframe').addEventListener('load', () => {
+4
View File
@@ -1,4 +1,8 @@
// UV Transports
importScripts('/assets/js/bare-transport.js');
importScripts('/libcurl/index.cjs');
importScripts('/epoxy/index.js');
importScripts('/uv/uv.bundle.js');
importScripts('/uv/uv.config.js');
importScripts(__uv$config.sw || '/uv/uv.sw.js');
-8
View File
@@ -8,8 +8,6 @@
<link rel="stylesheet" href="/assets/css/main.css">
<link rel="stylesheet" href="/assets/css/view.css">
<script src="https://cdn.jsdelivr.net/npm/sweetalert@1.1.3/dist/sweetalert.min.js"></script>
<script>window.onerror = (...e) => alert(e);</script>
<title>View | Polaris</title>
</head>
@@ -37,12 +35,6 @@
<div class="hitbox"></div>
<script src="/baremux/bare.cjs" defer></script>
<script src="/epoxy/index.js" defer></script>
<script src="/libcurl/index.cjs" defer></script>
<script src="/assets/js/bare-transport.js" defer></script>
<script src="/assets/js/view.js" type="module"></script>
<script src="/assets/js/main.js" type="module"></script>
+3 -1
View File
@@ -51,7 +51,9 @@
<h3>Proxy</h3>
<select id="proxy_select">
<option value="uv">Ultraviolet</option>
<option value="uv:bare">Ultraviolet</option>
<option value="uv:epoxy">Ultraviolet (Epoxy)</option>
<option value="uv:libcurl" selected>Ultraviolet (Libcurl)</option>
<option value="dynamic" disabled>Dynamic</option>
</select>