From 591c6c0fd3a70286c244d79bab76b67392a3135d Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Wed, 22 Jan 2025 11:45:58 -0500 Subject: [PATCH] dev: add wisp relay service --- src/backend/exports.js | 2 ++ .../src/modules/internet/InternetModule.js | 18 ++++++++++++++++++ .../src/modules/internet/WispRelayService.js | 18 ++++++++++++++++++ src/backend/src/services/WispService.js | 5 ++++- src/puter-js/src/index.js | 6 +++--- tools/run-selfhosted.js | 2 ++ 6 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 src/backend/src/modules/internet/InternetModule.js create mode 100644 src/backend/src/modules/internet/WispRelayService.js diff --git a/src/backend/exports.js b/src/backend/exports.js index 0d4ef9c0..f494eb93 100644 --- a/src/backend/exports.js +++ b/src/backend/exports.js @@ -35,6 +35,7 @@ const { PerfMonModule } = require("./src/modules/perfmon/PerfMonModule.js"); const { AppsModule } = require("./src/modules/apps/AppsModule.js"); const { DevelopmentModule } = require("./src/modules/development/DevelopmentModule.js"); const { HostOSModule } = require("./src/modules/hostos/HostOSModule.js"); +const { InternetModule } = require("./src/modules/internet/InternetModule.js"); module.exports = { helloworld: () => { @@ -68,6 +69,7 @@ module.exports = { TestDriversModule, PuterAIModule, BroadcastModule, + InternetModule, // Development modules PerfMonModule, diff --git a/src/backend/src/modules/internet/InternetModule.js b/src/backend/src/modules/internet/InternetModule.js new file mode 100644 index 00000000..f35dcd20 --- /dev/null +++ b/src/backend/src/modules/internet/InternetModule.js @@ -0,0 +1,18 @@ +const { AdvancedBase } = require("@heyputer/putility"); +const config = require("../../config.js"); + +class InternetModule extends AdvancedBase { + async install (context) { + const services = context.get('services'); + + if ( !! config?.services?.['wisp-relay'] ) { + const WispRelayService = require('./WispRelayService.js'); + services.registerService('wisp-relay', WispRelayService); + } else { + this.log.noticeme('WISP Relay is disabled'); + } + + } +} + +module.exports = { InternetModule }; diff --git a/src/backend/src/modules/internet/WispRelayService.js b/src/backend/src/modules/internet/WispRelayService.js new file mode 100644 index 00000000..22f3aef5 --- /dev/null +++ b/src/backend/src/modules/internet/WispRelayService.js @@ -0,0 +1,18 @@ +const BaseService = require("../../services/BaseService"); + +class WispRelayService extends BaseService { + _init () { + const path_ = require('path'); + const svc_process = this.services.get('process'); + svc_process.start({ + command: this.config.node_path, + fullpath: this.config.wisp_relay_path, + args: ['index.js'], + env: { + PORT: this.config.wisp_relay_port, + }, + }); + } +} + +module.exports = WispRelayService; diff --git a/src/backend/src/services/WispService.js b/src/backend/src/services/WispService.js index 54d34727..953889c7 100644 --- a/src/backend/src/services/WispService.js +++ b/src/backend/src/services/WispService.js @@ -45,7 +45,10 @@ class WispService extends BaseService { }, { expiresIn: '1d', }); - res.json({ token }); + res.json({ + token, + server: this.config.server, + }); } }).attach(r_wisp); diff --git a/src/puter-js/src/index.js b/src/puter-js/src/index.js index 0b2618ac..95f0cf67 100644 --- a/src/puter-js/src/index.js +++ b/src/puter-js/src/index.js @@ -321,15 +321,15 @@ window.puter = (function() { this.p_can_request_rao_.resolve(); })(); (async () => { - const wispToken = (await (await fetch(this.APIOrigin + '/wisp/relay-token/create', { + const { token: wispToken, server: wispServer } = (await (await fetch(this.APIOrigin + '/wisp/relay-token/create', { method: 'POST', headers: { Authorization: `Bearer ${this.authToken}`, 'Content-Type': 'application/json', }, body: JSON.stringify({}), - })).json())["token"]; - wispInfo.handler = new PWispHandler(wispInfo.server, wispToken); + })).json()); + wispInfo.handler = new PWispHandler(wispServer, wispToken); this.net = { Socket: PSocket, tls: { diff --git a/tools/run-selfhosted.js b/tools/run-selfhosted.js index 8810a9ec..14ea2982 100644 --- a/tools/run-selfhosted.js +++ b/tools/run-selfhosted.js @@ -87,6 +87,7 @@ const main = async () => { BroadcastModule, TestDriversModule, PuterAIModule, + InternetModule, DevelopmentModule } = (await import('@heyputer/backend')).default; @@ -101,6 +102,7 @@ const main = async () => { k.add_module(new SelfHostedModule()); k.add_module(new BroadcastModule()); k.add_module(new TestDriversModule()); + k.add_module(new InternetModule()); // k.add_module(new PuterAIModule()); if ( process.env.UNSAFE_PUTER_DEV ) { k.add_module(new DevelopmentModule());