From 69fe9791dfab26e476cfe07bf13d3501272dcec9 Mon Sep 17 00:00:00 2001 From: ProgrammerIn-wonderland <3838shah@gmail.com> Date: Mon, 9 Feb 2026 21:40:24 -0800 Subject: [PATCH] add configurable backend --- .../src/modules/web/WebServerService.js | 9 +++++++++ tools/auth_gui.js | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 tools/auth_gui.js diff --git a/src/backend/src/modules/web/WebServerService.js b/src/backend/src/modules/web/WebServerService.js index c932763fd1..26517477a9 100644 --- a/src/backend/src/modules/web/WebServerService.js +++ b/src/backend/src/modules/web/WebServerService.js @@ -25,6 +25,8 @@ const config = require('../../config.js'); var http = require('http'); const auth = require('../../middleware/auth.js'); const measure = require('../../middleware/measure.js'); +const yargs = require('yargs/yargs'); +const { hideBin } = require('yargs/helpers'); const relative_require = require; @@ -202,6 +204,13 @@ class WebServerService extends BaseService { const url = config.origin; + const args = yargs(hideBin(process.argv)).argv; + if ( args['server'] ) { + (async () => { + (await import('./../../../../../tools/auth_gui.js')).default(args['puter-backend']); + })(); + config.no_browser_launch = true; + } // Open the browser to the URL of Puter // (if we are in development mode only) if ( config.env === 'dev' && !config.no_browser_launch ) { diff --git a/tools/auth_gui.js b/tools/auth_gui.js new file mode 100644 index 0000000000..5544ba1dc7 --- /dev/null +++ b/tools/auth_gui.js @@ -0,0 +1,19 @@ +import open from 'open'; +import http from 'node:http'; + +export default function (guiOrigin = 'https://puter.com') { + + return new Promise((resolve) => { + const requestListener = function (/**@type {IncomingMessage} */ req, res) { + res.writeHead(200, { 'Content-Type': 'text/html' }); + res.end(''); + + resolve(new URL(req.url, 'http://localhost/').searchParams.get('token')); + }; + const server = http.createServer(requestListener); + server.listen(0, function () { + const url = `${guiOrigin}/?action=authme&redirectURL=${encodeURIComponent('http://localhost:') + this.address().port}`; + open(url); + }); + }); +};