diff --git a/server.js b/server.js index ecc918c..e84121b 100644 --- a/server.js +++ b/server.js @@ -7,6 +7,8 @@ import { baremuxPath } from '@mercuryworkshop/bare-mux/node'; import { join } from 'node:path'; import { hostname } from 'node:os'; import wisp from 'wisp-server-node'; +import Ultraviolet from '@titaniumnetwork-dev/ultraviolet'; +import uvConfig from './uv.config.js'; const app = express(); @@ -24,6 +26,24 @@ app.use('/uv/', express.static(uvPath)); app.use('/epoxy/', express.static(epoxyPath)); app.use('/baremux/', express.static(baremuxPath)); +// Configure Ultraviolet +const uv = new Ultraviolet(uvConfig); + +// Generate proxied URL +app.get('/generate-proxy-url', (req, res) => { + const serviceUrl = req.query.url; + if (serviceUrl) { + const encodedUrl = uv.encodeUrl(serviceUrl); + const proxyUrl = `http://${hostname()}:${port}/service/${encodedUrl}`; + res.send(proxyUrl); + } else { + res.status(400).send('No URL provided'); + } +}); + +// Use Ultraviolet middleware +app.use('/service/', uv.middleware()); + // Error for everything else app.use((req, res) => { res.status(404); diff --git a/uv.config.js b/uv.config.js index 98dbd9d..a7c6534 100644 --- a/uv.config.js +++ b/uv.config.js @@ -1,12 +1,14 @@ +import Ultraviolet from '@titaniumnetwork-dev/ultraviolet'; + const uvConfig = { prefix: '/service/', bare: '/bare/', encodeUrl: Ultraviolet.codec.xor.encode, decodeUrl: Ultraviolet.codec.xor.decode, - handler: '/dist/uv.handler.js', - bundle: '/dist/uv.bundle.js', - config: '/dist/uv.config.js', - sw: '/dist/uv.sw.js', + handler: '/uv/uv.handler.js', + bundle: '/uv/uv.bundle.js', + config: '/uv/uv.config.js', + sw: '/uv/uv.sw.js', }; export default uvConfig; \ No newline at end of file