From c0470e940b44c31ac216987732b1ca5483425b01 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Tue, 18 Aug 2026 16:20:43 +0200 Subject: [PATCH] Server Management --- src/app/app.ts | 24 +++++++++++++++++++++++- src/app/server.ts | 2 +- src/lib/serverList.ts | 7 +++++-- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/app/app.ts b/src/app/app.ts index c1f1e37..5bb4905 100644 --- a/src/app/app.ts +++ b/src/app/app.ts @@ -1,7 +1,8 @@ -import { getServerList, KnownServer } from "@/lib/serverList"; +import { getServerList, getWSUrl, KnownServer } from "@/lib/serverList"; import EnclaveServer from "./server"; import * as ed from "@noble/ed25519"; import { sha512 } from "@noble/hashes/sha2.js"; +import { base58 } from "@scure/base"; ed.hashes.sha512 = sha512; @@ -33,4 +34,25 @@ export default class Enclave { public async init() { this.serverList = await getServerList(); } + + public async addServer(hostname: string, isSecure: boolean) { + if (this.server) { + this.server.disconnect(); + } + + this.server = new EnclaveServer(getWSUrl({ hostname, isSecure })); + + if (!this.server.serverPublicKey) { + console.error("Failed to get public key"); + return; + } + + this.serverList.push({ + name: "", + description: "", + hostname, + isSecure, + publicKey: base58.encode(this.server.serverPublicKey), + }); + } } diff --git a/src/app/server.ts b/src/app/server.ts index 8b17950..92307e7 100644 --- a/src/app/server.ts +++ b/src/app/server.ts @@ -30,7 +30,7 @@ export default class EnclaveServer { this.hostname = hostname; } - public async disconnect() { + public disconnect() { this.websocket?.websocket.close(); this.websocket = undefined; } diff --git a/src/lib/serverList.ts b/src/lib/serverList.ts index 1ca4c2d..5ce1d69 100644 --- a/src/lib/serverList.ts +++ b/src/lib/serverList.ts @@ -16,7 +16,10 @@ export async function getServerList(): Promise { return await invoke("get_server_list"); } -export function getHTTPUrl(server: KnownServer, path: string) { +export function getHTTPUrl( + server: { hostname: string; isSecure: boolean }, + path: string, +) { const hostname = server.hostname.includes(":") ? server.hostname : server.hostname + ":3415"; @@ -24,7 +27,7 @@ export function getHTTPUrl(server: KnownServer, path: string) { return (server.isSecure ? "https://" : "http://") + hostname + path; } -export function getWSUrl(server: KnownServer) { +export function getWSUrl(server: { hostname: string; isSecure: boolean }) { const hostname = server.hostname.includes(":") ? server.hostname : server.hostname + ":3415";