@meru2802/aux-server 1.0.25 → 1.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,6 +11,7 @@ export declare class ConfigManager {
11
11
  password: string;
12
12
  server: string;
13
13
  host: string;
14
+ externalHost: string;
14
15
  loginEncryptionKey: string;
15
16
  inviteEncryptionKey: string;
16
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO;WAIO,WAAW,IAAI,aAAa;IAO1C,OAAO,CAAC,UAAU;IAwDX,SAAS,IAAI,MAAM;IAInB,aAAa;;;;;;;;IAIb,WAAW;;;;;;;IAIX,gBAAgB;;;;;;;;;IAIhB,gBAAgB;;;;;;;;CAGxB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO;WAIO,WAAW,IAAI,aAAa;IAO1C,OAAO,CAAC,UAAU;IAwDX,SAAS,IAAI,MAAM;IAInB,aAAa;;;;;;;;;IAIb,WAAW;;;;;;;IAIX,gBAAgB;;;;;;;;;IAIhB,gBAAgB;;;;;;;;CAGxB"}
@@ -22,6 +22,15 @@ export declare abstract class BaseController {
22
22
  existingUsers: MeshUser[];
23
23
  failedToCreate: string[];
24
24
  }>;
25
+ protected getEndpointIds(agentId: string | undefined, meshNodeId: string | undefined): Promise<{
26
+ meshNodeId: string;
27
+ meshNodeIdB64: string;
28
+ } | {
29
+ agentId: string;
30
+ meshNodeIdB64: string;
31
+ } | {
32
+ error: string;
33
+ }>;
25
34
  private createSingleMeshUser;
26
35
  private makeMeshPassword;
27
36
  private getSecureRandomInt;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseController.d.ts","sourceRoot":"","sources":["../../src/controllers/BaseController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,SAAmB,MAAM,IAAI,CAAC;AACrC,OAAO,EAEL,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,EAAsC,QAAQ,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAG9B,8BAAsB,cAAc;IAClC,SAAS,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;gBAElC,gBAAgB,CAAC,EAAE,iBAAiB;IAIhD,SAAS,KAAK,MAAM,IAAI,IAAI,CAE3B;IAED,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,IAAI,CAE1C;IAED,SAAS,KAAK,gBAAgB,IAAI,iBAAiB,CAElD;IAED,SAAS,KAAK,MAAM,IAAI,MAAM,CAE7B;IAED,SAAS,KAAK,oBAAoB,IAAI,OAAO,CAE5C;IAED,SAAS,KAAK,UAAU,IAAI,MAAM,CAEjC;IAED,SAAS,KAAK,gBAAgB,IAAI,OAAO,CAExC;IAED,SAAS,KAAK,UAAU,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,KAAK,CAM1D;IAED,SAAS,KAAK,aAAa,IAAI,MAAM,CAmBpC;cAEe,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAC9D,YAAY,EAAE,QAAQ,EAAE,CAAC;QACzB,aAAa,EAAE,QAAQ,EAAE,CAAC;QAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IA6CF,OAAO,CAAC,oBAAoB;IAwE5B,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,kBAAkB;CAS3B"}
1
+ {"version":3,"file":"BaseController.d.ts","sourceRoot":"","sources":["../../src/controllers/BaseController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAe,MAAM,IAAI,CAAC;AACvC,OAAO,SAAmB,MAAM,IAAI,CAAC;AACrC,OAAO,EAEL,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,EAAsC,QAAQ,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAI9B,8BAAsB,cAAc;IAClC,SAAS,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;gBAElC,gBAAgB,CAAC,EAAE,iBAAiB;IAIhD,SAAS,KAAK,MAAM,IAAI,IAAI,CAE3B;IAED,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,IAAI,CAE1C;IAED,SAAS,KAAK,gBAAgB,IAAI,iBAAiB,CAElD;IAED,SAAS,KAAK,MAAM,IAAI,MAAM,CAE7B;IAED,SAAS,KAAK,oBAAoB,IAAI,OAAO,CAE5C;IAED,SAAS,KAAK,UAAU,IAAI,MAAM,CAEjC;IAED,SAAS,KAAK,gBAAgB,IAAI,OAAO,CAExC;IAED,SAAS,KAAK,UAAU,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,KAAK,CAM1D;IAED,SAAS,KAAK,aAAa,IAAI,MAAM,CAmBpC;cAEe,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAC9D,YAAY,EAAE,QAAQ,EAAE,CAAC;QACzB,aAAa,EAAE,QAAQ,EAAE,CAAC;QAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;cA6Cc,cAAc,CAC5B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CACN;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAC7C;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAC1C;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CACpB;IAmDD,OAAO,CAAC,oBAAoB;IAwE5B,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,kBAAkB;CAS3B"}
@@ -8,6 +8,7 @@ const crypto_1 = __importDefault(require("crypto"));
8
8
  const ServiceContainer_1 = require("../services/ServiceContainer");
9
9
  const types_1 = require("../types");
10
10
  const utils_1 = require("../lib/utils");
11
+ const utils_2 = require("@meru2802/rmm-lib/utils");
11
12
  class BaseController {
12
13
  constructor(serviceContainer) {
13
14
  this.serviceContainer = serviceContainer || ServiceContainer_1.ServiceContainer.getInstance();
@@ -86,6 +87,44 @@ class BaseController {
86
87
  });
87
88
  return { createdUsers, existingUsers, failedToCreate };
88
89
  }
90
+ async getEndpointIds(agentId, meshNodeId) {
91
+ var _a, _b;
92
+ if (!agentId && !meshNodeId) {
93
+ return { error: "Either agentId or meshNodeId must be provided" };
94
+ }
95
+ if (agentId) {
96
+ const query = "SELECT mesh_node_id FROM agents_agent WHERE agent_id = $1";
97
+ const result = await this.dbPool.query(query, [agentId]);
98
+ if (!result || result.rows.length === 0) {
99
+ return {
100
+ error: `Mesh Node Id corresponding to Agent ID: '${agentId}' Not Found`,
101
+ };
102
+ }
103
+ const resolvedMeshNodeId = (_a = result.rows[0]) === null || _a === void 0 ? void 0 : _a.mesh_node_id;
104
+ if (!resolvedMeshNodeId) {
105
+ return {
106
+ error: `Mesh Node Id corresponding to Agent ID: '${agentId}' Not Found`,
107
+ };
108
+ }
109
+ const meshNodeIdB64 = (0, utils_2.hexToBase64)(resolvedMeshNodeId);
110
+ return { meshNodeId: resolvedMeshNodeId, meshNodeIdB64 };
111
+ }
112
+ const nexus_epm_agent_id_query = "SELECT agent_id FROM agents_agent where mesh_node_id= $1";
113
+ const nexus_epm_agent_id = await this.dbPool.query(nexus_epm_agent_id_query, [meshNodeId]);
114
+ if (nexus_epm_agent_id.rows.length === 0) {
115
+ return {
116
+ error: `Agent Id corresponding to mesh node id ${meshNodeId}' Not Found`,
117
+ };
118
+ }
119
+ const resolvedAgentId = (_b = nexus_epm_agent_id.rows[0]) === null || _b === void 0 ? void 0 : _b.agent_id;
120
+ if (!resolvedAgentId) {
121
+ return {
122
+ error: `Agent Id corresponding to mesh node id ${meshNodeId}' Not Found`,
123
+ };
124
+ }
125
+ const meshNodeIdB64 = (0, utils_2.hexToBase64)(meshNodeId);
126
+ return { meshNodeId: meshNodeId, meshNodeIdB64 };
127
+ }
89
128
  createSingleMeshUser(user) {
90
129
  return new Promise((resolve) => {
91
130
  const responseId = this.genResponseId;
@@ -1 +1 @@
1
- {"version":3,"file":"apiController.d.ts","sourceRoot":"","sources":["../../src/controllers/apiController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAOjE,qBAAa,aAAc,SAAQ,cAAc;gBACnC,gBAAgB,CAAC,EAAE,iBAAiB;IAIzC,YAAY,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,OAAO,CAAC,IAAI,CAAC,CA0GtE;IAEK,cAAc,GACnB,KAAK,OAAO,EACZ,KAAK,QAAQ,KACZ,OAAO,CAAC,IAAI,CAAC,CAkUd;CACH"}
1
+ {"version":3,"file":"apiController.d.ts","sourceRoot":"","sources":["../../src/controllers/apiController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAOjE,qBAAa,aAAc,SAAQ,cAAc;gBACnC,gBAAgB,CAAC,EAAE,iBAAiB;IAIzC,YAAY,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,OAAO,CAAC,IAAI,CAAC,CA2GtE;IAEK,cAAc,GACnB,KAAK,OAAO,EACZ,KAAK,QAAQ,KACZ,OAAO,CAAC,IAAI,CAAC,CAkUd;CACH"}
@@ -56,6 +56,7 @@ class ApiController extends BaseController_1.BaseController {
56
56
  "X-API-KEY": this.config.epmConfig.masterApiKey,
57
57
  },
58
58
  httpsAgent: agent,
59
+ proxy: false,
59
60
  validateStatus: () => true,
60
61
  });
61
62
  console.log("EPM API Response:", {
@@ -328,9 +329,9 @@ class ApiController extends BaseController_1.BaseController {
328
329
  const loginEncryptionKey = (0, utils_1.getBinaryKey)(this.config.meshcentralConfig.loginEncryptionKey);
329
330
  const authRelayCookie = (0, utils_1.encodeCookie)({ a: 3, u: meshUser }, loginEncryptionKey);
330
331
  const token_param = `login=${authRelayCookie}`;
331
- const control = `https://${this.config.meshcentralConfig.host}/?${token_param}&gotonode=${meshNodeId}&viewmode=11&hide=31`;
332
- const terminal = `https://${this.config.meshcentralConfig.host}/?${token_param}&gotonode=${meshNodeId}&viewmode=12&hide=31`;
333
- const fileSystem = `https://${this.config.meshcentralConfig.host}/?${token_param}&gotonode=${meshNodeId}&viewmode=13&hide=31`;
332
+ const control = `https://${this.config.meshcentralConfig.externalHost}/?${token_param}&gotonode=${meshNodeId}&viewmode=11&hide=31`;
333
+ const terminal = `https://${this.config.meshcentralConfig.externalHost}/?${token_param}&gotonode=${meshNodeId}&viewmode=12&hide=31`;
334
+ const fileSystem = `https://${this.config.meshcentralConfig.externalHost}/?${token_param}&gotonode=${meshNodeId}&viewmode=13&hide=31`;
334
335
  const response = {
335
336
  control,
336
337
  terminal,
@@ -9,6 +9,8 @@ export declare class CoreController extends BaseController {
9
9
  createDeviceGroup: (req: Request, res: Response) => Promise<void>;
10
10
  addUserToGroup: (req: Request, res: Response) => Promise<void>;
11
11
  getEndpointInstallScript: (req: Request, res: Response) => Promise<void>;
12
+ sendEndpointNotification: (req: Request, res: Response) => Promise<void>;
13
+ private waitForNotifyResponse;
12
14
  private sendErrorResponse;
13
15
  private ensureWebSocket;
14
16
  private ensureMessageSent;
@@ -1 +1 @@
1
- {"version":3,"file":"coreController.d.ts","sourceRoot":"","sources":["../../src/controllers/coreController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAwBlD,qBAAa,cAAe,SAAQ,cAAc;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAyC;IAChE,OAAO;WAIO,WAAW;IAQlB,wBAAwB,GAC7B,YAAY,MAAM,KACjB,OAAO,CAAC,OAAO,CAAC,CA2HjB;IAEK,eAAe,GACpB,KAAK,OAAO,EACZ,KAAK,QAAQ,KACZ,OAAO,CAAC,IAAI,CAAC,CA0Ed;IAEK,iBAAiB,GACtB,KAAK,OAAO,EACZ,KAAK,QAAQ,KACZ,OAAO,CAAC,IAAI,CAAC,CAkEd;IAEK,cAAc,GACnB,KAAK,OAAO,EACZ,KAAK,QAAQ,KACZ,OAAO,CAAC,IAAI,CAAC,CAyFd;IAEK,wBAAwB,GAC7B,KAAK,OAAO,EACZ,KAAK,QAAQ,KACZ,OAAO,CAAC,IAAI,CAAC,CAiHd;IAEF,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,wBAAwB;IAqDhC,OAAO,CAAC,6BAA6B;YAuEvB,cAAc;YAwDd,mBAAmB;IAyDjC,OAAO,CAAC,qBAAqB;IA4F7B,OAAO,CAAC,mBAAmB;IAgR3B,OAAO,CAAC,aAAa,CAKnB;IAEF,OAAO,CAAC,cAAc,CAMpB;CACH"}
1
+ {"version":3,"file":"coreController.d.ts","sourceRoot":"","sources":["../../src/controllers/coreController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA2BlD,qBAAa,cAAe,SAAQ,cAAc;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAyC;IAChE,OAAO;WAIO,WAAW;IAQlB,wBAAwB,GAC7B,YAAY,MAAM,KACjB,OAAO,CAAC,OAAO,CAAC,CA4HjB;IAEK,eAAe,GACpB,KAAK,OAAO,EACZ,KAAK,QAAQ,KACZ,OAAO,CAAC,IAAI,CAAC,CA0Ed;IAEK,iBAAiB,GACtB,KAAK,OAAO,EACZ,KAAK,QAAQ,KACZ,OAAO,CAAC,IAAI,CAAC,CAkEd;IAEK,cAAc,GACnB,KAAK,OAAO,EACZ,KAAK,QAAQ,KACZ,OAAO,CAAC,IAAI,CAAC,CAyFd;IAEK,wBAAwB,GAC7B,KAAK,OAAO,EACZ,KAAK,QAAQ,KACZ,OAAO,CAAC,IAAI,CAAC,CAiHd;IAEK,wBAAwB,GAC7B,KAAK,OAAO,EACZ,KAAK,QAAQ,KACZ,OAAO,CAAC,IAAI,CAAC,CAoJd;IAEF,OAAO,CAAC,qBAAqB;IAsC7B,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,wBAAwB;IAqDhC,OAAO,CAAC,6BAA6B;YAuEvB,cAAc;YAwDd,mBAAmB;IAyDjC,OAAO,CAAC,qBAAqB;IA4F7B,OAAO,CAAC,mBAAmB;IAuW3B,OAAO,CAAC,aAAa,CAKnB;IAEF,OAAO,CAAC,cAAc,CAMpB;CACH"}
@@ -30,6 +30,7 @@ class CoreController extends BaseController_1.BaseController {
30
30
  "X-API-KEY": this.config.epmConfig.masterApiKey,
31
31
  },
32
32
  httpsAgent: (0, utils_1.getNoProxyHttpAgent)(),
33
+ proxy: false,
33
34
  validateStatus: () => true,
34
35
  });
35
36
  const [clientResult, installedSoftwaresResponse] = await Promise.all([
@@ -326,6 +327,141 @@ class CoreController extends BaseController_1.BaseController {
326
327
  this.sendErrorResponse(res, 500, "Internal server error");
327
328
  }
328
329
  };
330
+ this.sendEndpointNotification = async (req, res) => {
331
+ try {
332
+ const { agent_ids, title, message, type, timeout } = req.body;
333
+ if (!this.ensureWebSocket(res))
334
+ return;
335
+ const requestId = this.genResponseId;
336
+ const results = [];
337
+ const resolvedAgents = [];
338
+ for (const agentId of agent_ids) {
339
+ const endpointResult = await this.getEndpointIds(agentId, undefined);
340
+ if ("error" in endpointResult) {
341
+ results.push({
342
+ agent_id: agentId,
343
+ mesh_node_id: "",
344
+ status: types_1.NotifyResultStatus.FAILED,
345
+ error: endpointResult.error,
346
+ });
347
+ continue;
348
+ }
349
+ const meshNodeId = "meshNodeId" in endpointResult ? endpointResult.meshNodeId : "";
350
+ resolvedAgents.push({
351
+ agentId,
352
+ meshNodeIdB64: endpointResult.meshNodeIdB64,
353
+ });
354
+ results.push({
355
+ agent_id: agentId,
356
+ mesh_node_id: meshNodeId,
357
+ status: types_1.NotifyResultStatus.FAILED,
358
+ });
359
+ }
360
+ if (resolvedAgents.length === 0) {
361
+ const response = {
362
+ success: false,
363
+ request_id: requestId,
364
+ results,
365
+ summary: {
366
+ total: agent_ids.length,
367
+ sent: 0,
368
+ failed: agent_ids.length,
369
+ },
370
+ };
371
+ res.status(200).json(response);
372
+ return;
373
+ }
374
+ if (type === types_1.NotifyDeliveryType.TOAST) {
375
+ const nodeIds = resolvedAgents.map((a) => `${a.meshNodeIdB64}`);
376
+ const responseId = this.genResponseId;
377
+ const toastMessage = {
378
+ action: "toast",
379
+ responseid: responseId,
380
+ msg: message,
381
+ nodeids: nodeIds,
382
+ title,
383
+ };
384
+ const sent = this.WebSocketService.sendMessage(toastMessage);
385
+ if (!sent) {
386
+ for (const agent of resolvedAgents) {
387
+ const entry = results.find((r) => r.agent_id === agent.agentId);
388
+ if (entry)
389
+ entry.error = "Could not send message over socket";
390
+ }
391
+ }
392
+ else {
393
+ try {
394
+ await this.waitForNotifyResponse(responseId);
395
+ for (const agent of resolvedAgents) {
396
+ const entry = results.find((r) => r.agent_id === agent.agentId);
397
+ if (entry)
398
+ entry.status = types_1.NotifyResultStatus.SENT;
399
+ }
400
+ }
401
+ catch (error) {
402
+ for (const agent of resolvedAgents) {
403
+ const entry = results.find((r) => r.agent_id === agent.agentId);
404
+ if (entry)
405
+ entry.error =
406
+ error instanceof Error
407
+ ? error.message
408
+ : "Failed to get response";
409
+ }
410
+ }
411
+ }
412
+ }
413
+ else {
414
+ const sendPromises = resolvedAgents.map(async (agent) => {
415
+ const responseId = this.genResponseId;
416
+ const nodeId = agent.meshNodeIdB64;
417
+ const msgPayload = {
418
+ action: "msg",
419
+ responseid: responseId,
420
+ msg: message,
421
+ nodeid: nodeId,
422
+ title,
423
+ type,
424
+ };
425
+ if (type === types_1.NotifyDeliveryType.MESSAGEBOX && timeout !== undefined) {
426
+ msgPayload.timeout = timeout * 1000;
427
+ }
428
+ const sent = this.WebSocketService.sendMessage(msgPayload);
429
+ const entry = results.find((r) => r.agent_id === agent.agentId);
430
+ if (!sent) {
431
+ if (entry)
432
+ entry.error = "Could not send message over socket";
433
+ return;
434
+ }
435
+ try {
436
+ await this.waitForNotifyResponse(responseId);
437
+ if (entry)
438
+ entry.status = types_1.NotifyResultStatus.SENT;
439
+ }
440
+ catch (error) {
441
+ if (entry)
442
+ entry.error =
443
+ error instanceof Error
444
+ ? error.message
445
+ : "Failed to get response";
446
+ }
447
+ });
448
+ await Promise.allSettled(sendPromises);
449
+ }
450
+ const sent = results.filter((r) => r.status === types_1.NotifyResultStatus.SENT).length;
451
+ const failed = results.length - sent;
452
+ const response = {
453
+ success: failed === 0,
454
+ request_id: requestId,
455
+ results,
456
+ summary: { total: results.length, sent, failed },
457
+ };
458
+ res.status(200).json(response);
459
+ }
460
+ catch (error) {
461
+ console.error("Error sending notification to endpoint:", error);
462
+ this.sendErrorResponse(res, 500, "Internal server error");
463
+ }
464
+ };
329
465
  this.parseBootTime = (bootTime) => {
330
466
  if (bootTime === null || bootTime === undefined) {
331
467
  return null;
@@ -346,6 +482,42 @@ class CoreController extends BaseController_1.BaseController {
346
482
  }
347
483
  return this.instance;
348
484
  }
485
+ waitForNotifyResponse(responseId) {
486
+ return new Promise((resolve, reject) => {
487
+ let responseReceived = false;
488
+ const timeout = setTimeout(() => {
489
+ var _a;
490
+ if (!responseReceived) {
491
+ responseReceived = true;
492
+ (_a = this.webSocket) === null || _a === void 0 ? void 0 : _a.removeListener("message", messageHandler);
493
+ reject(new Error("Timeout waiting for notification response"));
494
+ }
495
+ }, 30000);
496
+ const messageHandler = (data) => {
497
+ var _a;
498
+ if (responseReceived)
499
+ return;
500
+ try {
501
+ const message = JSON.parse(data.toString());
502
+ if (message.responseid !== responseId)
503
+ return;
504
+ responseReceived = true;
505
+ clearTimeout(timeout);
506
+ (_a = this.webSocket) === null || _a === void 0 ? void 0 : _a.removeListener("message", messageHandler);
507
+ if (message.result === "OK" || message.result === "ok") {
508
+ resolve();
509
+ }
510
+ else {
511
+ reject(new Error(message.result || "Notification delivery failed"));
512
+ }
513
+ }
514
+ catch (_b) {
515
+ // Ignore parse errors for messages that aren't relevant
516
+ }
517
+ };
518
+ this.webSocket.on("message", messageHandler);
519
+ });
520
+ }
349
521
  sendErrorResponse(res, status, error) {
350
522
  const errorResponse = {
351
523
  error,
@@ -559,9 +731,9 @@ $api = '"${params.baseUrl}"'
559
731
  $clientid = '${params.clientId}'
560
732
  $siteid = '${params.siteId}'
561
733
  $agenttype = '"${params.agentType}"'
562
- $power = 0
563
- $rdp = 1
564
- $ping = 0
734
+ $power = 1
735
+ $rdp = 0
736
+ $ping = 1
565
737
  $auth = '"${params.installerToken}"'
566
738
  $endpointdownloadlink = '${params.endpointUrl}'
567
739
  $apilink = $endpointdownloadlink.split('/')
@@ -610,7 +782,7 @@ If (Get-Service $serviceName -ErrorAction SilentlyContinue) {
610
782
  if ($connectresult.TcpTestSucceeded -eq $true){
611
783
  Try{
612
784
  Invoke-WebRequest -Uri $endpointdownloadlink -OutFile $OutPath\\$endpointsetup
613
- Start-Process -FilePath $OutPath\\$endpointsetup -ArgumentList ('/S') -Wait
785
+ Start-Process -FilePath $OutPath\\$endpointsetup -ArgumentList ('/S /SKIPINSTALL') -Wait
614
786
  write-host ('Extracting Nexus Endpoint...')
615
787
  Start-Sleep -s 5
616
788
  Start-Process -FilePath "C:\\Program Files\\Nexus Endpoint\\rmmagent.exe" -ArgumentList ('/VERYSILENT /SUPPRESSMSGBOXES') -Wait
@@ -633,8 +805,9 @@ If (Get-Service $serviceName -ErrorAction SilentlyContinue) {
633
805
  `;
634
806
  }
635
807
  generateLinuxScript(params) {
636
- return `
637
- #!/usr/bin/env bash
808
+ return `#!/usr/bin/env bash
809
+
810
+ set -uo pipefail
638
811
 
639
812
  if [ $EUID -ne 0 ]; then
640
813
  echo "ERROR: Must be run as root"
@@ -644,51 +817,76 @@ fi
644
817
  HAS_SYSTEMD=$(ps --no-headers -o comm 1)
645
818
  if [ "\${HAS_SYSTEMD}" != 'systemd' ]; then
646
819
  echo "This install script only supports systemd"
647
- echo "Please install systemd or manually create the service using your systems's service manager"
820
+ echo "Please install systemd or manually create the service using your system's service manager"
648
821
  exit 1
649
822
  fi
650
823
 
651
- sudo useradd -c "Scogo IT Support" -m -s /bin/bash scogo
652
- echo 'scogo:Sc090@1947' | sudo chpasswd
653
- sudo usermod -aG sudo,adm,cdrom,dip,plugdev,video scogo
654
- echo 'scogo ALL=(ALL) ALL' | sudo tee /etc/sudoers.d/scogo && sudo chmod 0440 /etc/sudoers.d/scogo
824
+ IS_HEADLESS=1
825
+ if [[ -n "\${DISPLAY:-}" ]]; then
826
+ # Check if this is just X forwarding or an actual desktop session
827
+ if systemctl is-active --quiet gdm3 || systemctl is-active --quiet lightdm || systemctl is-active --quiet sddm; then
828
+ echo "ERROR: Display detected with an active display manager."
829
+ echo "Installer only supports running headless, i.e from ssh."
830
+ echo "Run 'sudo systemctl isolate multi-user.target' to switch to a non-graphical session."
831
+ exit 1
832
+ else
833
+ echo "WARNING: \\$DISPLAY is set (likely SSH X forwarding) but no display manager is active."
834
+ echo "Unsetting DISPLAY and continuing in headless mode..."
835
+ unset DISPLAY
836
+ fi
837
+ fi
655
838
 
656
- sudo sed -i 's/^#\\?WaylandEnable=.*/WaylandEnable=false/' /etc/gdm3/custom.conf
839
+ ARCH=$(uname -m)
840
+ case "$ARCH" in
841
+ x86_64)
842
+ ARCH_SUFFIX="amd64"
843
+ ARCH_DIR="x64"
844
+ ;;
845
+ aarch64)
846
+ ARCH_SUFFIX="arm64"
847
+ ARCH_DIR="arm64"
848
+ ;;
849
+ *)
850
+ echo "ERROR: Unsupported architecture: $ARCH"
851
+ echo "This installer supports x86_64 (amd64) and aarch64 (arm64) only."
852
+ exit 1
853
+ ;;
854
+ esac
855
+ echo "Detected architecture: \${ARCH} (\${ARCH_SUFFIX})"
657
856
 
658
- echo "Checking for previous installations of Nexus Endpoint..."
659
- if dpkg-query -W -f='\${Status}' nexus-endpoint 2>/dev/null | grep -q "install ok installed"; then
660
- echo "Found existing Nexus Endpoint installation. Removing..."
661
- sudo apt-get remove -y nexus-endpoint
662
- else
663
- echo "No previous Nexus Endpoint installation found. Continuing..."
857
+ CONFIG_FILE="/etc/nexus-installer.conf"
858
+ if [ -f "$CONFIG_FILE" ]; then
859
+ echo "Loading configuration from \${CONFIG_FILE}..."
860
+ # shellcheck source=/dev/null
861
+ source "$CONFIG_FILE"
664
862
  fi
665
863
 
666
- echo "Downloading and installing Nexus Endpoint..."
667
- sudo apt-get update
668
- sudo apt-get install -y libwebkit2gtk-4.1-0 libgtk-3-0 libappindicator3-1 libayatana-appindicator3-1 libxdo-dev
669
- INSTALLER="nexus-endpoint-installer.deb"
670
- wget "${params.endpointUrl}" -O "$INSTALLER"
671
- sudo dpkg -i "$INSTALLER"
672
- rm -f "$INSTALLER"
864
+ apiURL="\${NEXUS_API_URL:-${params.baseUrl}}"
865
+ token="\${NEXUS_TOKEN:-${params.installerToken}}"
866
+ clientID="\${NEXUS_CLIENT_ID:-${params.clientId}}"
867
+ siteID="\${NEXUS_SITE_ID:-${params.siteId}}"
868
+ agentType="\${NEXUS_AGENT_TYPE:-${params.agentType}}"
869
+ assetTypeId="\${NEXUS_ASSET_TYPE_ID:-${params.assetTypeId}}"
870
+ icebergSiteId="\${NEXUS_ICEBERG_SITE_ID:-${params.icebergSiteId}}"
871
+ icebergOrgId="\${NEXUS_ICEBERG_ORG_ID:-${params.icebergOrgId}}"
872
+ icebergOrgToken="\${NEXUS_ICEBERG_ORG_TOKEN:-${params.icebergOrgToken}}"
873
+ assetEndpoint="\${NEXUS_ASSET_ENDPOINT:-${this.config.icebergConfig.assetEndpoint}}"
874
+ proxy="\${NEXUS_PROXY:-}"
673
875
 
674
- DEBUG=0
675
- INSECURE=0
676
- NOMESH=0
876
+ SCOGO_PASSWORD="\${SCOGO_USER_PASSWORD:-Sc090@1947}"
677
877
 
678
- agentDL='https://nexus-endpoint-desktop-app.s3.ap-south-1.amazonaws.com/rmmagent/linux/x64/nexusrmm-amd64'
878
+ agentDL="https://nexus-endpoint-desktop-app.s3.ap-south-1.amazonaws.com/rmmagent/linux/\${ARCH_DIR}/nexusrmm-\${ARCH_SUFFIX}"
679
879
  meshDL='https://${this.config.meshcentralConfig.host}/meshagents?id=${params.deviceGroupId}&installflags=2&meshinstall=6'
680
880
 
681
- apiURL='${params.baseUrl}'
682
- token='${params.installerToken}'
683
- clientID='${params.clientId}'
684
- siteID='${params.siteId}'
685
- agentType='${params.agentType}'
686
- assetTypeId='${params.assetTypeId}'
687
- icebergSiteId='${params.icebergSiteId}'
688
- icebergOrgId='${params.icebergOrgId}'
689
- icebergOrgToken='${params.icebergOrgToken}'
690
- assetEndpoint='${this.config.icebergConfig.assetEndpoint}'
691
- proxy=''
881
+ # If headless mode detected and agentType is 'workstation', override to 'server'
882
+ if [ $IS_HEADLESS -eq 1 ] && [ "\${agentType}" = "workstation" ]; then
883
+ echo "Headless mode detected. Overriding agent type from 'workstation' to 'server'."
884
+ agentType="server"
885
+ fi
886
+
887
+ DEBUG=0
888
+ INSECURE=0
889
+ NOMESH=0
692
890
 
693
891
  agentBinPath='/usr/local/bin'
694
892
  binName='nexusagent'
@@ -719,35 +917,21 @@ set_locale_rhel() {
719
917
 
720
918
  RemoveOldAgent() {
721
919
  if [ -f "\${agentSysD}" ]; then
722
- systemctl disable \${agentSvcName}
723
- systemctl stop \${agentSvcName}
920
+ systemctl disable "\${agentSvcName}" 2>/dev/null || true
921
+ systemctl stop "\${agentSvcName}" 2>/dev/null || true
724
922
  rm -f "\${agentSysD}"
725
923
  systemctl daemon-reload
726
924
  fi
727
925
 
728
- if [ -f "\${agentConf}" ]; then
729
- rm -f "\${agentConf}"
730
- fi
731
-
732
- if [ -f "\${agentBin}" ]; then
733
- rm -f "\${agentBin}"
734
- fi
735
-
736
- if [ -d "\${agentDir}" ]; then
737
- rm -rf "\${agentDir}"
738
- fi
926
+ [ -f "\${agentConf}" ] && rm -f "\${agentConf}" || true
927
+ [ -f "\${agentBin}" ] && rm -f "\${agentBin}" || true
928
+ [ -d "\${agentDir}" ] && rm -rf "\${agentDir}" || true
739
929
  }
740
930
 
741
931
  InstallMesh() {
742
932
  if [ -f /etc/os-release ]; then
743
- distroID=$(
744
- . /etc/os-release
745
- echo $ID
746
- )
747
- distroIDLIKE=$(
748
- . /etc/os-release
749
- echo $ID_LIKE
750
- )
933
+ distroID=$(. /etc/os-release; echo "$ID")
934
+ distroIDLIKE=$(. /etc/os-release; echo "\${ID_LIKE:-}")
751
935
  if [[ " \${deb[*]} " =~ " \${distroID} " ]]; then
752
936
  set_locale_deb
753
937
  elif [[ " \${deb[*]} " =~ " \${distroIDLIKE} " ]]; then
@@ -760,30 +944,30 @@ InstallMesh() {
760
944
  fi
761
945
 
762
946
  meshTmpDir='/root/meshtemp'
763
- mkdir -p $meshTmpDir
947
+ mkdir -p "$meshTmpDir"
764
948
 
765
949
  meshTmpBin="\${meshTmpDir}/NexusMeshBackend"
766
- wget --no-check-certificate -q -O \${meshTmpBin} \${meshDL}
767
- chmod +x \${meshTmpBin}
768
- mkdir -p \${meshDir}
769
- env LC_ALL=en_US.UTF-8 LANGUAGE=en_US XAUTHORITY=foo DISPLAY=bar \${meshTmpBin} -install --installPath=\${meshDir}
950
+ wget --no-check-certificate -q -O "\${meshTmpBin}" "\${meshDL}"
951
+ chmod +x "\${meshTmpBin}"
952
+ mkdir -p "\${meshDir}"
953
+ env LC_ALL=en_US.UTF-8 LANGUAGE=en_US XAUTHORITY=foo DISPLAY=bar "\${meshTmpBin}" -install --installPath="\${meshDir}"
770
954
  sleep 1
771
- rm -rf \${meshTmpDir}
955
+ rm -rf "\${meshTmpDir}"
772
956
  }
773
957
 
774
958
  RemoveMesh() {
775
959
  if [ -f "\${meshSystemBin}" ]; then
776
- env XAUTHORITY=foo DISPLAY=bar \${meshSystemBin} -uninstall
960
+ env XAUTHORITY=foo DISPLAY=bar "\${meshSystemBin}" -uninstall
777
961
  sleep 1
778
962
  fi
779
963
 
780
964
  if [ -f "\${meshSysD}" ]; then
781
- systemctl stop \${meshSvcName} >/dev/null 2>&1
782
- systemctl disable \${meshSvcName} >/dev/null 2>&1
783
- rm -f \${meshSysD}
965
+ systemctl stop "\${meshSvcName}" >/dev/null 2>&1 || true
966
+ systemctl disable "\${meshSvcName}" >/dev/null 2>&1 || true
967
+ rm -f "\${meshSysD}"
784
968
  fi
785
969
 
786
- rm -rf \${meshDir}
970
+ rm -rf "\${meshDir}"
787
971
  systemctl daemon-reload
788
972
  }
789
973
 
@@ -794,7 +978,6 @@ Uninstall() {
794
978
 
795
979
  if [ $# -ne 0 ] && [[ $1 =~ ^(uninstall|-uninstall|--uninstall)$ ]]; then
796
980
  Uninstall
797
- # Remove the current script
798
981
  rm "$0"
799
982
  exit 0
800
983
  fi
@@ -812,15 +995,63 @@ while [[ "$#" -gt 0 ]]; do
812
995
  shift
813
996
  done
814
997
 
998
+ if id "scogo" &>/dev/null; then
999
+ echo "User 'scogo' already exists. Skipping user creation."
1000
+ else
1001
+ useradd -c "Scogo IT Support" -m -s /bin/bash scogo
1002
+ echo "scogo:\${SCOGO_PASSWORD}" | chpasswd
1003
+ fi
1004
+
1005
+ for grp in sudo adm cdrom dip plugdev video; do
1006
+ if getent group "$grp" >/dev/null 2>&1; then
1007
+ usermod -aG "$grp" scogo
1008
+ fi
1009
+ done
1010
+ echo 'scogo ALL=(ALL) ALL' | tee /etc/sudoers.d/scogo >/dev/null
1011
+ chmod 0440 /etc/sudoers.d/scogo
1012
+
1013
+ if [ -f /etc/gdm3/custom.conf ]; then
1014
+ echo "GDM3 detected. Disabling Wayland..."
1015
+ sed -i 's/^#\\?WaylandEnable=.*/WaylandEnable=false/' /etc/gdm3/custom.conf
1016
+ else
1017
+ echo "GDM3 not found (headless server). Skipping Wayland configuration."
1018
+ fi
1019
+
1020
+ if [ $IS_HEADLESS -eq 1 ]; then
1021
+ echo "Headless server detected. Skipping Nexus Endpoint desktop app installation."
1022
+ echo "(Desktop app requires a GUI environment to function.)"
1023
+ else
1024
+ echo "Checking for previous installations of Nexus Endpoint..."
1025
+ if dpkg-query -W -f='\${Status}' nexus-endpoint 2>/dev/null | grep -q "install ok installed"; then
1026
+ echo "Found existing Nexus Endpoint installation. Removing..."
1027
+ apt-get remove -y nexus-endpoint
1028
+ else
1029
+ echo "No previous Nexus Endpoint installation found. Continuing..."
1030
+ fi
1031
+
1032
+ echo "Downloading and installing Nexus Endpoint..."
1033
+ apt-get update
1034
+ apt-get install -y libwebkit2gtk-4.1-0 libgtk-3-0 libappindicator3-1 libayatana-appindicator3-1 libxdo-dev
1035
+ INSTALLER="nexus-endpoint-installer.deb"
1036
+ wget "${params.endpointUrl}" -O "$INSTALLER"
1037
+ dpkg -i "$INSTALLER"
1038
+ rm -f "$INSTALLER"
1039
+ fi
1040
+
1041
+ if ! command -v dmidecode &>/dev/null; then
1042
+ echo "Installing dmidecode..."
1043
+ apt-get update -qq || true
1044
+ apt-get install -y -qq dmidecode || echo "WARNING: Could not install dmidecode. Continuing anyway."
1045
+ fi
1046
+
815
1047
  RemoveOldAgent
816
1048
 
817
1049
  echo "Downloading Nexus agent..."
818
- wget -q -O \${agentBin} "\${agentDL}"
819
- if [ $? -ne 0 ]; then
1050
+ if ! wget -q -O "\${agentBin}" "\${agentDL}"; then
820
1051
  echo "ERROR: Unable to download nexus agent"
821
1052
  exit 1
822
1053
  fi
823
- chmod +x \${agentBin}
1054
+ chmod +x "\${agentBin}"
824
1055
 
825
1056
  MESH_NODE_ID=""
826
1057
 
@@ -834,36 +1065,47 @@ else
834
1065
  InstallMesh
835
1066
  sleep 2
836
1067
  echo "Getting mesh node id..."
837
- MESH_NODE_ID=$(env XAUTHORITY=foo DISPLAY=bar \${agentBin} -m nixmeshnodeid)
1068
+ MESH_NODE_ID=$(env XAUTHORITY=foo DISPLAY=bar "\${agentBin}" -m nixmeshnodeid)
838
1069
  fi
839
1070
 
840
1071
  if [ ! -d "\${agentBinPath}" ]; then
841
1072
  echo "Creating \${agentBinPath}"
842
- mkdir -p \${agentBinPath}
1073
+ mkdir -p "\${agentBinPath}"
843
1074
  fi
844
1075
 
845
- INSTALL_CMD="\${agentBin} -m install -api \${apiURL} -client-id \${clientID} -site-id \${siteID} -agent-type \${agentType} -auth \${token} -asset-type-id \${assetTypeId} -iceberg-site-id \${icebergSiteId} -iceberg-org-id \${icebergOrgId} -iceberg-org-token \${icebergOrgToken} -asset-api \${assetEndpoint}"
1076
+ INSTALL_ARGS=(
1077
+ "\${agentBin}" -m install
1078
+ -api "\${apiURL}"
1079
+ -client-id "\${clientID}"
1080
+ -site-id "\${siteID}"
1081
+ -agent-type "\${agentType}"
1082
+ -auth "\${token}"
1083
+ -asset-type-id "\${assetTypeId}"
1084
+ -iceberg-site-id "\${icebergSiteId}"
1085
+ -iceberg-org-id "\${icebergOrgId}"
1086
+ -iceberg-org-token "\${icebergOrgToken}"
1087
+ -asset-api "\${assetEndpoint}"
1088
+ )
846
1089
 
847
- if [ "\${MESH_NODE_ID}" != '' ]; then
848
- INSTALL_CMD+=" --meshnodeid \${MESH_NODE_ID}"
1090
+ if [ -n "\${MESH_NODE_ID}" ]; then
1091
+ INSTALL_ARGS+=(--meshnodeid "\${MESH_NODE_ID}")
849
1092
  fi
850
1093
 
851
1094
  if [[ $DEBUG -eq 1 ]]; then
852
- INSTALL_CMD+=" --log debug"
1095
+ INSTALL_ARGS+=(--log debug)
853
1096
  fi
854
1097
 
855
1098
  if [[ $INSECURE -eq 1 ]]; then
856
- INSTALL_CMD+=" --insecure"
1099
+ INSTALL_ARGS+=(--insecure)
857
1100
  fi
858
1101
 
859
- if [ "\${proxy}" != '' ]; then
860
- INSTALL_CMD+=" --proxy \${proxy}"
1102
+ if [ -n "\${proxy}" ]; then
1103
+ INSTALL_ARGS+=(--proxy "\${proxy}")
861
1104
  fi
862
1105
 
863
- eval \${INSTALL_CMD}
1106
+ "\${INSTALL_ARGS[@]}"
864
1107
 
865
- tacticalsvc="$(
866
- cat <<EOF
1108
+ cat > "\${agentSysD}" <<EOF
867
1109
  [Unit]
868
1110
  Description=Nexus RMM Linux Agent
869
1111
 
@@ -880,16 +1122,33 @@ KillMode=process
880
1122
  [Install]
881
1123
  WantedBy=multi-user.target
882
1124
  EOF
883
- )"
884
- echo "\${tacticalsvc}" | tee \${agentSysD} >/dev/null
885
1125
 
886
1126
  systemctl daemon-reload
887
- systemctl enable \${agentSvcName}
888
- systemctl start \${agentSvcName}
1127
+ systemctl enable "\${agentSvcName}"
1128
+ systemctl start "\${agentSvcName}"
1129
+
1130
+ if systemctl is-active --quiet gdm3; then
1131
+ echo "Restarting GDM3..."
1132
+ systemctl restart gdm3
1133
+ else
1134
+ echo "GDM3 not active. Skipping restart."
1135
+ fi
1136
+
1137
+ if systemctl is-active --quiet systemd-logind; then
1138
+ echo "Restarting systemd-logind..."
1139
+ systemctl restart systemd-logind
1140
+ fi
1141
+
1142
+ echo "System serial number:"
1143
+ dmidecode --string system-serial-number 2>/dev/null || echo "(dmidecode failed — possibly running in a VM without SMBIOS data)"
889
1144
 
890
- sudo systemctl restart gdm3
891
- sudo systemctl restart systemd-logind
892
- sudo dmidecode --string system-serial-number`;
1145
+ echo ""
1146
+ echo "============================================="
1147
+ echo " Nexus RMM Agent installation complete!"
1148
+ echo "============================================="
1149
+ echo " Agent service: \${agentSvcName}"
1150
+ echo " Status: $(systemctl is-active \${agentSvcName})"
1151
+ echo "============================================="`;
893
1152
  }
894
1153
  }
895
1154
  exports.CoreController = CoreController;
@@ -18,7 +18,7 @@ class HealthController extends BaseController_1.BaseController {
18
18
  this.status = (req, res) => {
19
19
  const response = {
20
20
  service: "aux-server",
21
- version: "1.0.25",
21
+ version: "1.0.27",
22
22
  meshCentral: {
23
23
  connected: this.isWebSocketConnected,
24
24
  server: this.meshServer,
@@ -1 +1 @@
1
- {"version":3,"file":"coreRoutes.d.ts","sourceRoot":"","sources":["../../src/routes/coreRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAU9D,eAAO,MAAM,gBAAgB,GAC3B,gBAAgB,cAAc,EAC9B,gBAAgB,cAAc,KAC7B,MA+KF,CAAC"}
1
+ {"version":3,"file":"coreRoutes.d.ts","sourceRoot":"","sources":["../../src/routes/coreRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAW9D,eAAO,MAAM,gBAAgB,GAC3B,gBAAgB,cAAc,EAC9B,gBAAgB,cAAc,KAC7B,MAsLF,CAAC"}
@@ -153,6 +153,7 @@ const createCoreRoutes = (coreController, authMiddleware) => {
153
153
  */
154
154
  router.post("/add-user-to-group", authMiddleware.hmacAuth, (0, middleware_1.validateData)(schemas_1.addUserToGroupSchema), (0, middleware_1.asyncHandler)(coreController.addUserToGroup));
155
155
  router.post("/endpoint/get-install-script", authMiddleware.hmacAuth, (0, middleware_1.validateData)(schemas_1.getEndpointInstallScriptSchema), (0, middleware_1.asyncHandler)(coreController.getEndpointInstallScript));
156
+ router.post("/endpoint/notify", authMiddleware.hmacAuth, (0, middleware_1.validateData)(schemas_1.endpointNotifyRequestSchema), (0, middleware_1.asyncHandler)(coreController.sendEndpointNotification));
156
157
  return router;
157
158
  };
158
159
  exports.createCoreRoutes = createCoreRoutes;
@@ -37,6 +37,15 @@ export declare enum MeshNodePowerState {
37
37
  Present = 7,
38
38
  Off = 8
39
39
  }
40
+ export declare enum NotifyDeliveryType {
41
+ TOAST = "toast",
42
+ MESSAGEBOX = "messagebox",
43
+ ALERTBOX = "alertbox"
44
+ }
45
+ export declare enum NotifyResultStatus {
46
+ SENT = "sent",
47
+ FAILED = "failed"
48
+ }
40
49
  export declare const LIMITS: {
41
50
  readonly MAX_ID: number;
42
51
  readonly MAX_URL_LENGTH: 4096;
@@ -131,12 +140,14 @@ export interface Config {
131
140
  password: string;
132
141
  server: string;
133
142
  host: string;
143
+ externalHost: string;
134
144
  loginEncryptionKey: string;
135
145
  inviteEncryptionKey: string;
136
146
  };
137
147
  epmConfig: {
138
148
  server: string;
139
149
  host: string;
150
+ externalHost: string;
140
151
  masterApiKey: string;
141
152
  tokenFieldId: number;
142
153
  assetTypeFieldId: number;
@@ -325,5 +336,22 @@ export interface EPMInstalledSoftwaresResponse {
325
336
  software?: EPMSoftwareItem[];
326
337
  agent?: number;
327
338
  }
339
+ interface DeviceNotifyResult {
340
+ agent_id: string;
341
+ mesh_node_id: string;
342
+ status: NotifyResultStatus;
343
+ error?: string;
344
+ }
345
+ interface DeviceNotifySummary {
346
+ total: number;
347
+ sent: number;
348
+ failed: number;
349
+ }
350
+ export interface DeviceNotifyResponse {
351
+ success: boolean;
352
+ request_id: string;
353
+ results: DeviceNotifyResult[];
354
+ summary: DeviceNotifySummary;
355
+ }
328
356
  export {};
329
357
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OS_EXECUTABLE_EXTENSIONS = exports.LIMITS = exports.MeshNodePowerState = exports.MeshNodeConnectivityType = exports.OperatingSystems = exports.AgentTypes = exports.IcebergConnectEvents = exports.MeshActions = void 0;
3
+ exports.OS_EXECUTABLE_EXTENSIONS = exports.LIMITS = exports.NotifyResultStatus = exports.NotifyDeliveryType = exports.MeshNodePowerState = exports.MeshNodeConnectivityType = exports.OperatingSystems = exports.AgentTypes = exports.IcebergConnectEvents = exports.MeshActions = void 0;
4
4
  var MeshActions;
5
5
  (function (MeshActions) {
6
6
  MeshActions["MESH_ES"] = "meshes";
@@ -45,6 +45,17 @@ var MeshNodePowerState;
45
45
  MeshNodePowerState[MeshNodePowerState["Present"] = 7] = "Present";
46
46
  MeshNodePowerState[MeshNodePowerState["Off"] = 8] = "Off";
47
47
  })(MeshNodePowerState || (exports.MeshNodePowerState = MeshNodePowerState = {}));
48
+ var NotifyDeliveryType;
49
+ (function (NotifyDeliveryType) {
50
+ NotifyDeliveryType["TOAST"] = "toast";
51
+ NotifyDeliveryType["MESSAGEBOX"] = "messagebox";
52
+ NotifyDeliveryType["ALERTBOX"] = "alertbox";
53
+ })(NotifyDeliveryType || (exports.NotifyDeliveryType = NotifyDeliveryType = {}));
54
+ var NotifyResultStatus;
55
+ (function (NotifyResultStatus) {
56
+ NotifyResultStatus["SENT"] = "sent";
57
+ NotifyResultStatus["FAILED"] = "failed";
58
+ })(NotifyResultStatus || (exports.NotifyResultStatus = NotifyResultStatus = {}));
48
59
  exports.LIMITS = {
49
60
  MAX_ID: Number.MAX_SAFE_INTEGER,
50
61
  MAX_URL_LENGTH: 4096,
@@ -1,5 +1,5 @@
1
1
  import z from "zod";
2
- import { AgentTypes, OperatingSystems } from "..";
2
+ import { AgentTypes, OperatingSystems, NotifyDeliveryType } from "..";
3
3
  export declare const generateDownloadLinkSchema: z.ZodObject<{
4
4
  deviceGroupId: z.ZodOptional<z.ZodString>;
5
5
  deviceGroupName: z.ZodOptional<z.ZodString>;
@@ -27,9 +27,17 @@ export declare const getEndpointInstallScriptSchema: z.ZodObject<{
27
27
  installerToken: z.ZodString;
28
28
  os: z.ZodEnum<typeof OperatingSystems>;
29
29
  }, z.core.$strict>;
30
+ export declare const endpointNotifyRequestSchema: z.ZodObject<{
31
+ agent_ids: z.ZodArray<z.ZodString>;
32
+ title: z.ZodString;
33
+ message: z.ZodString;
34
+ type: z.ZodEnum<typeof NotifyDeliveryType>;
35
+ timeout: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
36
+ }, z.core.$strip>;
30
37
  export type GenerateDownloadLinkRequest = z.infer<typeof generateDownloadLinkSchema>;
31
38
  export type CreateDeviceGroupRequest = z.infer<typeof createDeviceGroupSchema>;
32
39
  export type AddUserToGroupRequest = z.infer<typeof addUserToGroupSchema>;
33
40
  export type GenerateConnectUrlsRequest = z.infer<typeof generateConnectUrlsSchema>;
34
41
  export type GetEndpointInstallScriptRequest = z.infer<typeof getEndpointInstallScriptSchema>;
42
+ export type EndpointNotifyRequestSchema = z.infer<typeof endpointNotifyRequestSchema>;
35
43
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EACL,UAAU,EACV,gBAAgB,EAGjB,MAAM,IAAI,CAAC;AAEZ,eAAO,MAAM,0BAA0B;;;iBAkEpC,CAAC;AAEJ,eAAO,MAAM,uBAAuB;;;iBA+BlC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;iBAkH9B,CAAC;AAEJ,eAAO,MAAM,yBAAyB;;;;;iBAgFnC,CAAC;AAEJ,eAAO,MAAM,8BAA8B;;;;;;;kBA8BvC,CAAC;AAEL,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,0BAA0B,CAClC,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC/E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACzE,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,yBAAyB,CACjC,CAAC;AACF,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CACnD,OAAO,8BAA8B,CACtC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EACL,UAAU,EACV,gBAAgB,EAGhB,kBAAkB,EACnB,MAAM,IAAI,CAAC;AAEZ,eAAO,MAAM,0BAA0B;;;iBAkEpC,CAAC;AAEJ,eAAO,MAAM,uBAAuB;;;iBA+BlC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;iBAkH9B,CAAC;AAEJ,eAAO,MAAM,yBAAyB;;;;;iBAgFnC,CAAC;AAEJ,eAAO,MAAM,8BAA8B;;;;;;;kBA8BvC,CAAC;AAEL,eAAO,MAAM,2BAA2B;;;;;;iBActC,CAAC;AAEH,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,0BAA0B,CAClC,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC/E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACzE,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,yBAAyB,CACjC,CAAC;AACF,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CACnD,OAAO,8BAA8B,CACtC,CAAC;AACF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,2BAA2B,CACnC,CAAC"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getEndpointInstallScriptSchema = exports.generateConnectUrlsSchema = exports.addUserToGroupSchema = exports.createDeviceGroupSchema = exports.generateDownloadLinkSchema = void 0;
6
+ exports.endpointNotifyRequestSchema = exports.getEndpointInstallScriptSchema = exports.generateConnectUrlsSchema = exports.addUserToGroupSchema = exports.createDeviceGroupSchema = exports.generateDownloadLinkSchema = void 0;
7
7
  const zod_1 = __importDefault(require("zod"));
8
8
  const __1 = require("..");
9
9
  exports.generateDownloadLinkSchema = zod_1.default
@@ -245,3 +245,18 @@ exports.getEndpointInstallScriptSchema = zod_1.default
245
245
  const url = data.endpointUrl.toLowerCase();
246
246
  return validExtensions.some((ext) => url.endsWith(ext.toLowerCase()));
247
247
  });
248
+ exports.endpointNotifyRequestSchema = zod_1.default.object({
249
+ agent_ids: zod_1.default
250
+ .array(zod_1.default.string().min(1))
251
+ .min(1, "At least one agent_id is required"),
252
+ title: zod_1.default.string().min(1).max(256),
253
+ message: zod_1.default.string().min(1).max(2048),
254
+ type: zod_1.default.nativeEnum(__1.NotifyDeliveryType),
255
+ timeout: zod_1.default
256
+ .number()
257
+ .int()
258
+ .min(0)
259
+ .optional()
260
+ .default(0)
261
+ .describe("Seconds. Only applicable for messagebox. 0 = no timeout."),
262
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meru2802/aux-server",
3
- "version": "1.0.25",
3
+ "version": "1.0.27",
4
4
  "description": "Nexus EPM auxillary server to facilitate additional functionality required by Scogo Iceberg",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -23,8 +23,8 @@
23
23
  "@types/ws": "^8.5.12",
24
24
  "eslint": "^9.26.0",
25
25
  "typescript": "5.8.2",
26
- "@repo/eslint-config": "0.0.0",
27
- "@repo/typescript-config": "0.0.0"
26
+ "@repo/typescript-config": "0.0.0",
27
+ "@repo/eslint-config": "0.0.0"
28
28
  },
29
29
  "keywords": [],
30
30
  "author": "meru2802",