1const pool = require('./services/db');
2const MeshCentralAPI = require('./lib/meshcentral-api');
4const MESHCENTRAL_URL = process.env.MESHCENTRAL_URL || 'https://rmm-psa-meshcentral-aq48h.ondigitalocean.app';
5const MESHCENTRAL_USER = process.env.MESHCENTRAL_USERNAME || 'admin';
6const MESHCENTRAL_PASSWORD = process.env.MESHCENTRAL_PASSWORD || 'YOUR_PASSWORD';
12async function setupTenantMeshCentral(tenantId) {
13 console.log(`\nš§ Setting up MeshCentral for tenant: ${tenantId}`);
16 const tenantResult = await pool.query(
17 'SELECT name, meshcentral_group_id FROM tenants WHERE tenant_id = $1',
21 if (tenantResult.rows.length === 0) {
22 throw new Error('Tenant not found');
25 const tenant = tenantResult.rows[0];
26 console.log(` Tenant name: ${tenant.name}`);
28 if (tenant.meshcentral_group_id) {
29 console.log(` ā
Already configured with mesh ID: ${tenant.meshcentral_group_id}`);
30 return { meshId: tenant.meshcentral_group_id, created: false };
33 // Connect to MeshCentral
34 console.log(` Connecting to MeshCentral: ${MESHCENTRAL_URL}`);
35 const api = new MeshCentralAPI(MESHCENTRAL_URL);
36 await api.login(MESHCENTRAL_USER, MESHCENTRAL_PASSWORD);
37 console.log(` ā
Connected as: ${MESHCENTRAL_USER}`);
39 // Create device group (mesh)
40 const meshName = `${tenant.name} Devices`;
41 console.log(` Creating device group: ${meshName}`);
43 const mesh = await api.createMesh(meshName, {
44 desc: `Device group for ${tenant.name}`,
48 if (!mesh || !mesh.meshid) {
49 throw new Error('Failed to create mesh');
52 console.log(` ā
Created mesh: ${mesh.meshid}`);
54 // Store mesh ID in database
56 'UPDATE tenants SET meshcentral_group_id = $1, meshcentral_setup_complete = true WHERE tenant_id = $2',
57 [mesh.meshid, tenantId]
60 console.log(` ā
Updated database with mesh ID`);
62 return { meshId: mesh.meshid, created: true };
67 const tenantId = '00000000-0000-0000-0000-000000000001';
68 const result = await setupTenantMeshCentral(tenantId);
70 console.log(`\nā
Setup complete!`);
71 console.log(` Mesh ID: ${result.meshId}`);
72 console.log(`\nš„ MeshAgent Installer URLs:`);
73 console.log(` Windows: ${MESHCENTRAL_URL}/meshagents?id=${result.meshId}&installflags=0&meshinstall=meshagent.exe`);
74 console.log(` Linux: ${MESHCENTRAL_URL}/meshagents?id=${result.meshId}&installflags=0&meshinstall=meshagent`);
77 console.error('\nā Setup failed:', err.message);
78 console.error(err.stack);