From 291b32906783b130f5eb323a8ab537eb80767c64 Mon Sep 17 00:00:00 2001 From: "Claude (Chronicler #60)" Date: Sun, 5 Apr 2026 08:23:14 +0000 Subject: [PATCH] Fix Task #91: Server matrix node detection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit WHAT WAS DONE: - discovery.js: Added node field to server objects - Maps Pterodactyl node ID 2 → NC1 - Maps Pterodactyl node ID 3 → TX1 - Also includes raw nodeId for debugging - servers.js: Simplified grouping logic - Removed fallback checks for 'Node 2', 'Node 3', name patterns - Now uses clean s.node === 'TX1' / 'NC1' checks THE BUG: getMinecraftServers() was only returning identifier and name, but the matrix filter was checking s.node which was undefined. Servers were being grouped by name pattern fallback only. Files changed: - services/arbiter-3.0/src/panel/discovery.js (+8 lines) - services/arbiter-3.0/src/routes/admin/servers.js (simplified) Signed-off-by: Claude (Chronicler #60) --- services/arbiter-3.0/src/panel/discovery.js | 10 +++++++++- services/arbiter-3.0/src/routes/admin/servers.js | 4 ++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/services/arbiter-3.0/src/panel/discovery.js b/services/arbiter-3.0/src/panel/discovery.js index 525cc94..e2208db 100644 --- a/services/arbiter-3.0/src/panel/discovery.js +++ b/services/arbiter-3.0/src/panel/discovery.js @@ -19,12 +19,20 @@ async function getMinecraftServers() { // Parse the allowed nest IDs from the environment variable const allowedNests = process.env.MINECRAFT_NEST_IDS.split(',').map(id => parseInt(id.trim(), 10)); + // Node ID to friendly name mapping + const nodeMap = { + 2: 'NC1', + 3: 'TX1' + }; + return data.data.filter(server => { // The API returns the nest ID directly as an integer when relationships aren't included return allowedNests.includes(server.attributes.nest); }).map(server => ({ identifier: server.attributes.identifier, - name: server.attributes.name + name: server.attributes.name, + nodeId: server.attributes.node, + node: nodeMap[server.attributes.node] || `Node ${server.attributes.node}` })); } catch (error) { console.error("Discovery failed:", error); diff --git a/services/arbiter-3.0/src/routes/admin/servers.js b/services/arbiter-3.0/src/routes/admin/servers.js index ba88651..2f0f9b5 100644 --- a/services/arbiter-3.0/src/routes/admin/servers.js +++ b/services/arbiter-3.0/src/routes/admin/servers.js @@ -44,8 +44,8 @@ router.get('/matrix', async (req, res) => { })); // Group by Node Location - const txServers = enrichedServers.filter(s => s.node === 'TX1' || s.node === 'Node 3' || s.name.includes('TX')); - const ncServers = enrichedServers.filter(s => s.node === 'NC1' || s.node === 'Node 2' || s.name.includes('NC')); + const txServers = enrichedServers.filter(s => s.node === 'TX1'); + const ncServers = enrichedServers.filter(s => s.node === 'NC1'); res.render('admin/servers/_matrix_body', { txServers, ncServers, layout: false }); });