From 894ab2e0aab111af3fc585ae9b9253c0088f7cd9 Mon Sep 17 00:00:00 2001 From: Sebastian Martinez Date: Thu, 20 Jun 2024 22:52:39 +0200 Subject: [PATCH] Update node config --- http-client/lib/shared.ts | 28 +++++++++++++++++-- src/components/ScopePolicyExplainer.svelte | 2 +- src/lib/httpd.ts | 15 ++++++---- src/views/nodes/router.ts | 4 +-- src/views/projects/Sidebar/ContextRepo.svelte | 9 +++--- tests/e2e/landingPage.spec.ts | 6 ++-- tests/e2e/node.spec.ts | 5 ++-- tests/support/globalSetup.ts | 5 +++- tests/support/heartwood-release | 2 +- tests/support/peerManager.ts | 27 ++++++++++++++++-- 10 files changed, 77 insertions(+), 26 deletions(-) diff --git a/http-client/lib/shared.ts b/http-client/lib/shared.ts index c5c06b30c..d081a0416 100644 --- a/http-client/lib/shared.ts +++ b/http-client/lib/shared.ts @@ -17,11 +17,26 @@ export const nodeConfigSchema = object({ alias: string(), peers: union([ object({ type: literal("static") }), - object({ type: literal("dynamic"), target: number() }), + object({ type: literal("dynamic") }), ]), listen: array(string()), connect: array(string()), externalAddresses: array(string()), + proxy: string().optional(), + onion: union([ + object({ + mode: literal("proxy"), + address: string(), + }), + object({ mode: literal("forward") }), + ]).optional(), + log: union([ + literal("ERROR"), + literal("WARN"), + literal("INFO"), + literal("DEBUG"), + literal("TRACE"), + ]), network: union([literal("main"), literal("test")]), relay: union([literal("always"), literal("never"), literal("auto")]), limits: object({ @@ -40,9 +55,16 @@ export const nodeConfigSchema = object({ capacity: number(), }), }), + connection: object({ + inbound: number(), + outbound: number(), + }), + }), + workers: number(), + seedingPolicy: object({ + default: policySchema, + scope: scopeSchema.optional(), }), - policy: policySchema, - scope: scopeSchema, }); export type Policy = z.infer; diff --git a/src/components/ScopePolicyExplainer.svelte b/src/components/ScopePolicyExplainer.svelte index 6f150cc48..1165cfea2 100644 --- a/src/components/ScopePolicyExplainer.svelte +++ b/src/components/ScopePolicyExplainer.svelte @@ -3,7 +3,7 @@ import { capitalize } from "lodash"; - export let scope: Scope; + export let scope: Scope | undefined = "all"; export let policy: Policy; diff --git a/src/lib/httpd.ts b/src/lib/httpd.ts index 2ab4dbd8f..85ef63f03 100644 --- a/src/lib/httpd.ts +++ b/src/lib/httpd.ts @@ -83,7 +83,12 @@ export async function authenticate(params: { publicKey: params.publicKey, alias: sess.alias, }, - node: { id, state, policy: config?.policy, scope: config?.scope }, + node: { + id, + state, + policy: config?.seedingPolicy.default, + scope: config?.seedingPolicy.scope, + }, }); return true; } catch (error) { @@ -111,8 +116,8 @@ export async function disconnect() { node: { id, state, - policy: config?.policy, - scope: config?.scope, + policy: config?.seedingPolicy.default, + scope: config?.seedingPolicy.scope, }, }); } catch (error) { @@ -150,8 +155,8 @@ async function checkState() { const node = { id, state, - policy: config?.policy, - scope: config?.scope, + policy: config?.seedingPolicy.default, + scope: config?.seedingPolicy.scope, }; if (httpdState && httpdState.state === "authenticated") { diff --git a/src/views/nodes/router.ts b/src/views/nodes/router.ts index fb39cf038..de41ffead 100644 --- a/src/views/nodes/router.ts +++ b/src/views/nodes/router.ts @@ -56,8 +56,8 @@ export async function loadNodeRoute( stats, externalAddresses: node.config?.externalAddresses ?? [], version: node.version, - policy: node.config?.policy, - scope: node.config?.scope, + policy: node.config?.seedingPolicy.default, + scope: node.config?.seedingPolicy.scope, }, }; } catch (error) { diff --git a/src/views/projects/Sidebar/ContextRepo.svelte b/src/views/projects/Sidebar/ContextRepo.svelte index 4c6d4ce61..ff6b935d7 100644 --- a/src/views/projects/Sidebar/ContextRepo.svelte +++ b/src/views/projects/Sidebar/ContextRepo.svelte @@ -18,7 +18,8 @@ let expandedNode = false; $: shortSeedingPolicy = - node.config?.scope === "all" && node.config?.policy === "allow" + node.config?.seedingPolicy.scope === "all" && + node.config?.seedingPolicy.default === "allow" ? "permissive" : "restrictive"; @@ -113,11 +114,11 @@ {capitalize(shortSeedingPolicy)} - {#if expandedNode && node.config} + {#if expandedNode && node.config?.seedingPolicy}
+ scope={node.config.seedingPolicy.scope} + policy={node.config.seedingPolicy.default} />
{/if} diff --git a/tests/e2e/landingPage.spec.ts b/tests/e2e/landingPage.spec.ts index 661c202b4..1f690c751 100644 --- a/tests/e2e/landingPage.spec.ts +++ b/tests/e2e/landingPage.spec.ts @@ -100,7 +100,6 @@ const nodeInfo = { listen: [], peers: { type: "dynamic", - target: 0, }, connect: [], externalAddresses: ["seed.rhizoma.dev:8776"], @@ -132,8 +131,9 @@ const nodeInfo = { }, }, workers: 32, - policy: "block", - scope: "all", + seedingPolicy: { + default: "block", + }, }, state: "running", }; diff --git a/tests/e2e/node.spec.ts b/tests/e2e/node.spec.ts index 5a08d1803..19d99501f 100644 --- a/tests/e2e/node.spec.ts +++ b/tests/e2e/node.spec.ts @@ -6,8 +6,7 @@ test("node metadata", async ({ page, peerManager }) => { name: "node-metadata-peer", }); await peer.startNode({ - policy: "allow", - scope: "all", + seedingPolicy: { default: "allow", scope: "all" }, alias: "palm", externalAddresses: ["seed.radicle.test:8123"], }); @@ -19,7 +18,7 @@ test("node metadata", async ({ page, peerManager }) => { await expect( page.getByText(`${shortNodeRemote}@seed.radicle.test:8123`), ).toBeVisible(); - await expect(page.getByText("1.0.0-rc.8-")).toBeVisible(); + await expect(page.getByText("1.0.0-rc.11-")).toBeVisible(); }); test("node projects", async ({ page }) => { diff --git a/tests/support/globalSetup.ts b/tests/support/globalSetup.ts index 554d296d1..14a46b9c2 100644 --- a/tests/support/globalSetup.ts +++ b/tests/support/globalSetup.ts @@ -50,7 +50,10 @@ export default async function globalSetup(): Promise<() => void> { }); if (!process.env.SKIP_FIXTURE_CREATION) { - await palm.startNode({ policy: "allow", scope: "all", alias: "palm" }); + await palm.startNode({ + seedingPolicy: { default: "allow", scope: "all" }, + alias: "palm", + }); await palm.startHttpd(defaultHttpdPort); try { diff --git a/tests/support/heartwood-release b/tests/support/heartwood-release index 54a2c3798..d7e74e915 100644 --- a/tests/support/heartwood-release +++ b/tests/support/heartwood-release @@ -1 +1 @@ -1.0.0-rc.8 \ No newline at end of file +1.0.0-rc.11 \ No newline at end of file diff --git a/tests/support/peerManager.ts b/tests/support/peerManager.ts index d013db697..3017f6ae3 100644 --- a/tests/support/peerManager.ts +++ b/tests/support/peerManager.ts @@ -124,10 +124,25 @@ export const NodeConfigSchema = object({ alias: string(), peers: union([ object({ type: literal("static") }), - object({ type: literal("dynamic"), target: number() }), + object({ type: literal("dynamic") }), ]), connect: array(string()), externalAddresses: array(string()), + proxy: string().optional(), + onion: union([ + object({ + mode: literal("proxy"), + address: string(), + }), + object({ mode: literal("forward") }), + ]).optional(), + log: union([ + literal("ERROR"), + literal("WARN"), + literal("INFO"), + literal("DEBUG"), + literal("TRACE"), + ]), network: union([literal("main"), literal("test")]), relay: union([literal("always"), literal("never"), literal("auto")]), limits: object({ @@ -140,9 +155,15 @@ export const NodeConfigSchema = object({ inbound: object({ fillRate: number(), capacity: number() }), outbound: object({ fillRate: number(), capacity: number() }), }), + connection: object({ + inbound: number(), + outbound: number(), + }), + }), + seedingPolicy: object({ + default: union([literal("allow"), literal("block")]), + scope: union([literal("followed"), literal("all")]).optional(), }), - policy: union([literal("allow"), literal("block")]), - scope: union([literal("followed"), literal("all")]), }), });