Fix Task #91: Server matrix node detection

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) <claude@firefrostgaming.com>
This commit is contained in:
Claude (Chronicler #60)
2026-04-05 08:23:14 +00:00
parent a9b39f3459
commit 291b329067
2 changed files with 11 additions and 3 deletions

View File

@@ -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);

View File

@@ -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 });
});