diff --git a/server.js b/server.js index 50e8268..d6a1d64 100644 --- a/server.js +++ b/server.js @@ -18,9 +18,15 @@ app.use(express.static('public')); app.get('/generate-proxy-url', (req, res) => { const serviceUrl = req.query.url; if (serviceUrl) { - const encodedUrl = Buffer.from(serviceUrl).toString('base64'); - const proxyUrl = `http://${hostname()}:${port}/service/${encodedUrl}`; - res.send(proxyUrl); + try { + const encodedUrl = Buffer.from(serviceUrl, 'utf-8').toString('base64'); + const proxyUrl = `http://${hostname()}:${port}/service/${encodedUrl}`; + console.log(`Generated proxy URL: ${proxyUrl}`); + res.send(proxyUrl); + } catch (error) { + console.error('Error encoding URL:', error); + res.status(500).send('Error generating proxy URL'); + } } else { res.status(400).send('No URL provided'); } @@ -28,9 +34,22 @@ app.get('/generate-proxy-url', (req, res) => { // Ultraviolet handler app.use('/service/*', (req, res) => { - const urlToProxy = Buffer.from(req.url.slice(1), 'base64').toString('utf-8'); - req.url = urlToProxy; - uvPath.requireHandle()(req, res); + try { + const encodedPart = req.url.split('/service/')[1]; + const urlToProxy = Buffer.from(encodedPart, 'base64').toString('utf-8'); + console.log(`Decoded URL to proxy: ${urlToProxy}`); + req.url = urlToProxy; + const handler = uvPath.requireHandle(); + if (typeof handler === 'function') { + handler(req, res); + } else { + console.error('Invalid handler function'); + res.status(500).send('Internal server error'); + } + } catch (error) { + console.error('Error decoding URL:', error); + res.status(400).send('Invalid URL encoding'); + } }); httpServer.listen(port, () => { diff --git a/uv.config.js b/uv.config.js index d3da480..13940fc 100644 --- a/uv.config.js +++ b/uv.config.js @@ -1,8 +1,12 @@ self.__uv$config = { prefix: '/service/', bare: '/bare/', - encodeUrl: Ultraviolet.codec.xor.encode, - decodeUrl: Ultraviolet.codec.xor.decode, + encodeUrl: function(url) { + return btoa(url); + }, + decodeUrl: function(encodedUrl) { + return atob(encodedUrl); + }, handler: '/dist/uv.handler.js', bundle: '/dist/uv.bundle.js', config: '/dist/uv.config.js',