@meru2802/aux-server 1.0.21 → 1.0.22

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.
@@ -14,6 +14,7 @@ export declare abstract class BaseController {
14
14
  protected get config(): Config;
15
15
  protected get isWebSocketConnected(): boolean;
16
16
  protected get meshServer(): string;
17
+ protected get isRedisConnected(): boolean;
17
18
  protected get httpsAgent(): HttpsProxyAgent<string> | Agent;
18
19
  protected get genResponseId(): string;
19
20
  protected createMeshUsers(meshUsers: MeshUser[]): Promise<{
@@ -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,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;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"}
@@ -30,6 +30,9 @@ class BaseController {
30
30
  get meshServer() {
31
31
  return this.config.meshcentralConfig.server;
32
32
  }
33
+ get isRedisConnected() {
34
+ return this.serviceContainer.getRedisService().isConnected();
35
+ }
33
36
  get httpsAgent() {
34
37
  if (this.config.icebergConfig.proxy_required) {
35
38
  return (0, utils_1.getProxyAgent)(this.config.icebergConfig.HTTPS_PROXY);
@@ -1,8 +1,10 @@
1
1
  import { Request, Response } from "express";
2
- import { IServiceContainer } from "../services/ServiceContainer";
3
2
  import { BaseController } from "./BaseController";
4
3
  export declare class CoreController extends BaseController {
5
- constructor(serviceContainer?: IServiceContainer);
4
+ private static instance;
5
+ private constructor();
6
+ static getInstance(): CoreController;
7
+ sendOnlineEventToIceberg: (meshNodeId: string) => Promise<boolean>;
6
8
  getDownloadLink: (req: Request, res: Response) => Promise<void>;
7
9
  createDeviceGroup: (req: Request, res: Response) => Promise<void>;
8
10
  addUserToGroup: (req: Request, res: Response) => Promise<void>;
@@ -19,5 +21,7 @@ export declare class CoreController extends BaseController {
19
21
  private fetchIcebergDetails;
20
22
  private generateWindowsScript;
21
23
  private generateLinuxScript;
24
+ private parseBootTime;
25
+ private formatBootTime;
22
26
  }
23
27
  //# sourceMappingURL=coreController.d.ts.map
@@ -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;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAuBlD,qBAAa,cAAe,SAAQ,cAAc;gBACpC,gBAAgB,CAAC,EAAE,iBAAiB;IAIzC,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;CA+Q5B"}
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,12 +1,91 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.CoreController = void 0;
4
7
  const BaseController_1 = require("./BaseController");
5
8
  const types_1 = require("../types");
6
9
  const utils_1 = require("../lib/utils");
10
+ const axios_1 = __importDefault(require("axios"));
7
11
  class CoreController extends BaseController_1.BaseController {
8
12
  constructor(serviceContainer) {
9
13
  super(serviceContainer);
14
+ this.sendOnlineEventToIceberg = async (meshNodeId) => {
15
+ var _a, _b;
16
+ try {
17
+ const agentQuery = "SELECT agent_id, site_id, last_seen, boot_time, logged_in_username, last_logged_in_user, offline_time FROM agents_agent WHERE mesh_node_id = $1";
18
+ const agentResult = await this.dbPool.query(agentQuery, [meshNodeId]);
19
+ if (agentResult.rows.length === 0 || !agentResult.rows[0]) {
20
+ console.error(`[sendOnlineEventToIceberg] Agent not found for mesh node id: ${meshNodeId}`);
21
+ return false;
22
+ }
23
+ const agentData = agentResult.rows[0];
24
+ const { agent_id: agentId, site_id: siteId } = agentData;
25
+ const clientQuery = "SELECT client_id FROM clients_site WHERE id = $1";
26
+ const clientResultPromise = this.dbPool.query(clientQuery, [siteId]);
27
+ const installedSoftwaresPromise = axios_1.default.get(`${this.config.epmConfig.server}/software/${agentId}/`, {
28
+ headers: {
29
+ Host: this.config.epmConfig.host,
30
+ "X-API-KEY": this.config.epmConfig.masterApiKey,
31
+ },
32
+ httpsAgent: (0, utils_1.getNoProxyHttpAgent)(),
33
+ validateStatus: () => true,
34
+ });
35
+ const [clientResult, installedSoftwaresResponse] = await Promise.all([
36
+ clientResultPromise,
37
+ installedSoftwaresPromise,
38
+ ]);
39
+ if (clientResult.rows.length === 0 || !clientResult.rows[0]) {
40
+ console.error(`[sendOnlineEventToIceberg] Client not found for site id: ${siteId}`);
41
+ return false;
42
+ }
43
+ if (installedSoftwaresResponse.status !== 200) {
44
+ console.error(`[sendOnlineEventToIceberg] Failed to fetch installed software for agent ${agentId}. Status: ${installedSoftwaresResponse.status}`);
45
+ return false;
46
+ }
47
+ const softwareList = (_b = (_a = installedSoftwaresResponse.data) === null || _a === void 0 ? void 0 : _a.software) !== null && _b !== void 0 ? _b : [];
48
+ const clientId = clientResult.rows[0].client_id;
49
+ const icebergDetails = await this.fetchIcebergDetails(clientId.toString(), siteId.toString());
50
+ if (!icebergDetails) {
51
+ console.error(`[sendOnlineEventToIceberg] Failed to fetch iceberg details for client ${clientId}, site ${siteId}`);
52
+ return false;
53
+ }
54
+ const bootTime = this.formatBootTime(agentData.boot_time);
55
+ const lastSeen = agentData.last_seen.toLocaleString();
56
+ const icebergAgentUpdateEndpoint = `${this.config.icebergConfig.assetEndpoint}/agent/${agentId}`;
57
+ const updateAgentResponse = await axios_1.default.put(icebergAgentUpdateEndpoint, {
58
+ metadata: {
59
+ agent_id: agentId,
60
+ last_seen: lastSeen,
61
+ boot_time: bootTime,
62
+ logged_in_user: agentData.logged_in_username,
63
+ last_logged_in_user: agentData.last_logged_in_user,
64
+ offline_time: agentData.offline_time,
65
+ installed_softwares: softwareList,
66
+ },
67
+ }, {
68
+ headers: {
69
+ Authorization: `Bearer ${icebergDetails.icebergOrgToken}`,
70
+ "x-org-id": icebergDetails.icebergOrgId,
71
+ },
72
+ httpsAgent: this.httpsAgent,
73
+ proxy: false,
74
+ validateStatus: () => true,
75
+ });
76
+ if (updateAgentResponse.status < 200 ||
77
+ updateAgentResponse.status >= 300) {
78
+ console.error(`[sendOnlineEventToIceberg] Failed to update agent ${agentId} in Iceberg. Status: ${updateAgentResponse.status}`);
79
+ return false;
80
+ }
81
+ console.log(`[sendOnlineEventToIceberg] Successfully sent online event for agent ${agentId} to iceberg`);
82
+ return true;
83
+ }
84
+ catch (error) {
85
+ console.error(`[sendOnlineEventToIceberg] Unexpected error for mesh node id ${meshNodeId}:`, error instanceof Error ? error.message : error);
86
+ return false;
87
+ }
88
+ };
10
89
  this.getDownloadLink = async (req, res) => {
11
90
  try {
12
91
  const { deviceGroupName, deviceGroupId } = req.body;
@@ -247,6 +326,25 @@ class CoreController extends BaseController_1.BaseController {
247
326
  this.sendErrorResponse(res, 500, "Internal server error");
248
327
  }
249
328
  };
329
+ this.parseBootTime = (bootTime) => {
330
+ if (bootTime === null || bootTime === undefined) {
331
+ return null;
332
+ }
333
+ return new Date(bootTime * 1000);
334
+ };
335
+ this.formatBootTime = (bootTime) => {
336
+ const date = this.parseBootTime(bootTime);
337
+ if (!date) {
338
+ return "N/A";
339
+ }
340
+ return date.toLocaleString();
341
+ };
342
+ }
343
+ static getInstance() {
344
+ if (!this.instance) {
345
+ this.instance = new CoreController();
346
+ }
347
+ return this.instance;
250
348
  }
251
349
  sendErrorResponse(res, status, error) {
252
350
  const errorResponse = {
@@ -795,3 +893,4 @@ sudo dmidecode --string system-serial-number`;
795
893
  }
796
894
  }
797
895
  exports.CoreController = CoreController;
896
+ CoreController.instance = undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"healthController.d.ts","sourceRoot":"","sources":["../../src/controllers/healthController.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;AAEjE,qBAAa,gBAAiB,SAAQ,cAAc;gBACtC,gBAAgB,CAAC,EAAE,iBAAiB;IAIzC,MAAM,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,IAAI,CAUjD;IAEK,MAAM,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,IAAI,CAgBjD;CACH"}
1
+ {"version":3,"file":"healthController.d.ts","sourceRoot":"","sources":["../../src/controllers/healthController.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;AAEjE,qBAAa,gBAAiB,SAAQ,cAAc;gBACtC,gBAAgB,CAAC,EAAE,iBAAiB;IAIzC,MAAM,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,IAAI,CAUjD;IAEK,MAAM,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,IAAI,CAmBjD;CACH"}
@@ -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.21",
21
+ version: "1.0.22",
22
22
  meshCentral: {
23
23
  connected: this.isWebSocketConnected,
24
24
  server: this.meshServer,
@@ -27,6 +27,9 @@ class HealthController extends BaseController_1.BaseController {
27
27
  connected: !this.dbPool.ended,
28
28
  host: this.dbPool.options.host || "unknown",
29
29
  },
30
+ redis: {
31
+ connected: this.isRedisConnected,
32
+ },
30
33
  uptime: process.uptime(),
31
34
  };
32
35
  res.json(response);
@@ -13,7 +13,7 @@ const middleware_1 = require("../middleware");
13
13
  const setupRoutes = (app) => {
14
14
  const healthController = new healthController_1.HealthController();
15
15
  const apiController = new apiController_1.ApiController();
16
- const coreController = new coreController_1.CoreController();
16
+ const coreController = coreController_1.CoreController.getInstance();
17
17
  const authMiddleware = new authMiddleware_1.AuthMiddleware();
18
18
  const healthRoutes = (0, healthRoutes_1.createHealthRoutes)(healthController);
19
19
  const coreRoute = (0, coreRoutes_1.createCoreRoutes)(coreController, authMiddleware);
@@ -2,10 +2,12 @@ import { Config } from "../types";
2
2
  import { IDatabaseService } from "./DatabaseService";
3
3
  import { IWebSocketService } from "./WebSocketService";
4
4
  import { IHttpServerService } from "./HttpServerService";
5
+ import { IRedisService } from "./RedisService";
5
6
  export interface IApplicationService {
6
7
  getDatabaseService(): IDatabaseService;
7
8
  getWebSocketService(): IWebSocketService;
8
9
  getHttpServerService(): IHttpServerService;
10
+ getRedisService(): IRedisService;
9
11
  start(port?: number): Promise<void>;
10
12
  stop(): Promise<void>;
11
13
  isHealthy(): Promise<boolean>;
@@ -14,6 +16,7 @@ export declare class ApplicationService implements IApplicationService {
14
16
  private databaseService;
15
17
  private webSocketService;
16
18
  private httpServerService;
19
+ private redisService;
17
20
  private config;
18
21
  constructor(config: Config);
19
22
  start(port?: number): Promise<void>;
@@ -22,5 +25,6 @@ export declare class ApplicationService implements IApplicationService {
22
25
  getDatabaseService(): IDatabaseService;
23
26
  getWebSocketService(): IWebSocketService;
24
27
  getHttpServerService(): IHttpServerService;
28
+ getRedisService(): IRedisService;
25
29
  }
26
30
  //# sourceMappingURL=ApplicationService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationService.d.ts","sourceRoot":"","sources":["../../src/services/ApplicationService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAmB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAoB,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAqB,MAAM,qBAAqB,CAAC;AAE5E,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,IAAI,gBAAgB,CAAC;IACvC,mBAAmB,IAAI,iBAAiB,CAAC;IACzC,oBAAoB,IAAI,kBAAkB,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED,qBAAa,kBAAmB,YAAW,mBAAmB;IAC5D,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,gBAAgB,CAAoB;IAC5C,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAOb,KAAK,CAAC,IAAI,GAAE,MAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IASrB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAMnC,kBAAkB,IAAI,gBAAgB;IAItC,mBAAmB,IAAI,iBAAiB;IAIxC,oBAAoB,IAAI,kBAAkB;CAGlD"}
1
+ {"version":3,"file":"ApplicationService.d.ts","sourceRoot":"","sources":["../../src/services/ApplicationService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAmB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAoB,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAqB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAgB,MAAM,gBAAgB,CAAC;AAE7D,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,IAAI,gBAAgB,CAAC;IACvC,mBAAmB,IAAI,iBAAiB,CAAC;IACzC,oBAAoB,IAAI,kBAAkB,CAAC;IAC3C,eAAe,IAAI,aAAa,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED,qBAAa,kBAAmB,YAAW,mBAAmB;IAC5D,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,gBAAgB,CAAoB;IAC5C,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAQb,KAAK,CAAC,IAAI,GAAE,MAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAczC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAMnC,kBAAkB,IAAI,gBAAgB;IAItC,mBAAmB,IAAI,iBAAiB;IAIxC,oBAAoB,IAAI,kBAAkB;IAI1C,eAAe,IAAI,aAAa;CAGxC"}
@@ -4,17 +4,22 @@ exports.ApplicationService = void 0;
4
4
  const DatabaseService_1 = require("./DatabaseService");
5
5
  const WebSocketService_1 = require("./WebSocketService");
6
6
  const HttpServerService_1 = require("./HttpServerService");
7
+ const RedisService_1 = require("./RedisService");
7
8
  class ApplicationService {
8
9
  constructor(config) {
9
10
  this.config = config;
10
11
  this.databaseService = new DatabaseService_1.DatabaseService(this.config.dbConfig);
11
12
  this.webSocketService = new WebSocketService_1.WebSocketService(this.config);
12
13
  this.httpServerService = new HttpServerService_1.HttpServerService(this.config);
14
+ this.redisService = new RedisService_1.RedisService(this.config.redisConfig);
13
15
  }
14
16
  async start(port = 3003) {
15
17
  try {
16
18
  await this.httpServerService.start(port);
17
- this.webSocketService.connect().catch(() => { });
19
+ await Promise.all([
20
+ this.webSocketService.connect().catch(() => { }),
21
+ this.redisService.connect().catch(() => { }),
22
+ ]);
18
23
  }
19
24
  catch (error) {
20
25
  console.error("Failed to start server:", error);
@@ -27,6 +32,7 @@ class ApplicationService {
27
32
  this.httpServerService.stop().catch(() => { }),
28
33
  this.webSocketService.disconnect().catch(() => { }),
29
34
  this.databaseService.disconnect().catch(() => { }),
35
+ this.redisService.disconnect().catch(() => { }),
30
36
  ];
31
37
  await Promise.all(shutdownPromises);
32
38
  }
@@ -42,5 +48,8 @@ class ApplicationService {
42
48
  getHttpServerService() {
43
49
  return this.httpServerService;
44
50
  }
51
+ getRedisService() {
52
+ return this.redisService;
53
+ }
45
54
  }
46
55
  exports.ApplicationService = ApplicationService;
@@ -0,0 +1,75 @@
1
+ import Redis from "ioredis";
2
+ import { Config } from "../types";
3
+ export interface IRedisService {
4
+ connect(): Promise<void>;
5
+ disconnect(): Promise<void>;
6
+ isConnected(): boolean;
7
+ getClient(): Redis;
8
+ get(key: string): Promise<string | null>;
9
+ set(key: string, value: string, ttlSeconds?: number): Promise<void>;
10
+ del(key: string | string[]): Promise<number>;
11
+ exists(key: string | string[]): Promise<number>;
12
+ hget(key: string, field: string): Promise<string | null>;
13
+ hset(key: string, field: string, value: string): Promise<number>;
14
+ hgetall(key: string): Promise<Record<string, string>>;
15
+ hdel(key: string, field: string | string[]): Promise<number>;
16
+ lpush(key: string, ...values: string[]): Promise<number>;
17
+ rpush(key: string, ...values: string[]): Promise<number>;
18
+ lpop(key: string): Promise<string | null>;
19
+ rpop(key: string): Promise<string | null>;
20
+ lrange(key: string, start: number, stop: number): Promise<string[]>;
21
+ llen(key: string): Promise<number>;
22
+ sadd(key: string, ...members: string[]): Promise<number>;
23
+ srem(key: string, ...members: string[]): Promise<number>;
24
+ smembers(key: string): Promise<string[]>;
25
+ sismember(key: string, member: string): Promise<number>;
26
+ expire(key: string, seconds: number): Promise<number>;
27
+ ttl(key: string): Promise<number>;
28
+ keys(pattern: string): Promise<string[]>;
29
+ publish(channel: string, message: string): Promise<number>;
30
+ subscribe(channel: string, callback: (channel: string, message: string) => void): Promise<void>;
31
+ unsubscribe(channel: string): Promise<void>;
32
+ ping(): Promise<string>;
33
+ flushdb(): Promise<string>;
34
+ }
35
+ export declare class RedisService implements IRedisService {
36
+ private client;
37
+ private subscriber;
38
+ private config;
39
+ private connected;
40
+ private subscriptions;
41
+ constructor(config: Config["redisConfig"]);
42
+ private createClient;
43
+ private setupEventHandlers;
44
+ connect(): Promise<void>;
45
+ disconnect(): Promise<void>;
46
+ isConnected(): boolean;
47
+ getClient(): Redis;
48
+ get(key: string): Promise<string | null>;
49
+ set(key: string, value: string, ttlSeconds?: number): Promise<void>;
50
+ del(key: string | string[]): Promise<number>;
51
+ exists(key: string | string[]): Promise<number>;
52
+ hget(key: string, field: string): Promise<string | null>;
53
+ hset(key: string, field: string, value: string): Promise<number>;
54
+ hgetall(key: string): Promise<Record<string, string>>;
55
+ hdel(key: string, field: string | string[]): Promise<number>;
56
+ lpush(key: string, ...values: string[]): Promise<number>;
57
+ rpush(key: string, ...values: string[]): Promise<number>;
58
+ lpop(key: string): Promise<string | null>;
59
+ rpop(key: string): Promise<string | null>;
60
+ lrange(key: string, start: number, stop: number): Promise<string[]>;
61
+ llen(key: string): Promise<number>;
62
+ sadd(key: string, ...members: string[]): Promise<number>;
63
+ srem(key: string, ...members: string[]): Promise<number>;
64
+ smembers(key: string): Promise<string[]>;
65
+ sismember(key: string, member: string): Promise<number>;
66
+ expire(key: string, seconds: number): Promise<number>;
67
+ ttl(key: string): Promise<number>;
68
+ keys(pattern: string): Promise<string[]>;
69
+ publish(channel: string, message: string): Promise<number>;
70
+ subscribe(channel: string, callback: (channel: string, message: string) => void): Promise<void>;
71
+ unsubscribe(channel: string): Promise<void>;
72
+ ping(): Promise<string>;
73
+ flushdb(): Promise<string>;
74
+ }
75
+ //# sourceMappingURL=RedisService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedisService.d.ts","sourceRoot":"","sources":["../../src/services/RedisService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RedisService = void 0;
7
+ const ioredis_1 = __importDefault(require("ioredis"));
8
+ class RedisService {
9
+ constructor(config) {
10
+ this.subscriber = null;
11
+ this.connected = false;
12
+ this.subscriptions = new Map();
13
+ this.config = config;
14
+ this.client = this.createClient();
15
+ this.setupEventHandlers();
16
+ }
17
+ createClient() {
18
+ const options = {
19
+ host: this.config.host,
20
+ port: this.config.port,
21
+ password: this.config.password || undefined,
22
+ db: this.config.db || 0,
23
+ retryStrategy: (times) => {
24
+ if (times > this.config.maxRetries) {
25
+ console.error(`Redis: Max retries (${this.config.maxRetries}) exceeded`);
26
+ return null;
27
+ }
28
+ const delay = Math.min(times * 100, 3000);
29
+ console.log(`Redis: Retrying connection in ${delay}ms (attempt ${times})`);
30
+ return delay;
31
+ },
32
+ maxRetriesPerRequest: 3,
33
+ enableReadyCheck: true,
34
+ connectTimeout: this.config.connectTimeout || 10000,
35
+ lazyConnect: true,
36
+ };
37
+ if (this.config.tls) {
38
+ options.tls = {};
39
+ }
40
+ return new ioredis_1.default(options);
41
+ }
42
+ setupEventHandlers() {
43
+ this.client.on("connect", () => {
44
+ console.log("Redis: Connecting...");
45
+ });
46
+ this.client.on("ready", () => {
47
+ this.connected = true;
48
+ console.log("Redis: Connection established");
49
+ });
50
+ this.client.on("error", (error) => {
51
+ console.error("Redis: Connection error:", error.message);
52
+ });
53
+ this.client.on("close", () => {
54
+ this.connected = false;
55
+ console.log("Redis: Connection closed");
56
+ });
57
+ this.client.on("reconnecting", () => {
58
+ console.log("Redis: Reconnecting...");
59
+ });
60
+ this.client.on("end", () => {
61
+ this.connected = false;
62
+ console.log("Redis: Connection ended");
63
+ });
64
+ }
65
+ async connect() {
66
+ try {
67
+ await this.client.connect();
68
+ this.connected = true;
69
+ }
70
+ catch (error) {
71
+ console.error("Redis: Failed to connect:", error);
72
+ throw error;
73
+ }
74
+ }
75
+ async disconnect() {
76
+ try {
77
+ if (this.subscriber) {
78
+ await this.subscriber.quit();
79
+ this.subscriber = null;
80
+ }
81
+ await this.client.quit();
82
+ this.connected = false;
83
+ this.subscriptions.clear();
84
+ }
85
+ catch (error) {
86
+ console.error("Redis: Error during disconnect:", error);
87
+ throw error;
88
+ }
89
+ }
90
+ isConnected() {
91
+ return this.connected && this.client.status === "ready";
92
+ }
93
+ getClient() {
94
+ return this.client;
95
+ }
96
+ // Basic operations
97
+ async get(key) {
98
+ return this.client.get(key);
99
+ }
100
+ async set(key, value, ttlSeconds) {
101
+ if (ttlSeconds) {
102
+ await this.client.setex(key, ttlSeconds, value);
103
+ }
104
+ else {
105
+ await this.client.set(key, value);
106
+ }
107
+ }
108
+ async del(key) {
109
+ const keys = Array.isArray(key) ? key : [key];
110
+ return this.client.del(...keys);
111
+ }
112
+ async exists(key) {
113
+ const keys = Array.isArray(key) ? key : [key];
114
+ return this.client.exists(...keys);
115
+ }
116
+ // Hash operations
117
+ async hget(key, field) {
118
+ return this.client.hget(key, field);
119
+ }
120
+ async hset(key, field, value) {
121
+ return this.client.hset(key, field, value);
122
+ }
123
+ async hgetall(key) {
124
+ return this.client.hgetall(key);
125
+ }
126
+ async hdel(key, field) {
127
+ const fields = Array.isArray(field) ? field : [field];
128
+ return this.client.hdel(key, ...fields);
129
+ }
130
+ // List operations
131
+ async lpush(key, ...values) {
132
+ return this.client.lpush(key, ...values);
133
+ }
134
+ async rpush(key, ...values) {
135
+ return this.client.rpush(key, ...values);
136
+ }
137
+ async lpop(key) {
138
+ return this.client.lpop(key);
139
+ }
140
+ async rpop(key) {
141
+ return this.client.rpop(key);
142
+ }
143
+ async lrange(key, start, stop) {
144
+ return this.client.lrange(key, start, stop);
145
+ }
146
+ async llen(key) {
147
+ return this.client.llen(key);
148
+ }
149
+ // Set operations
150
+ async sadd(key, ...members) {
151
+ return this.client.sadd(key, ...members);
152
+ }
153
+ async srem(key, ...members) {
154
+ return this.client.srem(key, ...members);
155
+ }
156
+ async smembers(key) {
157
+ return this.client.smembers(key);
158
+ }
159
+ async sismember(key, member) {
160
+ return this.client.sismember(key, member);
161
+ }
162
+ // Key operations
163
+ async expire(key, seconds) {
164
+ return this.client.expire(key, seconds);
165
+ }
166
+ async ttl(key) {
167
+ return this.client.ttl(key);
168
+ }
169
+ async keys(pattern) {
170
+ return this.client.keys(pattern);
171
+ }
172
+ // Pub/Sub
173
+ async publish(channel, message) {
174
+ return this.client.publish(channel, message);
175
+ }
176
+ async subscribe(channel, callback) {
177
+ if (!this.subscriber) {
178
+ this.subscriber = this.client.duplicate();
179
+ await this.subscriber.connect();
180
+ this.subscriber.on("message", (ch, msg) => {
181
+ const handler = this.subscriptions.get(ch);
182
+ if (handler) {
183
+ handler(ch, msg);
184
+ }
185
+ });
186
+ }
187
+ this.subscriptions.set(channel, callback);
188
+ await this.subscriber.subscribe(channel);
189
+ }
190
+ async unsubscribe(channel) {
191
+ if (this.subscriber) {
192
+ await this.subscriber.unsubscribe(channel);
193
+ this.subscriptions.delete(channel);
194
+ }
195
+ }
196
+ // Utility
197
+ async ping() {
198
+ return this.client.ping();
199
+ }
200
+ async flushdb() {
201
+ return this.client.flushdb();
202
+ }
203
+ }
204
+ exports.RedisService = RedisService;
@@ -3,11 +3,13 @@ import { IApplicationService } from "./ApplicationService";
3
3
  import { IDatabaseService } from "./DatabaseService";
4
4
  import { IWebSocketService } from "./WebSocketService";
5
5
  import { IHttpServerService } from "./HttpServerService";
6
+ import { IRedisService } from "./RedisService";
6
7
  export interface IServiceContainer {
7
8
  getApplicationService(): IApplicationService;
8
9
  getDatabaseService(): IDatabaseService;
9
10
  getWebSocketService(): IWebSocketService;
10
11
  getHttpServerService(): IHttpServerService;
12
+ getRedisService(): IRedisService;
11
13
  getConfig(): Config;
12
14
  }
13
15
  export declare class ServiceContainer implements IServiceContainer {
@@ -21,6 +23,7 @@ export declare class ServiceContainer implements IServiceContainer {
21
23
  getDatabaseService(): IDatabaseService;
22
24
  getWebSocketService(): IWebSocketService;
23
25
  getHttpServerService(): IHttpServerService;
26
+ getRedisService(): IRedisService;
24
27
  getConfig(): Config;
25
28
  }
26
29
  //# sourceMappingURL=ServiceContainer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceContainer.d.ts","sourceRoot":"","sources":["../../src/services/ServiceContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAsB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,qBAAqB,IAAI,mBAAmB,CAAC;IAC7C,kBAAkB,IAAI,gBAAgB,CAAC;IACvC,mBAAmB,IAAI,iBAAiB,CAAC;IACzC,oBAAoB,IAAI,kBAAkB,CAAC;IAC3C,SAAS,IAAI,MAAM,CAAC;CACrB;AAED,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,kBAAkB,CAAsB;IAChD,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO;WAKO,WAAW,IAAI,gBAAgB;WAS/B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB;IAQnD,qBAAqB,IAAI,mBAAmB;IAI5C,kBAAkB,IAAI,gBAAgB;IAItC,mBAAmB,IAAI,iBAAiB;IAIxC,oBAAoB,IAAI,kBAAkB;IAI1C,SAAS,IAAI,MAAM;CAG3B"}
1
+ {"version":3,"file":"ServiceContainer.d.ts","sourceRoot":"","sources":["../../src/services/ServiceContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAsB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAChC,qBAAqB,IAAI,mBAAmB,CAAC;IAC7C,kBAAkB,IAAI,gBAAgB,CAAC;IACvC,mBAAmB,IAAI,iBAAiB,CAAC;IACzC,oBAAoB,IAAI,kBAAkB,CAAC;IAC3C,eAAe,IAAI,aAAa,CAAC;IACjC,SAAS,IAAI,MAAM,CAAC;CACrB;AAED,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,kBAAkB,CAAsB;IAChD,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO;WAKO,WAAW,IAAI,gBAAgB;WAS/B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB;IAQnD,qBAAqB,IAAI,mBAAmB;IAI5C,kBAAkB,IAAI,gBAAgB;IAItC,mBAAmB,IAAI,iBAAiB;IAIxC,oBAAoB,IAAI,kBAAkB;IAI1C,eAAe,IAAI,aAAa;IAIhC,SAAS,IAAI,MAAM;CAG3B"}
@@ -32,6 +32,9 @@ class ServiceContainer {
32
32
  getHttpServerService() {
33
33
  return this.applicationService.getHttpServerService();
34
34
  }
35
+ getRedisService() {
36
+ return this.applicationService.getRedisService();
37
+ }
35
38
  getConfig() {
36
39
  return this.config;
37
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WebSocketService.d.ts","sourceRoot":"","sources":["../../src/services/WebSocketService.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAC;AAE3B,OAAO,EACL,MAAM,EAKP,MAAM,UAAU,CAAC;AAOlB,MAAM,WAAW,iBAAiB;IAChC,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC;IACjC,WAAW,IAAI,OAAO,CAAC;IACvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC;CACpC;AAED,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,oBAAoB,CAAc;IAC1C,OAAO,CAAC,cAAc,CAAiB;gBAE3B,MAAM,EAAE,MAAM;IAIb,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8CxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBjC,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;IAiBlC,YAAY,IAAI,SAAS,GAAG,IAAI;IAIhC,WAAW,IAAI,OAAO;YAQf,aAAa;IAiC3B,OAAO,CAAC,iBAAiB;IAmCzB,OAAO,CAAC,UAAU;CAOnB"}
1
+ {"version":3,"file":"WebSocketService.d.ts","sourceRoot":"","sources":["../../src/services/WebSocketService.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAC;AAE3B,OAAO,EACL,MAAM,EAMP,MAAM,UAAU,CAAC;AAQlB,MAAM,WAAW,iBAAiB;IAChC,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC;IACjC,WAAW,IAAI,OAAO,CAAC;IACvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC;CACpC;AAED,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,oBAAoB,CAAc;IAC1C,OAAO,CAAC,cAAc,CAAiB;gBAE3B,MAAM,EAAE,MAAM;IAIb,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8CxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBjC,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;IAiBlC,YAAY,IAAI,SAAS,GAAG,IAAI;IAIhC,WAAW,IAAI,OAAO;YAQf,aAAa;IAgD3B,OAAO,CAAC,iBAAiB;IAmCzB,OAAO,CAAC,UAAU;CAOnB"}
@@ -43,6 +43,7 @@ const types_1 = require("../types");
43
43
  const utils_1 = require("@meru2802/rmm-lib/utils");
44
44
  const axios_1 = __importDefault(require("axios"));
45
45
  const utils_2 = require("../lib/utils");
46
+ const coreController_1 = require("../controllers/coreController");
46
47
  class WebSocketService {
47
48
  constructor(config) {
48
49
  this.ws = null;
@@ -152,6 +153,20 @@ class WebSocketService {
152
153
  proxy: false,
153
154
  });
154
155
  }
156
+ else if (message.event.action === "nodeconnect") {
157
+ const nodeConnectEvent = message.event;
158
+ const meshNodeIdB64 = nodeConnectEvent.nodeid;
159
+ const conn = nodeConnectEvent.conn;
160
+ const powerState = nodeConnectEvent.pwr;
161
+ const meshNodeId = (0, utils_1.base64ToHex)(meshNodeIdB64);
162
+ if (powerState === 1 && conn > 0) {
163
+ console.log(`Machine ${meshNodeId} came online!`);
164
+ coreController_1.CoreController.getInstance().sendOnlineEventToIceberg(meshNodeId);
165
+ }
166
+ else if (powerState === 0 || conn === 0) {
167
+ console.log(`Node ${meshNodeId} went OFFLINE`);
168
+ }
169
+ }
155
170
  break;
156
171
  }
157
172
  }
@@ -18,6 +18,25 @@ export declare enum OperatingSystems {
18
18
  MACOS = "macos",
19
19
  "LINUX" = "linux"
20
20
  }
21
+ export declare enum MeshNodeConnectivityType {
22
+ None = 0,
23
+ MeshAgent = 1,
24
+ IntelAmtCira = 2,
25
+ IntelAmtLocal = 4,
26
+ IntelAmtRelay = 8,
27
+ Mqtt = 16
28
+ }
29
+ export declare enum MeshNodePowerState {
30
+ Unknown = 0,
31
+ PoweredOn = 1,
32
+ SleepS1 = 2,
33
+ SleepS2 = 3,
34
+ DeepSleep = 4,
35
+ Hibernating = 5,
36
+ SoftOff = 6,
37
+ Present = 7,
38
+ Off = 8
39
+ }
21
40
  export declare const LIMITS: {
22
41
  readonly MAX_ID: number;
23
42
  readonly MAX_URL_LENGTH: 4096;
@@ -29,6 +48,18 @@ export declare const OS_EXECUTABLE_EXTENSIONS: {
29
48
  readonly macos: readonly [".dmg", ".pkg"];
30
49
  readonly linux: readonly [".deb", ".rpm", ".AppImage"];
31
50
  };
51
+ export interface MeshNodeConnectEvent {
52
+ action: "nodeconnect";
53
+ nodeid: string;
54
+ meshid: string;
55
+ domain: string;
56
+ conn: number;
57
+ pwr: MeshNodePowerState;
58
+ ct?: number;
59
+ nolog: 1;
60
+ nopeers: 1;
61
+ id: number;
62
+ }
32
63
  export interface ApiKeyData {
33
64
  id: number;
34
65
  username: string;
@@ -126,6 +157,15 @@ export interface Config {
126
157
  password: string;
127
158
  database: string;
128
159
  };
160
+ redisConfig: {
161
+ host: string;
162
+ port: number;
163
+ password?: string;
164
+ db?: number;
165
+ tls?: boolean;
166
+ maxRetries: number;
167
+ connectTimeout?: number;
168
+ };
129
169
  logging: {
130
170
  level: string;
131
171
  directory: string;
@@ -152,6 +192,9 @@ export interface StatusResponse {
152
192
  connected: boolean;
153
193
  host: string;
154
194
  };
195
+ redis: {
196
+ connected: boolean;
197
+ };
155
198
  uptime: number;
156
199
  }
157
200
  export interface DownloadLinkResponse {
@@ -267,5 +310,20 @@ export interface MeshUser {
267
310
  fullName: string;
268
311
  email: string;
269
312
  }
313
+ export interface EPMSoftwareItem {
314
+ name?: string;
315
+ size?: string;
316
+ source?: string;
317
+ version?: string;
318
+ location?: string;
319
+ publisher?: string;
320
+ uninstall?: string;
321
+ install_date?: string;
322
+ }
323
+ export interface EPMInstalledSoftwaresResponse {
324
+ id?: number;
325
+ software?: EPMSoftwareItem[];
326
+ agent?: number;
327
+ }
270
328
  export {};
271
329
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAEnC,oBAAY,WAAW;IACrB,OAAO,WAAW;IAClB,KAAK,UAAU;IACf,WAAW,eAAe;IAC1B,aAAa,gBAAgB;IAC7B,QAAQ,YAAY;CACrB;AAED,oBAAY,oBAAoB;IAC9B,YAAY,iBAAiB;CAC9B;AAED,oBAAY,UAAU;IACpB,WAAW,gBAAgB;IAC3B,MAAM,WAAW;CAClB;AAED,oBAAY,gBAAgB;IAC1B,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,OAAO,UAAU;CAClB;AAED,eAAO,MAAM,MAAM;;;;;CAKT,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;CAI3B,CAAC;AAEX,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,SAAS;IACjB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC5B;AAED,UAAU,IAAI;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,IAAI,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC;IAChC,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,CAAC,OAAO,EAAE,MAAM,GAAG;YACjB,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IACpE,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,MAAM;IACrB,YAAY,EAAE;QACZ,WAAW,EAAE,iBAAiB,CAAC;KAChC,CAAC;IAEF,iBAAiB,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,kBAAkB,EAAE,MAAM,CAAC;QAC3B,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;IAEF,SAAS,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IAEF,aAAa,EAAE;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE;QACX,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,EAAE;QACR,SAAS,EAAE,OAAO,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE;YACP,GAAG,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,aAAa,EAAE,OAAO,CAAC;YACvB,UAAU,EAAE,MAAM,CAAC;YACnB,QAAQ,EAAE,MAAM,CAAC;YACjB,SAAS,EAAE,MAAM,CAAC;YAClB,KAAK,EAAE;gBACL,CAAC,MAAM,EAAE,MAAM,GAAG;oBAChB,MAAM,EAAE,MAAM,CAAC;iBAChB,CAAC;aACH,CAAC;SACH,CAAC;QACF,MAAM,EAAE,eAAe,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,OAAO,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC,EAAE,MAAM,CAAC;IAChD,yCAAyC,EAAE,MAAM,CAAC;IAClD,mDAAmD,EAAE,MAAM,CAAC;IAC5D,sDAAsD,EAAE,WAAW,CAAC;IACpE,mCAAmC,EAAE,WAAW,CAAC;CAClD;AAED,UAAU,WAAW;IACnB,CAAC,QAAQ,EAAE,MAAM,GAAG;QAClB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC;KAClC,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf"}
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.OperatingSystems = exports.AgentTypes = exports.IcebergConnectEvents = exports.MeshActions = void 0;
3
+ exports.OS_EXECUTABLE_EXTENSIONS = exports.LIMITS = 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";
@@ -24,6 +24,27 @@ var OperatingSystems;
24
24
  OperatingSystems["MACOS"] = "macos";
25
25
  OperatingSystems["LINUX"] = "linux";
26
26
  })(OperatingSystems || (exports.OperatingSystems = OperatingSystems = {}));
27
+ var MeshNodeConnectivityType;
28
+ (function (MeshNodeConnectivityType) {
29
+ MeshNodeConnectivityType[MeshNodeConnectivityType["None"] = 0] = "None";
30
+ MeshNodeConnectivityType[MeshNodeConnectivityType["MeshAgent"] = 1] = "MeshAgent";
31
+ MeshNodeConnectivityType[MeshNodeConnectivityType["IntelAmtCira"] = 2] = "IntelAmtCira";
32
+ MeshNodeConnectivityType[MeshNodeConnectivityType["IntelAmtLocal"] = 4] = "IntelAmtLocal";
33
+ MeshNodeConnectivityType[MeshNodeConnectivityType["IntelAmtRelay"] = 8] = "IntelAmtRelay";
34
+ MeshNodeConnectivityType[MeshNodeConnectivityType["Mqtt"] = 16] = "Mqtt";
35
+ })(MeshNodeConnectivityType || (exports.MeshNodeConnectivityType = MeshNodeConnectivityType = {}));
36
+ var MeshNodePowerState;
37
+ (function (MeshNodePowerState) {
38
+ MeshNodePowerState[MeshNodePowerState["Unknown"] = 0] = "Unknown";
39
+ MeshNodePowerState[MeshNodePowerState["PoweredOn"] = 1] = "PoweredOn";
40
+ MeshNodePowerState[MeshNodePowerState["SleepS1"] = 2] = "SleepS1";
41
+ MeshNodePowerState[MeshNodePowerState["SleepS2"] = 3] = "SleepS2";
42
+ MeshNodePowerState[MeshNodePowerState["DeepSleep"] = 4] = "DeepSleep";
43
+ MeshNodePowerState[MeshNodePowerState["Hibernating"] = 5] = "Hibernating";
44
+ MeshNodePowerState[MeshNodePowerState["SoftOff"] = 6] = "SoftOff";
45
+ MeshNodePowerState[MeshNodePowerState["Present"] = 7] = "Present";
46
+ MeshNodePowerState[MeshNodePowerState["Off"] = 8] = "Off";
47
+ })(MeshNodePowerState || (exports.MeshNodePowerState = MeshNodePowerState = {}));
27
48
  exports.LIMITS = {
28
49
  MAX_ID: Number.MAX_SAFE_INTEGER,
29
50
  MAX_URL_LENGTH: 4096,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meru2802/aux-server",
3
- "version": "1.0.21",
3
+ "version": "1.0.22",
4
4
  "description": "Nexus EPM auxillary server to facilitate additional functionality required by Scogo Iceberg",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -30,7 +30,8 @@
30
30
  "author": "meru2802",
31
31
  "license": "ISC",
32
32
  "dependencies": {
33
- "@meru2802/rmm-lib": "^1.0.6",
33
+ "@meru2802/rmm-lib": "^1.0.7",
34
+ "@types/axios": "^0.14.4",
34
35
  "axios": "^1.9.0",
35
36
  "base-64": "^1.0.0",
36
37
  "cookie-parser": "^1.4.7",
@@ -38,6 +39,7 @@
38
39
  "express": "^4.19.2",
39
40
  "helmet": "^8.0.0",
40
41
  "https-proxy-agent": "^7.0.6",
42
+ "ioredis": "^5.9.1",
41
43
  "pg": "^8.16.0",
42
44
  "qs": "^6.14.0",
43
45
  "swagger-jsdoc": "^6.2.8",