@plutonhq/core-backend 0.1.14 → 0.1.16

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.
Files changed (196) hide show
  1. package/dist/controllers/BackupController.d.ts +1 -0
  2. package/dist/controllers/BackupController.d.ts.map +1 -1
  3. package/dist/controllers/BackupController.js +1 -1
  4. package/dist/controllers/BackupController.js.map +1 -1
  5. package/dist/controllers/PlanController.d.ts +2 -0
  6. package/dist/controllers/PlanController.d.ts.map +1 -1
  7. package/dist/controllers/PlanController.js +1 -1
  8. package/dist/controllers/PlanController.js.map +1 -1
  9. package/dist/controllers/RestoreController.d.ts.map +1 -1
  10. package/dist/controllers/RestoreController.js +1 -1
  11. package/dist/controllers/RestoreController.js.map +1 -1
  12. package/dist/controllers/SettingsController.d.ts +2 -0
  13. package/dist/controllers/SettingsController.d.ts.map +1 -1
  14. package/dist/controllers/SettingsController.js +1 -1
  15. package/dist/controllers/SettingsController.js.map +1 -1
  16. package/dist/controllers/StorageController.d.ts.map +1 -1
  17. package/dist/controllers/StorageController.js +1 -1
  18. package/dist/controllers/StorageController.js.map +1 -1
  19. package/dist/controllers/UserController.d.ts +4 -0
  20. package/dist/controllers/UserController.d.ts.map +1 -1
  21. package/dist/controllers/UserController.js +1 -1
  22. package/dist/controllers/UserController.js.map +1 -1
  23. package/dist/createApp.d.ts.map +1 -1
  24. package/dist/createApp.js +1 -1
  25. package/dist/createApp.js.map +1 -1
  26. package/dist/db/index.d.ts +19 -0
  27. package/dist/db/index.d.ts.map +1 -1
  28. package/dist/db/schema/backups.d.ts +77 -1
  29. package/dist/db/schema/backups.d.ts.map +1 -1
  30. package/dist/db/schema/backups.js +1 -1
  31. package/dist/db/schema/backups.js.map +1 -1
  32. package/dist/jobs/JobProcessor.d.ts.map +1 -1
  33. package/dist/jobs/JobProcessor.js +1 -1
  34. package/dist/jobs/JobProcessor.js.map +1 -1
  35. package/dist/jobs/tasks/ReplicationRetryTask.d.ts +10 -0
  36. package/dist/jobs/tasks/ReplicationRetryTask.d.ts.map +1 -0
  37. package/dist/jobs/tasks/ReplicationRetryTask.js +1 -0
  38. package/dist/jobs/tasks/ReplicationRetryTask.js.map +1 -0
  39. package/dist/managers/BaseBackupManager.d.ts +35 -3
  40. package/dist/managers/BaseBackupManager.d.ts.map +1 -1
  41. package/dist/managers/BaseBackupManager.js +1 -1
  42. package/dist/managers/BaseBackupManager.js.map +1 -1
  43. package/dist/managers/BaseSnapshotManager.d.ts +21 -4
  44. package/dist/managers/BaseSnapshotManager.d.ts.map +1 -1
  45. package/dist/managers/BaseSnapshotManager.js +1 -1
  46. package/dist/managers/BaseSnapshotManager.js.map +1 -1
  47. package/dist/managers/ProgressManager.d.ts +28 -0
  48. package/dist/managers/ProgressManager.d.ts.map +1 -1
  49. package/dist/managers/ProgressManager.js +1 -1
  50. package/dist/managers/ProgressManager.js.map +1 -1
  51. package/dist/managers/handlers/BackupHandler.d.ts +8 -0
  52. package/dist/managers/handlers/BackupHandler.d.ts.map +1 -1
  53. package/dist/managers/handlers/BackupHandler.js +1 -1
  54. package/dist/managers/handlers/BackupHandler.js.map +1 -1
  55. package/dist/managers/handlers/DownloadHandler.d.ts.map +1 -1
  56. package/dist/managers/handlers/DownloadHandler.js +1 -1
  57. package/dist/managers/handlers/DownloadHandler.js.map +1 -1
  58. package/dist/managers/handlers/ReplicationHandler.d.ts +34 -0
  59. package/dist/managers/handlers/ReplicationHandler.d.ts.map +1 -0
  60. package/dist/managers/handlers/ReplicationHandler.js +1 -0
  61. package/dist/managers/handlers/ReplicationHandler.js.map +1 -0
  62. package/dist/managers/handlers/ReplicationOrchestrator.d.ts +50 -0
  63. package/dist/managers/handlers/ReplicationOrchestrator.d.ts.map +1 -0
  64. package/dist/managers/handlers/ReplicationOrchestrator.js +1 -0
  65. package/dist/managers/handlers/ReplicationOrchestrator.js.map +1 -0
  66. package/dist/middlewares/versionMiddleware.d.ts.map +1 -1
  67. package/dist/middlewares/versionMiddleware.js +1 -1
  68. package/dist/middlewares/versionMiddleware.js.map +1 -1
  69. package/dist/notifications/BackupNotification.d.ts +6 -3
  70. package/dist/notifications/BackupNotification.d.ts.map +1 -1
  71. package/dist/notifications/BackupNotification.js +1 -1
  72. package/dist/notifications/BackupNotification.js.map +1 -1
  73. package/dist/notifications/channels/NotificationChannelResolver.d.ts.map +1 -1
  74. package/dist/notifications/channels/NotificationChannelResolver.js.map +1 -1
  75. package/dist/notifications/templates/email/backup/BackupFailedNotification.d.ts.map +1 -1
  76. package/dist/notifications/templates/email/backup/BackupFailedNotification.ejs +9 -4
  77. package/dist/notifications/templates/email/backup/BackupFailedNotification.js +1 -1
  78. package/dist/notifications/templates/email/backup/BackupFailedNotification.js.map +1 -1
  79. package/dist/notifications/templates/email/backup/BackupStartedNotification.d.ts.map +1 -1
  80. package/dist/notifications/templates/email/backup/BackupStartedNotification.ejs +9 -4
  81. package/dist/notifications/templates/email/backup/BackupStartedNotification.js +1 -1
  82. package/dist/notifications/templates/email/backup/BackupStartedNotification.js.map +1 -1
  83. package/dist/notifications/templates/email/backup/BackupSuccessNotification.d.ts +2 -1
  84. package/dist/notifications/templates/email/backup/BackupSuccessNotification.d.ts.map +1 -1
  85. package/dist/notifications/templates/email/backup/BackupSuccessNotification.ejs +52 -4
  86. package/dist/notifications/templates/email/backup/BackupSuccessNotification.js +1 -1
  87. package/dist/notifications/templates/email/backup/BackupSuccessNotification.js.map +1 -1
  88. package/dist/notifications/templates/email/backup/ReplicationFailedNotification.d.ts +24 -0
  89. package/dist/notifications/templates/email/backup/ReplicationFailedNotification.d.ts.map +1 -0
  90. package/dist/notifications/templates/email/backup/ReplicationFailedNotification.ejs +105 -0
  91. package/dist/notifications/templates/email/backup/ReplicationFailedNotification.js +1 -0
  92. package/dist/notifications/templates/email/backup/ReplicationFailedNotification.js.map +1 -0
  93. package/dist/routes/backups.d.ts.map +1 -1
  94. package/dist/routes/backups.js +1 -1
  95. package/dist/routes/backups.js.map +1 -1
  96. package/dist/routes/plans.d.ts.map +1 -1
  97. package/dist/routes/plans.js +1 -1
  98. package/dist/routes/plans.js.map +1 -1
  99. package/dist/routes/settings.d.ts.map +1 -1
  100. package/dist/routes/settings.js +1 -1
  101. package/dist/routes/settings.js.map +1 -1
  102. package/dist/routes/users.d.ts.map +1 -1
  103. package/dist/routes/users.js +1 -1
  104. package/dist/routes/users.js.map +1 -1
  105. package/dist/services/BackupServices.d.ts +14 -5
  106. package/dist/services/BackupServices.d.ts.map +1 -1
  107. package/dist/services/BackupServices.js +1 -1
  108. package/dist/services/BackupServices.js.map +1 -1
  109. package/dist/services/DeviceService.d.ts +6 -0
  110. package/dist/services/DeviceService.d.ts.map +1 -1
  111. package/dist/services/DeviceService.js +1 -1
  112. package/dist/services/DeviceService.js.map +1 -1
  113. package/dist/services/PlanService.d.ts +20 -0
  114. package/dist/services/PlanService.d.ts.map +1 -1
  115. package/dist/services/PlanService.js +1 -1
  116. package/dist/services/PlanService.js.map +1 -1
  117. package/dist/services/RestoreService.d.ts +2 -2
  118. package/dist/services/RestoreService.d.ts.map +1 -1
  119. package/dist/services/RestoreService.js +1 -1
  120. package/dist/services/RestoreService.js.map +1 -1
  121. package/dist/services/SettingsService.d.ts +8 -0
  122. package/dist/services/SettingsService.d.ts.map +1 -1
  123. package/dist/services/SettingsService.js +1 -1
  124. package/dist/services/SettingsService.js.map +1 -1
  125. package/dist/services/StorageService.d.ts.map +1 -1
  126. package/dist/services/StorageService.js +1 -1
  127. package/dist/services/StorageService.js.map +1 -1
  128. package/dist/services/events/BackupEventService.d.ts +22 -0
  129. package/dist/services/events/BackupEventService.d.ts.map +1 -1
  130. package/dist/services/events/BackupEventService.js +1 -1
  131. package/dist/services/events/BackupEventService.js.map +1 -1
  132. package/dist/services/events/ReplicationEventService.d.ts +33 -0
  133. package/dist/services/events/ReplicationEventService.d.ts.map +1 -0
  134. package/dist/services/events/ReplicationEventService.js +1 -0
  135. package/dist/services/events/ReplicationEventService.js.map +1 -0
  136. package/dist/services/listeners/BackupEventListener.d.ts +14 -10
  137. package/dist/services/listeners/BackupEventListener.d.ts.map +1 -1
  138. package/dist/services/listeners/BackupEventListener.js +1 -1
  139. package/dist/services/listeners/BackupEventListener.js.map +1 -1
  140. package/dist/services/listeners/ReplicationEventListener.d.ts +30 -0
  141. package/dist/services/listeners/ReplicationEventListener.d.ts.map +1 -0
  142. package/dist/services/listeners/ReplicationEventListener.js +1 -0
  143. package/dist/services/listeners/ReplicationEventListener.js.map +1 -0
  144. package/dist/stores/BackupStore.d.ts +8 -0
  145. package/dist/stores/BackupStore.d.ts.map +1 -1
  146. package/dist/stores/BackupStore.js +1 -1
  147. package/dist/stores/BackupStore.js.map +1 -1
  148. package/dist/stores/DeviceStore.d.ts +6 -0
  149. package/dist/stores/DeviceStore.d.ts.map +1 -1
  150. package/dist/stores/DeviceStore.js +1 -1
  151. package/dist/stores/DeviceStore.js.map +1 -1
  152. package/dist/stores/PlanStore.d.ts +3 -1
  153. package/dist/stores/PlanStore.d.ts.map +1 -1
  154. package/dist/stores/PlanStore.js +1 -1
  155. package/dist/stores/PlanStore.js.map +1 -1
  156. package/dist/stores/StorageStore.d.ts +10 -0
  157. package/dist/stores/StorageStore.d.ts.map +1 -1
  158. package/dist/stores/StorageStore.js +1 -1
  159. package/dist/stores/StorageStore.js.map +1 -1
  160. package/dist/strategies/backup/BackupStrategy.d.ts +24 -2
  161. package/dist/strategies/backup/BackupStrategy.d.ts.map +1 -1
  162. package/dist/strategies/backup/LocalStrategy.d.ts +24 -2
  163. package/dist/strategies/backup/LocalStrategy.d.ts.map +1 -1
  164. package/dist/strategies/backup/LocalStrategy.js +1 -1
  165. package/dist/strategies/backup/LocalStrategy.js.map +1 -1
  166. package/dist/strategies/backup/RemoteStrategy.d.ts +13 -2
  167. package/dist/strategies/backup/RemoteStrategy.d.ts.map +1 -1
  168. package/dist/strategies/backup/RemoteStrategy.js +1 -1
  169. package/dist/strategies/backup/RemoteStrategy.js.map +1 -1
  170. package/dist/strategies/snapshot/LocalStrategy.d.ts +20 -4
  171. package/dist/strategies/snapshot/LocalStrategy.d.ts.map +1 -1
  172. package/dist/strategies/snapshot/LocalStrategy.js +1 -1
  173. package/dist/strategies/snapshot/LocalStrategy.js.map +1 -1
  174. package/dist/strategies/snapshot/RemoteStrategy.d.ts +4 -1
  175. package/dist/strategies/snapshot/RemoteStrategy.d.ts.map +1 -1
  176. package/dist/strategies/snapshot/RemoteStrategy.js +1 -1
  177. package/dist/strategies/snapshot/RemoteStrategy.js.map +1 -1
  178. package/dist/strategies/snapshot/SnapshotStrategy.d.ts +20 -4
  179. package/dist/strategies/snapshot/SnapshotStrategy.d.ts.map +1 -1
  180. package/dist/types/backups.d.ts +24 -0
  181. package/dist/types/backups.d.ts.map +1 -1
  182. package/dist/types/events.d.ts +110 -0
  183. package/dist/types/events.d.ts.map +1 -1
  184. package/dist/types/plans.d.ts +23 -2
  185. package/dist/types/plans.d.ts.map +1 -1
  186. package/dist/types/restores.d.ts +2 -0
  187. package/dist/types/restores.d.ts.map +1 -1
  188. package/dist/utils/restic/restic.d.ts +5 -0
  189. package/dist/utils/restic/restic.d.ts.map +1 -1
  190. package/dist/utils/restic/restic.js +1 -1
  191. package/dist/utils/restic/restic.js.map +1 -1
  192. package/dist/utils/sanitizeStoragePath.d.ts +5 -1
  193. package/dist/utils/sanitizeStoragePath.d.ts.map +1 -1
  194. package/dist/utils/sanitizeStoragePath.js +1 -1
  195. package/dist/utils/sanitizeStoragePath.js.map +1 -1
  196. package/package.json +6 -1
@@ -21,21 +21,30 @@ export declare class BackupService {
21
21
  deleteBackup(backupId: string, removeSnapshot?: boolean): Promise<{
22
22
  success: boolean;
23
23
  result: any;
24
- stats?: false | {
25
- total_size: number;
26
- snapshots: string[];
24
+ stats?: {
25
+ primary: null | {
26
+ total_size: number;
27
+ snapshots: string[];
28
+ };
29
+ mirrors?: {
30
+ [key: string]: {
31
+ total_size: number;
32
+ snapshots: string[];
33
+ };
34
+ };
27
35
  };
28
36
  }>;
29
37
  getBackupDownload(backupId: string): Promise<any>;
30
- generateBackupDownload(backupId: string): Promise<any>;
38
+ generateBackupDownload(backupId: string, replicationId?: string): Promise<any>;
31
39
  cancelBackupDownload(planId: string, backupId: string): Promise<any>;
32
40
  cancelBackup(planId: string, backupId: string): Promise<{
33
41
  success: boolean;
34
42
  result: string;
35
43
  }>;
36
44
  getBackupProgress(backupId: string): Promise<any>;
37
- getSnapshotFiles(backupId: string): Promise<SnapShotFile[]>;
45
+ getSnapshotFiles(backupId: string, replicationId?: string): Promise<SnapShotFile[]>;
38
46
  updateBackup(backupId: string, data: Partial<Backup>): Promise<any>;
47
+ retryFailedReplications(backupId: string, replicationId?: string): Promise<string>;
39
48
  getStorageName(storageId: string): Promise<string>;
40
49
  }
41
50
  //# sourceMappingURL=BackupServices.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BackupServices.d.ts","sourceRoot":"","sources":["../../src/services/BackupServices.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACN,gBAAgB,EAGhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,cAAc,EAGd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,qBAAa,aAAa;IAExB,SAAS,CAAC,kBAAkB,EAAE,mBAAmB;IACjD,SAAS,CAAC,cAAc,EAAE,iBAAiB;IAC3C,SAAS,CAAC,SAAS,EAAE,SAAS;IAC9B,SAAS,CAAC,WAAW,EAAE,WAAW;IAClC,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,SAAS,CAAC,YAAY,EAAE,YAAY;gBAL1B,kBAAkB,EAAE,mBAAmB,EACvC,cAAc,EAAE,iBAAiB,EACjC,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY;IAGrC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,gBAAgB;IAOxE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAO7C,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,GAAE,OAAe;;;;;;;;IAoC9D,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAkBjD,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAmBtD,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAiBpE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;IAgC7C,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAgBjD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA2B3D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAWnE,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAiBxD"}
1
+ {"version":3,"file":"BackupServices.d.ts","sourceRoot":"","sources":["../../src/services/BackupServices.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACN,gBAAgB,EAGhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,cAAc,EAGd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAI9C,qBAAa,aAAa;IAExB,SAAS,CAAC,kBAAkB,EAAE,mBAAmB;IACjD,SAAS,CAAC,cAAc,EAAE,iBAAiB;IAC3C,SAAS,CAAC,SAAS,EAAE,SAAS;IAC9B,SAAS,CAAC,WAAW,EAAE,WAAW;IAClC,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,SAAS,CAAC,YAAY,EAAE,YAAY;gBAL1B,kBAAkB,EAAE,mBAAmB,EACvC,cAAc,EAAE,iBAAiB,EACjC,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY;IAGrC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,gBAAgB;IAOxE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAO7C,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,GAAE,OAAe;;;;;;;;mBAjClD,CAAC;;;;;;;;IAqFb,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAkBjD,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IA8B9E,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAiBpE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;IAgC7C,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAgBjD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAsCnF,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAWnE,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4ClF,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAiBxD"}
@@ -1 +1 @@
1
- import{sql}from"drizzle-orm";import{RemoteStrategy as RemoteSnapshotStrategy,LocalStrategy as LocalSnapshotStrategy}from"../strategies/snapshot";import{RemoteStrategy as RemoteBackupStrategy,LocalStrategy as LocalBackupStrategy}from"../strategies/backup";import{jobQueue}from"../jobs/JobQueue";export class BackupService{localSnapshotAgent;localPlanAgent;planStore;backupStore;restoreStore;storageStore;constructor(localSnapshotAgent,localPlanAgent,planStore,backupStore,restoreStore,storageStore){this.localSnapshotAgent=localSnapshotAgent,this.localPlanAgent=localPlanAgent,this.planStore=planStore,this.backupStore=backupStore,this.restoreStore=restoreStore,this.storageStore=storageStore}getSnapshotStrategy(deviceId,method){return"main"!==deviceId?new RemoteSnapshotStrategy(deviceId):new LocalSnapshotStrategy(this.localSnapshotAgent)}getBackupStrategy(deviceId){return"main"!==deviceId?new RemoteBackupStrategy(deviceId):new LocalBackupStrategy(this.localPlanAgent)}async deleteBackup(backupId,removeSnapshot=!1){const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");const strategy=this.getSnapshotStrategy(backup.sourceId,backup.method),storageName=await this.getStorageName(backup.storageId),removeResult=await strategy.removeSnapshot(backup.planId,backupId,{storageName:storageName,storagePath:backup.storagePath||"",encryption:backup.encryption||!0,planId:backup.planId});return removeResult.stats&&await this.planStore.update(backup.planId,{stats:{size:removeResult.stats.total_size,snapshots:removeResult.stats.snapshots}}),await this.backupStore.delete(backup.id),removeResult}async getBackupDownload(backupId){const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");const backupDevice=backup.sourceId?backup.sourceId:"main",strategy=this.getSnapshotStrategy(backupDevice,backup.method),downloadResult=await strategy.getSnapshotDownload(backup.planId,backupId);if(!downloadResult.success)throw new Error("string"==typeof downloadResult.result?downloadResult.result:"Failed to get Backup Download");return downloadResult.result}async generateBackupDownload(backupId){const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");const backupDevice=backup.sourceId?backup.sourceId:"main",strategy=this.getSnapshotStrategy(backupDevice,backup.method),storageName=await this.getStorageName(backup.storageId),downloadResult=await strategy.downloadSnapshot(backup.planId,backupId,"",{storageName:storageName,storagePath:backup.storagePath,encryption:backup.encryption||!0});if(!downloadResult.success)throw new Error(downloadResult.result||"Failed to generate Download Link");return downloadResult.result}async cancelBackupDownload(planId,backupId){const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");const backupDevice=backup.sourceId?backup.sourceId:"main",strategy=this.getSnapshotStrategy(backupDevice,backup.method),downloadResult=await strategy.cancelSnapshotDownload(planId,backupId);if(!downloadResult.success)throw new Error(downloadResult.result||"Failed to cancel Download");return await this.backupStore.update(backup.id,{download:null}),downloadResult.result}async cancelBackup(planId,backupId){const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");const backupDevice=backup.sourceId?backup.sourceId:"main",strategy=this.getBackupStrategy(backupDevice),cancelResult=strategy.cancelBackup?await strategy.cancelBackup(planId,backupId):{success:!1,result:""};if(!cancelResult.success)throw new Error(cancelResult.result||"Failed to cancel backup");return"main"===backupDevice&&(jobQueue.remove("Backup",planId),jobQueue.remove("RescueBackup",planId)),await this.backupStore.update(backup.id,{status:"cancelled",inProgress:!1,ended:sql`(unixepoch())`}),cancelResult}async getBackupProgress(backupId){const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");const backupDevice=backup.sourceId?backup.sourceId:"main",strategy=this.getBackupStrategy(backupDevice),progressResult=strategy.getBackupProgress?await strategy.getBackupProgress(backup.planId,backupId):{success:!1,result:""};if(!progressResult.success)throw new Error(progressResult.result||"Failed to get Backup Progress");return progressResult.result}async getSnapshotFiles(backupId){const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");const backupDevice=backup.sourceId?backup.sourceId:"main",strategy=this.getSnapshotStrategy(backupDevice),storageName=await this.getStorageName(backup.storageId),snapshotFilesResult=await strategy.getSnapshotFiles(backup.planId,backup.id,{storageName:storageName,storagePath:backup.storagePath,encryption:backup.encryption});if(!snapshotFilesResult.success||!Array.isArray(snapshotFilesResult.result))throw new Error("string"==typeof snapshotFilesResult.result?snapshotFilesResult.result:"Failed to get Snapshot Files");return snapshotFilesResult.result}async updateBackup(backupId,data){if(!await this.backupStore.getById(backupId))throw new Error("Backup not found");const title=data.title?.trim()||"",description=data.description?.trim()||"";return await this.backupStore.update(backupId,{title:title,description:description})}async getStorageName(storageId){let storageName="";if("local"!==storageId)try{const storage=await this.storageStore.getById(storageId);storage?.name&&(storageName=storage.name)}catch(error){return storageName}else storageName="local";return storageName}}
1
+ import{sql}from"drizzle-orm";import{RemoteStrategy as RemoteSnapshotStrategy,LocalStrategy as LocalSnapshotStrategy}from"../strategies/snapshot";import{RemoteStrategy as RemoteBackupStrategy,LocalStrategy as LocalBackupStrategy}from"../strategies/backup";import{jobQueue}from"../jobs/JobQueue";export class BackupService{localSnapshotAgent;localPlanAgent;planStore;backupStore;restoreStore;storageStore;constructor(localSnapshotAgent,localPlanAgent,planStore,backupStore,restoreStore,storageStore){this.localSnapshotAgent=localSnapshotAgent,this.localPlanAgent=localPlanAgent,this.planStore=planStore,this.backupStore=backupStore,this.restoreStore=restoreStore,this.storageStore=storageStore}getSnapshotStrategy(deviceId,method){return"main"!==deviceId?new RemoteSnapshotStrategy(deviceId):new LocalSnapshotStrategy(this.localSnapshotAgent)}getBackupStrategy(deviceId){return"main"!==deviceId?new RemoteBackupStrategy(deviceId):new LocalBackupStrategy(this.localPlanAgent)}async deleteBackup(backupId,removeSnapshot=!1){const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");const strategy=this.getSnapshotStrategy(backup.sourceId,backup.method),storageName=await this.getStorageName(backup.storageId),removeResult=await strategy.removeSnapshot(backup.planId,backupId,{storageName:storageName,storagePath:backup.storagePath||"",encryption:backup.encryption||!0,mirrors:backup.mirrors||[]});if(removeResult.stats){const primaryStats=removeResult.stats.primary,mirrorStats=removeResult.stats.mirrors,currentMirrors=backup.mirrors||[],planStatsUpdate={size:primaryStats?.total_size||0,snapshots:primaryStats?.snapshots||[]};mirrorStats&&Object.keys(mirrorStats).length>0&&(planStatsUpdate.mirrors=Object.entries(mirrorStats).map(([replicationId,stats])=>{const mirror=currentMirrors.find(m=>m.replicationId===replicationId);return{replicationId:mirror?.replicationId||replicationId,storageId:mirror?.storageId||"",storagePath:mirror?.storagePath||"",size:stats.total_size,snapshots:stats.snapshots}})),await this.planStore.update(backup.planId,{stats:planStatsUpdate})}return await this.backupStore.delete(backup.id),removeResult}async getBackupDownload(backupId){const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");const backupDevice=backup.sourceId?backup.sourceId:"main",strategy=this.getSnapshotStrategy(backupDevice,backup.method),downloadResult=await strategy.getSnapshotDownload(backup.planId,backupId);if(!downloadResult.success)throw new Error("string"==typeof downloadResult.result?downloadResult.result:"Failed to get Backup Download");return downloadResult.result}async generateBackupDownload(backupId,replicationId){const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");let effectiveStorageId=backup.storageId,effectiveStoragePath=backup.storagePath;if(replicationId){const mirror=(backup.mirrors||[]).find(m=>m.replicationId===replicationId);mirror&&(effectiveStorageId=mirror.storageId,effectiveStoragePath=mirror.storagePath)}const backupDevice=backup.sourceId?backup.sourceId:"main",strategy=this.getSnapshotStrategy(backupDevice,backup.method),storageName=await this.getStorageName(effectiveStorageId),downloadResult=await strategy.downloadSnapshot(backup.planId,backupId,"",{storageName:storageName,storagePath:effectiveStoragePath,encryption:backup.encryption||!0});if(!downloadResult.success)throw new Error(downloadResult.result||"Failed to generate Download Link");return downloadResult.result}async cancelBackupDownload(planId,backupId){const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");const backupDevice=backup.sourceId?backup.sourceId:"main",strategy=this.getSnapshotStrategy(backupDevice,backup.method),downloadResult=await strategy.cancelSnapshotDownload(planId,backupId);if(!downloadResult.success)throw new Error(downloadResult.result||"Failed to cancel Download");return await this.backupStore.update(backup.id,{download:null}),downloadResult.result}async cancelBackup(planId,backupId){const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");const backupDevice=backup.sourceId?backup.sourceId:"main",strategy=this.getBackupStrategy(backupDevice),cancelResult=strategy.cancelBackup?await strategy.cancelBackup(planId,backupId):{success:!1,result:""};if(!cancelResult.success)throw new Error(cancelResult.result||"Failed to cancel backup");return"main"===backupDevice&&(jobQueue.remove("Backup",planId),jobQueue.remove("RescueBackup",planId)),await this.backupStore.update(backup.id,{status:"cancelled",inProgress:!1,ended:sql`(unixepoch())`}),cancelResult}async getBackupProgress(backupId){const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");const backupDevice=backup.sourceId?backup.sourceId:"main",strategy=this.getBackupStrategy(backupDevice),progressResult=strategy.getBackupProgress?await strategy.getBackupProgress(backup.planId,backupId):{success:!1,result:""};if(!progressResult.success)throw new Error(progressResult.result||"Failed to get Backup Progress");return progressResult.result}async getSnapshotFiles(backupId,replicationId){const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");const backupDevice=backup.sourceId?backup.sourceId:"main",strategy=this.getSnapshotStrategy(backupDevice);let effectiveStorageId=backup.storageId,effectiveStoragePath=backup.storagePath;if(replicationId){const mirror=(backup.mirrors||[]).find(m=>m.replicationId===replicationId);mirror&&(effectiveStorageId=mirror.storageId,effectiveStoragePath=mirror.storagePath)}const storageName=await this.getStorageName(effectiveStorageId),snapshotFilesResult=await strategy.getSnapshotFiles(backup.planId,backup.id,{storageName:storageName,storagePath:effectiveStoragePath,encryption:backup.encryption});if(!snapshotFilesResult.success||!Array.isArray(snapshotFilesResult.result))throw new Error("string"==typeof snapshotFilesResult.result?snapshotFilesResult.result:"Failed to get Snapshot Files");return snapshotFilesResult.result}async updateBackup(backupId,data){if(!await this.backupStore.getById(backupId))throw new Error("Backup not found");const title=data.title?.trim()||"",description=data.description?.trim()||"";return await this.backupStore.update(backupId,{title:title,description:description})}async retryFailedReplications(backupId,replicationId){const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");const currentMirrors=backup.mirrors||[];if(0===currentMirrors.filter(m=>"failed"===m.status).length)throw new Error("No failed replications to retry");const updatedMirrors=replicationId?currentMirrors.map(m=>m.replicationId===replicationId?{...m,status:"pending",error:void 0}:m):currentMirrors.map(m=>"failed"===m.status?{...m,status:"pending",error:void 0}:m);await this.backupStore.update(backupId,{mirrors:updatedMirrors});const failedReplicationIds=updatedMirrors.filter(m=>"pending"===m.status).map(m=>m.replicationId),backupDevice=backup.sourceId?backup.sourceId:"main",strategy=this.getSnapshotStrategy(backupDevice),retryResult=await strategy.retryFailedReplication(backup.planId,backupId,failedReplicationIds);if(!retryResult.success)throw new Error(retryResult.result||"Failed to retry failed replications");return retryResult.result}async getStorageName(storageId){let storageName="";if("local"!==storageId)try{const storage=await this.storageStore.getById(storageId);storage?.name&&(storageName=storage.name)}catch(error){return storageName}else storageName="local";return storageName}}
@@ -1 +1 @@
1
- {"version":3,"file":"BackupServices.js","sourceRoot":"","sources":["../../src/services/BackupServices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BackupServices.js","sourceRoot":"","sources":["../../src/services/BackupServices.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,12 @@ export declare class DeviceService {
28
28
  }) | null;
29
29
  metrics: DeviceMetrics | null;
30
30
  plans: Record<string, any>[];
31
+ storages: {
32
+ id: string;
33
+ name: string;
34
+ type: string;
35
+ storageTypeName: string;
36
+ }[];
31
37
  }>;
32
38
  /**
33
39
  * Updates a device.
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceService.d.ts","sourceRoot":"","sources":["../../src/services/DeviceService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAsB,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAA4B,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAiC,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAKtD,qBAAa,aAAa;IAIxB,SAAS,CAAC,kBAAkB,EAAE,iBAAiB;IAC/C,SAAS,CAAC,WAAW,EAAE,WAAW;IAClC,SAAS,CAAC,SAAS,EAAE,SAAS;IAC9B,SAAS,CAAC,YAAY,EAAE,YAAY;IANrC,SAAS,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;gBAG3C,kBAAkB,EAAE,iBAAiB,EACrC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY;IAGrC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAKnD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,CAAC,MAAM,GAAG;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,EAAE,GAAG,IAAI,CAAC;IAWvE;;OAEG;IACG,SAAS,CACd,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,OAAO,GACjB,OAAO,CAAC;QACV,MAAM,EAAE,CAAC,MAAM,GAAG;YAAE,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC,GAAG,IAAI,CAAC;QACjD,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;QAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;KAC7B,CAAC;IAiFF;;OAEG;IACG,YAAY,CACjB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GACtD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsCnB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAkDrD,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAwBxD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAWxC,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0B1D,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAyBhE"}
1
+ {"version":3,"file":"DeviceService.d.ts","sourceRoot":"","sources":["../../src/services/DeviceService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAsB,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAA4B,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAiC,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAKtD,qBAAa,aAAa;IAIxB,SAAS,CAAC,kBAAkB,EAAE,iBAAiB;IAC/C,SAAS,CAAC,WAAW,EAAE,WAAW;IAClC,SAAS,CAAC,SAAS,EAAE,SAAS;IAC9B,SAAS,CAAC,YAAY,EAAE,YAAY;IANrC,SAAS,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;gBAG3C,kBAAkB,EAAE,iBAAiB,EACrC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY;IAGrC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAKnD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,CAAC,MAAM,GAAG;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,EAAE,GAAG,IAAI,CAAC;IAWvE;;OAEG;IACG,SAAS,CACd,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,OAAO,GACjB,OAAO,CAAC;QACV,MAAM,EAAE,CAAC,MAAM,GAAG;YAAE,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC,GAAG,IAAI,CAAC;QACjD,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;QAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;QAC7B,QAAQ,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAChF,CAAC;IAiEF;;OAEG;IACG,YAAY,CACjB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GACtD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsCnB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAkDrD,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAwBxD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAWxC,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0B1D,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAyBhE"}
@@ -1 +1 @@
1
- import path from"path";import{deviceUpdateSchema}from"../db/schema/devices";import{DeviceLogger}from"../utils/logger";import{LocalStrategy,RemoteStrategy}from"../strategies/system";import{providers}from"../utils/providers";import{configService}from"./ConfigService";import{AppError}from"../utils/AppError";export class DeviceService{localSystemManager;deviceStore;planStore;storageStore;connectedDeviceIds;constructor(localSystemManager,deviceStore,planStore,storageStore){this.localSystemManager=localSystemManager,this.deviceStore=deviceStore,this.planStore=planStore,this.storageStore=storageStore}getSystemStrategy(deviceId){return"main"!==deviceId?new RemoteStrategy(deviceId):new LocalStrategy(this.localSystemManager)}async getDevices(){const allDevices=await this.deviceStore.getAll();return allDevices?.map(device=>({...device,connected:this.connectedDeviceIds?.has(device.id)||!1}))||null}async getDevice(id,getMetrics){const deviceRaw=await this.deviceStore.getById(id);if(!deviceRaw)throw new Error("Device not found.");const device={...deviceRaw,connected:this.connectedDeviceIds?.has(deviceRaw.id)||!1},plans=await this.planStore.getDevicePlans(id),devicePlans=plans&&plans.map(plan=>({id:plan.id,title:plan.title,method:plan.method,createdAt:plan.createdAt,isActive:plan.isActive,sourceConfig:plan.sourceConfig,storage:{id:plan.storageId,path:plan.storagePath,name:"",type:"",typeName:"",size:0},size:plan.stats?.size||0}))||[],storageIds=devicePlans.map(p=>p.storage.id).filter(i=>null!==i);if(storageIds.length>0){const storages=await this.storageStore.getByIds(storageIds);storages&&storages.length>0&&devicePlans.forEach(p=>{const theStorage=storages.find(s=>s.id===p.storage.id);theStorage&&(p.storage.name=theStorage.name,p.storage.type=theStorage.type||"",p.storage.typeName=theStorage.type?theStorage.type in providers?providers[theStorage.type].name:theStorage.type:"")})}if(!getMetrics)return{device:device,metrics:null,plans:devicePlans};try{const strategy=this.getSystemStrategy(id),metricsResp=await strategy.getMetrics();return{device:device,metrics:metricsResp.result&&metricsResp.success&&"string"!=typeof metricsResp.result&&metricsResp.result.system?metricsResp.result:null,plans:devicePlans}}catch(error){return DeviceLogger(id).error(`Error fetching device data for #${id}. Reason : ${error?.message.toString()||"Unknown Error"}`),{device:device,metrics:null,plans:[]}}}async updateDevice(id,data){const existingDevice=await this.deviceStore.getById(id);if(!existingDevice)throw new Error("Device not found.");let updatedObj={};try{updatedObj=deviceUpdateSchema.parse({name:data.name??existingDevice.name,settings:data.settings??existingDevice.settings,tags:data.tags??existingDevice.tags})}catch(error){throw new AppError(400,"Invalid device data provided")}if(data.settings&&"main"!==existingDevice.id)try{const strategy=this.getSystemStrategy(id);if(!(await strategy.updateSettings(data.settings)).success)throw new Error("Failed to update device settings")}catch(error){throw new Error("Failed to update device settings")}return await this.deviceStore.update(id,updatedObj)}async getMetrics(id){const device=await this.deviceStore.getById(id);if(!device)throw new Error("Device not found.");const strategy=this.getSystemStrategy(id),response=await strategy.getMetrics();if(!response.success)throw new Error("Failed to get Device metrics");if("string"!=typeof response.result&&response.success&&response.result?.system){const metrics=response.result,payload={metrics:metrics,lastSeen:new Date,status:"active"};if(payload.versions=device.versions||{restic:"",rclone:"",agent:""},metrics.versions?.restic&&(payload.versions.restic=metrics.versions.restic),metrics.versions?.rclone&&(payload.versions.rclone=metrics.versions.rclone),metrics.versions?.agent&&(payload.versions.agent=metrics.versions.agent),metrics.os.hostname&&"unknown"!==metrics.os.hostname&&(payload.hostname=metrics.os.hostname),metrics.os.platform&&"unknown"!==metrics.os.platform&&(payload.platform=metrics.os.platform),metrics.os.platform&&"unknown"!==metrics.os.platform){const detailedOS=`${metrics.os.distro} ${metrics.os.release}`;payload.os=detailedOS}await this.deviceStore.update(id,payload)}return response.result}async getBrowsePath(id,reqPath){if(!await this.deviceStore.getById(id))throw new AppError(404,"Device not found.");if(!1===configService.config.ALLOW_FILE_BROWSER)throw new AppError(403,"File browser is disabled");const browserRoot=configService.config.FILE_BROWSER_ROOT;if(browserRoot&&reqPath){const resolved=path.resolve(reqPath),resolvedRoot=path.resolve(browserRoot);if(!resolved.startsWith(resolvedRoot))throw new AppError(403,"Access denied: path outside allowed root")}const strategy=this.getSystemStrategy(id);return await strategy.getBrowsePath(reqPath)}async getMountPoints(id){if(!await this.deviceStore.getById(id))throw new AppError(404,"Device not found.");const strategy=this.getSystemStrategy(id);return await strategy.getMountPoints()}async updateRestic(id,version){const device=await this.deviceStore.getById(id);if(!device)throw new AppError(404,"Device not found.");const strategy=this.getSystemStrategy(id),response=await strategy.updateRestic(),updatedVersion=response.result;if(!response.success)throw new AppError(500,"Failed to update restic");try{const versions=device.versions||{restic:"",rclone:"",agent:""};updatedVersion&&(versions.restic=updatedVersion),await this.deviceStore.update(id,{versions:versions})}catch(error){}return response.result}async updateRclone(id,version){const device=await this.deviceStore.getById(id);if(!device)throw new AppError(404,"Device not found.");const strategy=this.getSystemStrategy(id),response=await strategy.updateRclone(),updatedVersion=response.result;if(!response.success)throw new AppError(500,"Failed to update rclone");try{const versions=device.versions||{restic:"",rclone:"",agent:""};updatedVersion&&(versions.rclone=updatedVersion),await this.deviceStore.update(id,{versions:versions})}catch(error){}return response.result}}
1
+ import path from"path";import{deviceUpdateSchema}from"../db/schema/devices";import{DeviceLogger}from"../utils/logger";import{LocalStrategy,RemoteStrategy}from"../strategies/system";import{configService}from"./ConfigService";import{AppError}from"../utils/AppError";export class DeviceService{localSystemManager;deviceStore;planStore;storageStore;connectedDeviceIds;constructor(localSystemManager,deviceStore,planStore,storageStore){this.localSystemManager=localSystemManager,this.deviceStore=deviceStore,this.planStore=planStore,this.storageStore=storageStore}getSystemStrategy(deviceId){return"main"!==deviceId?new RemoteStrategy(deviceId):new LocalStrategy(this.localSystemManager)}async getDevices(){const allDevices=await this.deviceStore.getAll();return allDevices?.map(device=>({...device,connected:this.connectedDeviceIds?.has(device.id)||!1}))||null}async getDevice(id,getMetrics){const deviceRaw=await this.deviceStore.getById(id);if(!deviceRaw)throw new Error("Device not found.");const device={...deviceRaw,connected:this.connectedDeviceIds?.has(deviceRaw.id)||!1},plans=await this.planStore.getDevicePlans(id),devicePlans=plans&&plans.map(plan=>({id:plan.id,title:plan.title,method:plan.method,createdAt:plan.createdAt,isActive:plan.isActive,sourceConfig:plan.sourceConfig,storage:{id:plan.storageId,path:plan.storagePath,name:"",type:"",typeName:"",size:0},size:plan.stats?.size||0}))||[],deviceStorages=await this.deviceStore.getDeviceStorages(id)||[];if(!getMetrics)return{device:device,metrics:null,plans:devicePlans,storages:deviceStorages};try{const strategy=this.getSystemStrategy(id),metricsResp=await strategy.getMetrics();return{device:device,metrics:metricsResp.result&&metricsResp.success&&"string"!=typeof metricsResp.result&&metricsResp.result.system?metricsResp.result:null,plans:devicePlans,storages:deviceStorages}}catch(error){return DeviceLogger(id).error(`Error fetching device data for #${id}. Reason : ${error?.message.toString()||"Unknown Error"}`),{device:device,metrics:null,plans:[],storages:deviceStorages}}}async updateDevice(id,data){const existingDevice=await this.deviceStore.getById(id);if(!existingDevice)throw new Error("Device not found.");let updatedObj={};try{updatedObj=deviceUpdateSchema.parse({name:data.name??existingDevice.name,settings:data.settings??existingDevice.settings,tags:data.tags??existingDevice.tags})}catch(error){throw new AppError(400,"Invalid device data provided")}if(data.settings&&"main"!==existingDevice.id)try{const strategy=this.getSystemStrategy(id);if(!(await strategy.updateSettings(data.settings)).success)throw new Error("Failed to update device settings")}catch(error){throw new Error("Failed to update device settings")}return await this.deviceStore.update(id,updatedObj)}async getMetrics(id){const device=await this.deviceStore.getById(id);if(!device)throw new Error("Device not found.");const strategy=this.getSystemStrategy(id),response=await strategy.getMetrics();if(!response.success)throw new Error("Failed to get Device metrics");if("string"!=typeof response.result&&response.success&&response.result?.system){const metrics=response.result,payload={metrics:metrics,lastSeen:new Date,status:"active"};if(payload.versions=device.versions||{restic:"",rclone:"",agent:""},metrics.versions?.restic&&(payload.versions.restic=metrics.versions.restic),metrics.versions?.rclone&&(payload.versions.rclone=metrics.versions.rclone),metrics.versions?.agent&&(payload.versions.agent=metrics.versions.agent),metrics.os.hostname&&"unknown"!==metrics.os.hostname&&(payload.hostname=metrics.os.hostname),metrics.os.platform&&"unknown"!==metrics.os.platform&&(payload.platform=metrics.os.platform),metrics.os.platform&&"unknown"!==metrics.os.platform){const detailedOS=`${metrics.os.distro} ${metrics.os.release}`;payload.os=detailedOS}await this.deviceStore.update(id,payload)}return response.result}async getBrowsePath(id,reqPath){if(!await this.deviceStore.getById(id))throw new AppError(404,"Device not found.");if(!1===configService.config.ALLOW_FILE_BROWSER)throw new AppError(403,"File browser is disabled");const browserRoot=configService.config.FILE_BROWSER_ROOT;if(browserRoot&&reqPath){const resolved=path.resolve(reqPath),resolvedRoot=path.resolve(browserRoot);if(!resolved.startsWith(resolvedRoot))throw new AppError(403,"Access denied: path outside allowed root")}const strategy=this.getSystemStrategy(id);return await strategy.getBrowsePath(reqPath)}async getMountPoints(id){if(!await this.deviceStore.getById(id))throw new AppError(404,"Device not found.");const strategy=this.getSystemStrategy(id);return await strategy.getMountPoints()}async updateRestic(id,version){const device=await this.deviceStore.getById(id);if(!device)throw new AppError(404,"Device not found.");const strategy=this.getSystemStrategy(id),response=await strategy.updateRestic(),updatedVersion=response.result;if(!response.success)throw new AppError(500,"Failed to update restic");try{const versions=device.versions||{restic:"",rclone:"",agent:""};updatedVersion&&(versions.restic=updatedVersion),await this.deviceStore.update(id,{versions:versions})}catch(error){}return response.result}async updateRclone(id,version){const device=await this.deviceStore.getById(id);if(!device)throw new AppError(404,"Device not found.");const strategy=this.getSystemStrategy(id),response=await strategy.updateRclone(),updatedVersion=response.result;if(!response.success)throw new AppError(500,"Failed to update rclone");try{const versions=device.versions||{restic:"",rclone:"",agent:""};updatedVersion&&(versions.rclone=updatedVersion),await this.deviceStore.update(id,{versions:versions})}catch(error){}return response.result}}
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceService.js","sourceRoot":"","sources":["../../src/services/DeviceService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DeviceService.js","sourceRoot":"","sources":["../../src/services/DeviceService.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,22 @@ export declare class PlanService {
52
52
  * Resumes the backup plan.
53
53
  */
54
54
  resumeBackup(planId: string): Promise<void>;
55
+ /**
56
+ * Checks the integrity of a backup plan's repository.
57
+ * This can be a long-running operation, so it's designed to be called asynchronously and returns progress updates via events.
58
+ */
59
+ checkIntegrity(planId: string): Promise<{
60
+ success: boolean;
61
+ result: Record<string, any>;
62
+ }>;
63
+ /**
64
+ * Removes a replication storage from a plan's replication settings.
65
+ * Optionally purges the replicated data from the remote storage.
66
+ */
67
+ deleteReplicationStorage(planId: string, storageID: string, storagePath: string, removeData: boolean, replicationId?: string): Promise<{
68
+ success: boolean;
69
+ message: string;
70
+ }>;
55
71
  /**
56
72
  * Unlocks a plan's repository by removing all stale locks.
57
73
  */
@@ -68,5 +84,9 @@ export declare class PlanService {
68
84
  */
69
85
  downloadPlanLogs(planId: string): Promise<NodeJS.ReadableStream>;
70
86
  private getStorageDetails;
87
+ /**
88
+ * Resolves replication storage names from storageIds for a plan's replication settings.
89
+ */
90
+ private resolveReplicationStorages;
71
91
  }
72
92
  //# sourceMappingURL=PlanService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanService.d.ts","sourceRoot":"","sources":["../../src/services/PlanService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAsC,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAkB,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMzE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAMtD;;;;GAIG;AACH,qBAAa,WAAW;IAEtB,SAAS,CAAC,UAAU,EAAE,iBAAiB;IACvC,SAAS,CAAC,SAAS,EAAE,SAAS;IAC9B,SAAS,CAAC,WAAW,EAAE,WAAW;IAClC,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,SAAS,CAAC,WAAW,EAAE,WAAW;IAClC,SAAS,CAAC,YAAY,EAAE,YAAY;gBAL1B,UAAU,EAAE,iBAAiB,EAC7B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY;IAGrC,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,GAAG,cAAc,GAAG,GAAG;IAO1C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAQtE,WAAW,CAAC,OAAO,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;IAK5D,2BAA2B,CACvC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,QAAQ,GAAG,SAAS,GACxB,OAAO,CAAC,OAAO,CAAC;IAOnB;;OAEG;IACU,UAAU,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAyF5D;;OAEG;IACU,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA2D/E;;OAEG;IACU,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAgCpF;;OAEG;IACU,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBzD;;OAEG;IACU,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB1D;;OAEG;IACU,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvD;;OAEG;IACU,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxD;;OAEG;IACU,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IA2BtF;;OAEG;IACU,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC;IA8C5E;;OAEG;IACU,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;YAyB/D,iBAAiB;CAc/B"}
1
+ {"version":3,"file":"PlanService.d.ts","sourceRoot":"","sources":["../../src/services/PlanService.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- import{createReadStream}from"fs";import{access,constants,readFile}from"fs/promises";import{planInsertSchema,planUpdateSchema}from"../db/schema/plans";import{planLogger}from"../utils/logger";import{generateUID}from"../utils/helpers";import{intervalToCron}from"../utils/intervalToCron";import{LocalStrategy as LocalBackupStrategy}from"../strategies/backup/LocalStrategy";import{RemoteStrategy as RemoteBackupStrategy}from"../strategies/backup/RemoteStrategy";import{appPaths}from"../utils/AppPaths";import{AppError,NotFoundError}from"../utils/AppError";import{sanitizeStoragePath}from"../utils/sanitizeStoragePath";export class PlanService{localAgent;planStore;backupStore;storageStore;deviceStore;restoreStore;constructor(localAgent,planStore,backupStore,storageStore,deviceStore,restoreStore){this.localAgent=localAgent,this.planStore=planStore,this.backupStore=backupStore,this.storageStore=storageStore,this.deviceStore=deviceStore,this.restoreStore=restoreStore}getStrategy(plan){return"main"!==plan.sourceId?new RemoteBackupStrategy(plan.sourceId):new LocalBackupStrategy(this.localAgent)}async getPlan(planId,history=!0){const result=await this.planStore.getById(planId,history);if(!result)throw new NotFoundError("Plan not found");return result}async getAllPlans(history=!0){return await this.planStore.getAll(history)}async checkActiveBackupsOrRestore(planId,type){return"restore"===type?await this.planStore.hasActiveRestore(planId):await this.planStore.hasActiveBackups(planId)}async createPlan(planData){const planId=generateUID(),{title:title,description:description,storage:storage,storagePath:storagePath,sourceConfig:sourceConfig,sourceId:sourceId,sourceType:sourceType,method:method,settings:settings,tags:tags=[]}=planData,planStorage=await this.getStorageDetails(planData.storage.id);if(!planStorage.name||!planStorage.type)throw new NotFoundError("Storage not found.");const theStoragePath=sanitizeStoragePath(storagePath,planStorage.type);let newPlanData={id:planId,title:title.trim(),description:description?.trim()||"",storageId:storage.id,storagePath:theStoragePath,method:method,sourceConfig:sourceConfig,sourceId:sourceId,sourceType:sourceType,settings:settings,tags:tags};try{const parsedPlanData=planInsertSchema.parse(newPlanData);newPlanData={...parsedPlanData,sourceType:parsedPlanData.sourceType}}catch(error){throw error}if(!await this.deviceStore.getById(sourceId))throw new NotFoundError("Source device not found");const cronExpression=intervalToCron(planData.settings.interval),backupScheduleOptions={...newPlanData,isActive:!0,storage:planStorage,cronExpression:cronExpression};try{const strategy=this.getStrategy(newPlanData),creationRes=await strategy.createBackup(planId,backupScheduleOptions);if(!creationRes.success)throw new AppError(500,creationRes.result)}catch(error){if(error instanceof AppError)throw error;throw new AppError(500,error?.message||"Error creating backup schedule")}const createdPlan=await this.planStore.create(newPlanData);if(!createdPlan)throw new AppError(500,"Failed to save the new plan to the database.");return planLogger("create",planId).info("Backup Plan created."),createdPlan}async updatePlan(planId,planData){const currentPlan=await this.planStore.getById(planId);if(!currentPlan)throw new NotFoundError("Plan not found.");let parsedPlanData;try{const parsedData=planUpdateSchema.parse(planData);parsedPlanData={...parsedData,sourceType:parsedData.sourceType||currentPlan.sourceType}}catch(error){throw error}const updatedPlan=await this.planStore.update(planId,parsedPlanData);if(!updatedPlan)throw new AppError(500,"Failed to update plan in the database.");const planStorage=await this.getStorageDetails(currentPlan.storageId);if(!planStorage.name||!planStorage.type)throw new NotFoundError("Storage not found.");const planSettings=parsedPlanData.settings||currentPlan.settings,cronExpression=intervalToCron(planSettings.interval),backupScheduleOptions={...updatedPlan,storage:planStorage,cronExpression:cronExpression};try{const strategy=this.getStrategy(updatedPlan),updateRes=await strategy.updateBackup(planId,backupScheduleOptions);if(!updateRes.success)throw"main"!==updatedPlan.sourceId&&await this.planStore.update(planId,currentPlan),new AppError(500,updateRes.result);return planLogger("update",planId).info("Backup Plan updated by User."),updatedPlan}catch(error){if(error instanceof AppError)throw error;throw new AppError(500,error?.message||"Failed to update plan")}}async deletePlan(planId,removeRemoteData){const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError("Plan not found.");const storageName=plan.storage?.name||"",options={storageName:"Local"===storageName||"Local Storage"===storageName?"local":storageName,storagePath:plan.storagePath||"",encryption:plan.settings.encryption||!0,removeRemoteData:removeRemoteData},strategy=this.getStrategy(plan),deleteResult=await strategy.removeBackup(planId,options);if(!deleteResult.success)throw new AppError(500,deleteResult.result);await this.restoreStore.deleteByPlanId(planId),await this.backupStore.deleteByPlanId(planId);const deleteRes=await this.planStore.delete(planId);if(!deleteRes)throw new AppError(500,"Failed to delete plan from the database.");return planLogger("delete",planId).info("Plan and associated data successfully deleted."),deleteRes}async performBackup(planId){const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError(`Plan with ID ${planId} not found.`);if(await this.planStore.hasActiveBackups(planId))throw new AppError(500,"A backup is already in progress for this plan.");const strategy=this.getStrategy(plan),performResult=await strategy.performBackup(planId);if(!performResult.success)throw new AppError(500,performResult.result)}async pruneBackups(planId){const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError(`Plan with ID ${planId} not found.`);const strategy=this.getStrategy(plan),pruneResult=await strategy.pruneBackups(planId);if(!pruneResult.success)throw new AppError(500,"string"==typeof pruneResult.result?pruneResult.result:"Error Pruning Backup");return planLogger("prune",planId).info("Backup Plan prune successfully performed."),pruneResult.result}async pauseBackup(planId){const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError(`Plan with ID ${planId} not found.`);const strategy=this.getStrategy(plan),pauseResult=await strategy.pauseBackup(planId);if(!pauseResult.success)throw new AppError(500,pauseResult.result);await this.planStore.setActive(planId,!1),planLogger("update",planId).info("Plan paused.")}async resumeBackup(planId){const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError(`Plan with ID ${planId} not found.`);const strategy=this.getStrategy(plan),resumeResult=await strategy.resumeBackup(planId);if(!resumeResult.success)throw new AppError(500,resumeResult.result);await this.planStore.setActive(planId,!0),planLogger("update",planId).info("Plan resumed.")}async unlockRepo(planId){const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError(`Plan with ID ${planId} not found.`);const strategy=this.getStrategy(plan);if(!strategy.unlockRepo)throw new AppError(501,'The "unlockRepo" feature is not implemented for this strategy.');const unlockResult=await strategy.unlockRepo(planId);return unlockResult.success?planLogger("unlock",planId).info("Repository unlocked successfully by user request."):planLogger("unlock",planId).error(`Failed to unlock repository: ${unlockResult.result}`),unlockResult}async getPlanLogs(planId){const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError(`Plan with ID ${planId} not found.`);if(plan){const logFilePath=`${appPaths.getLogsDir()}/plan-${plan.id}.log`;try{const rawLogs=await readFile(logFilePath,"utf-8");if(!rawLogs)throw new NotFoundError(`No logs found for plan with ID ${planId}`);return rawLogs.split(/\r?\n/).filter(line=>""!==line.trim()).map(line=>{try{const entry=JSON.parse(line);if(entry.time){const date=new Date(entry.time);entry.formattedTime=date.toLocaleString()}return entry}catch(e){return{raw:line}}})}catch(error){if("ENOENT"===error.code)throw new NotFoundError(`No logs found for plan with ID ${planId}`);throw error}}}async downloadPlanLogs(planId){const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError(`Plan with ID ${planId} not found.`);const logFilePath=`${appPaths.getLogsDir()}/plan-${plan.id}.log`;try{await access(logFilePath,constants.F_OK);return createReadStream(logFilePath)}catch(error){if("ENOENT"===error.code)throw new NotFoundError("Log file not found");throw new AppError(403,error?.message||"Failed to access the log file")}}async getStorageDetails(storageId){const storage=await this.storageStore.getById(storageId);if(!storage)throw new NotFoundError("Storage not found");return{name:"local"===storage.id?"local":storage.name,type:storage.type,authType:storage.authType,settings:storage.settings,credentials:storage.credentials,defaultPath:storage.defaultPath}}}
1
+ import{createReadStream}from"fs";import{access,constants,readFile}from"fs/promises";import{planInsertSchema,planUpdateSchema}from"../db/schema/plans";import{planLogger}from"../utils/logger";import{generateUID}from"../utils/helpers";import{intervalToCron}from"../utils/intervalToCron";import{LocalStrategy as LocalBackupStrategy}from"../strategies/backup/LocalStrategy";import{RemoteStrategy as RemoteBackupStrategy}from"../strategies/backup/RemoteStrategy";import{appPaths}from"../utils/AppPaths";import{AppError,NotFoundError}from"../utils/AppError";import{sanitizeStoragePath}from"../utils/sanitizeStoragePath";export class PlanService{localAgent;planStore;backupStore;storageStore;deviceStore;restoreStore;constructor(localAgent,planStore,backupStore,storageStore,deviceStore,restoreStore){this.localAgent=localAgent,this.planStore=planStore,this.backupStore=backupStore,this.storageStore=storageStore,this.deviceStore=deviceStore,this.restoreStore=restoreStore}getStrategy(plan){return"main"!==plan.sourceId?new RemoteBackupStrategy(plan.sourceId):new LocalBackupStrategy(this.localAgent)}async getPlan(planId,history=!0){const result=await this.planStore.getById(planId,history);if(!result)throw new NotFoundError("Plan not found");return result}async getAllPlans(history=!0){return await this.planStore.getAll(history)}async checkActiveBackupsOrRestore(planId,type){return"restore"===type?await this.planStore.hasActiveRestore(planId):await this.planStore.hasActiveBackups(planId)}async createPlan(planData){const planId=generateUID(),{title:title,description:description,storage:storage,storagePath:storagePath,sourceConfig:sourceConfig,sourceId:sourceId,sourceType:sourceType,method:method,settings:settings,tags:tags=[]}=planData,planStorage=await this.getStorageDetails(planData.storage.id);if(!planStorage.name||!planStorage.type)throw new NotFoundError("Storage not found.");const device=await this.deviceStore.getById(sourceId);if(!device)throw new NotFoundError("Source device not found");const targetOS="main"!==sourceId?device.os??void 0:void 0,theStoragePath=sanitizeStoragePath(storagePath,planStorage.type,targetOS);let newPlanData={id:planId,title:title.trim(),description:description?.trim()||"",storageId:storage.id,storagePath:theStoragePath,method:method,sourceConfig:sourceConfig,sourceId:sourceId,sourceType:sourceType,settings:settings,tags:tags};try{const parsedPlanData=planInsertSchema.parse(newPlanData);newPlanData={...parsedPlanData,sourceType:parsedPlanData.sourceType}}catch(error){throw error}const cronExpression=intervalToCron(planData.settings.interval),backupScheduleOptions={...newPlanData,isActive:!0,storage:planStorage,cronExpression:cronExpression};try{const strategy=this.getStrategy(newPlanData),creationRes=await strategy.createBackup(planId,backupScheduleOptions);if(!creationRes.success)throw new AppError(500,creationRes.result)}catch(error){if(error instanceof AppError)throw error;throw new AppError(500,error?.message||"Error creating backup schedule")}const createdPlan=await this.planStore.create(newPlanData);if(!createdPlan)throw new AppError(500,"Failed to save the new plan to the database.");return planLogger("create",planId).info("Backup Plan created."),createdPlan}async updatePlan(planId,planData){const currentPlan=await this.planStore.getById(planId);if(!currentPlan)throw new NotFoundError("Plan not found.");let parsedPlanData;try{const parsedData=planUpdateSchema.parse(planData);parsedPlanData={...parsedData,sourceType:parsedData.sourceType||currentPlan.sourceType}}catch(error){throw error}const updatedPlan=await this.planStore.update(planId,parsedPlanData);if(!updatedPlan)throw new AppError(500,"Failed to update plan in the database.");const planStorage=await this.getStorageDetails(currentPlan.storageId);if(!planStorage.name||!planStorage.type)throw new NotFoundError("Storage not found.");const planSettings=parsedPlanData.settings||currentPlan.settings,cronExpression=intervalToCron(planSettings.interval),backupScheduleOptions={...updatedPlan,storage:planStorage,cronExpression:cronExpression};try{const strategy=this.getStrategy(updatedPlan),updateRes=await strategy.updateBackup(planId,backupScheduleOptions);if(!updateRes.success)throw"main"!==updatedPlan.sourceId&&await this.planStore.update(planId,currentPlan),new AppError(500,updateRes.result);return planLogger("update",planId).info("Backup Plan updated by User."),updatedPlan}catch(error){if(error instanceof AppError)throw error;throw new AppError(500,error?.message||"Failed to update plan")}}async deletePlan(planId,removeRemoteData){const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError("Plan not found.");const storageName=plan.storage?.name||"",replicationStorages=removeRemoteData?await this.resolveReplicationStorages(plan):[],options={storageName:"Local"===storageName||"Local Storage"===storageName?"local":storageName,storagePath:plan.storagePath||"",encryption:plan.settings.encryption||!0,removeRemoteData:removeRemoteData,replicationStorages:replicationStorages},strategy=this.getStrategy(plan),deleteResult=await strategy.removeBackup(planId,options);if(!deleteResult.success)throw new AppError(500,deleteResult.result);await this.restoreStore.deleteByPlanId(planId),await this.backupStore.deleteByPlanId(planId);const deleteRes=await this.planStore.delete(planId);if(!deleteRes)throw new AppError(500,"Failed to delete plan from the database.");return planLogger("delete",planId).info("Plan and associated data successfully deleted."),deleteRes}async performBackup(planId){const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError(`Plan with ID ${planId} not found.`);if(await this.planStore.hasActiveBackups(planId))throw new AppError(500,"A backup is already in progress for this plan.");const strategy=this.getStrategy(plan),performResult=await strategy.performBackup(planId);if(!performResult.success)throw new AppError(500,performResult.result)}async pruneBackups(planId){const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError(`Plan with ID ${planId} not found.`);const replicationStorages=await this.resolveReplicationStorages(plan),strategy=this.getStrategy(plan),pruneResult=await strategy.pruneBackups(planId,replicationStorages);if(!pruneResult.success)throw new AppError(500,"string"==typeof pruneResult.result?pruneResult.result:"Error Pruning Backup");return planLogger("prune",planId).info("Backup Plan prune successfully performed."),pruneResult.result}async pauseBackup(planId){const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError(`Plan with ID ${planId} not found.`);const strategy=this.getStrategy(plan),pauseResult=await strategy.pauseBackup(planId);if(!pauseResult.success)throw new AppError(500,pauseResult.result);await this.planStore.setActive(planId,!1),planLogger("update",planId).info("Plan paused.")}async resumeBackup(planId){const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError(`Plan with ID ${planId} not found.`);const strategy=this.getStrategy(plan),resumeResult=await strategy.resumeBackup(planId);if(!resumeResult.success)throw new AppError(500,resumeResult.result);await this.planStore.setActive(planId,!0),planLogger("update",planId).info("Plan resumed.")}async checkIntegrity(planId){try{const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError("Plan not found");try{const planID=plan.id,strategy=this.getStrategy(plan);return await strategy.checkIntegrity(planID)}catch(error){throw new AppError(500,error?.message||"Internal Server Error")}}catch(error){throw new AppError(500,error?.message||"Internal Server Error")}}async deleteReplicationStorage(planId,storageID,storagePath,removeData,replicationId){const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError("Plan not found.");const replication=plan.settings?.replication;if(!replication?.storages?.length)throw new AppError(400,"Plan has no replication storages configured.");const storageIndex=replicationId?replication.storages.findIndex(s=>s.replicationId===replicationId):replication.storages.findIndex(s=>s.storageId===storageID&&s.storagePath===storagePath);if(-1===storageIndex)return{success:!0,message:"Replication storage removed successfully."};let storageName="Unknown";const storageRecords=await this.storageStore.getByIds([storageID]);if(storageRecords?.length){const name=storageRecords[0].name;storageName="Local"===name||"Local Storage"===name?"local":name}if(removeData){const strategy=this.getStrategy(plan),purgeResult=await strategy.removeReplicationStorage(planId,{storageName:storageName,storagePath:storagePath,removeData:removeData});if(!purgeResult.success)throw new AppError(500,`Failed to purge replication data: ${purgeResult.result}`)}const updatedStorages=replication.storages.filter((_,i)=>i!==storageIndex),updatedReplication={...replication,storages:updatedStorages,...0===updatedStorages.length&&{enabled:!1}},updatedSettings={...plan.settings,replication:updatedReplication};await this.planStore.update(planId,{settings:updatedSettings});try{const planStorage=await this.getStorageDetails(plan.storageId),cronExpression=intervalToCron(updatedSettings.interval),updatedPlan=await this.planStore.getById(planId);if(updatedPlan&&planStorage.name){const backupScheduleOptions={...updatedPlan,storage:planStorage,cronExpression:cronExpression},strategy=this.getStrategy(updatedPlan);await strategy.updateBackup(planId,backupScheduleOptions)}}catch(error){planLogger("replication",planId).warn(`Failed to sync CronManager schedule after removing replication storage: ${error?.message||"Unknown error"}`)}return planLogger("replication",planId).info(`Replication storage "${storageName}" (${storagePath}) removed from plan.${removeData?" Replicated data was purged.":""}`),{success:!0,message:`Replication storage "${storageName}" removed successfully.`}}async unlockRepo(planId){const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError(`Plan with ID ${planId} not found.`);const replicationStorages=await this.resolveReplicationStorages(plan),strategy=this.getStrategy(plan);if(!strategy.unlockRepo)throw new AppError(501,'The "unlockRepo" feature is not implemented for this strategy.');const unlockResult=await strategy.unlockRepo(planId,replicationStorages);return unlockResult.success?planLogger("unlock",planId).info("Repository unlocked successfully by user request."):planLogger("unlock",planId).error(`Failed to unlock repository: ${unlockResult.result}`),unlockResult}async getPlanLogs(planId){const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError(`Plan with ID ${planId} not found.`);if(plan){const logFilePath=`${appPaths.getLogsDir()}/plan-${plan.id}.log`;try{const rawLogs=await readFile(logFilePath,"utf-8");if(!rawLogs)throw new NotFoundError(`No logs found for plan with ID ${planId}`);return rawLogs.split(/\r?\n/).filter(line=>""!==line.trim()).map(line=>{try{const entry=JSON.parse(line);if(entry.time){const date=new Date(entry.time);entry.formattedTime=date.toLocaleString()}return entry}catch(e){return{raw:line}}})}catch(error){if("ENOENT"===error.code)throw new NotFoundError(`No logs found for plan with ID ${planId}`);throw error}}}async downloadPlanLogs(planId){const plan=await this.planStore.getById(planId);if(!plan)throw new NotFoundError(`Plan with ID ${planId} not found.`);const logFilePath=`${appPaths.getLogsDir()}/plan-${plan.id}.log`;try{await access(logFilePath,constants.F_OK);return createReadStream(logFilePath)}catch(error){if("ENOENT"===error.code)throw new NotFoundError("Log file not found");throw new AppError(403,error?.message||"Failed to access the log file")}}async getStorageDetails(storageId){const storage=await this.storageStore.getById(storageId);if(!storage)throw new NotFoundError("Storage not found");return{name:"local"===storage.id?"local":storage.name,type:storage.type,authType:storage.authType,settings:storage.settings,credentials:storage.credentials,defaultPath:storage.defaultPath}}async resolveReplicationStorages(plan){if(!plan.settings.replication?.enabled||!plan.settings.replication.storages?.length)return[];const storageIds=plan.settings.replication.storages.map(s=>s.storageId),storageRecords=await this.storageStore.getByIds(storageIds);return storageRecords?plan.settings.replication.storages.map(rs=>{const record=storageRecords.find(s=>s.id===rs.storageId),name=record?.name||"";return{storageName:"Local"===name||"Local Storage"===name?"local":name,storagePath:rs.storagePath}}).filter(s=>s.storageName&&s.storagePath):[]}}
@@ -1 +1 @@
1
- {"version":3,"file":"PlanService.js","sourceRoot":"","sources":["../../src/services/PlanService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlanService.js","sourceRoot":"","sources":["../../src/services/PlanService.ts"],"names":[],"mappings":"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"}
@@ -18,9 +18,9 @@ export declare class RestoreService {
18
18
  getRestoreStrategy(deviceId: string, method: string): RestoreStrategy;
19
19
  getAllRestores(): Promise<{
20
20
  id: string;
21
+ started: Date | null;
21
22
  createdAt: Date;
22
23
  updatedAt: Date | null;
23
- started: Date | null;
24
24
  ended: Date | null;
25
25
  inProgress: boolean | null;
26
26
  status: string | null;
@@ -38,9 +38,9 @@ export declare class RestoreService {
38
38
  }[] | null>;
39
39
  getRestore(restoreId: string): Promise<{
40
40
  id: string;
41
+ started: Date | null;
41
42
  createdAt: Date;
42
43
  updatedAt: Date | null;
43
- started: Date | null;
44
44
  ended: Date | null;
45
45
  inProgress: boolean | null;
46
46
  status: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"RestoreService.d.ts","sourceRoot":"","sources":["../../src/services/RestoreService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAiC,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAkB,MAAM,mBAAmB,CAAC;AAElE;;GAEG;AACH,qBAAa,cAAc;IAEzB,SAAS,CAAC,UAAU,EAAE,kBAAkB;IACxC,SAAS,CAAC,SAAS,EAAE,SAAS;IAC9B,SAAS,CAAC,WAAW,EAAE,WAAW;IAClC,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,SAAS,CAAC,YAAY,EAAE,YAAY;gBAJ1B,UAAU,EAAE,kBAAkB,EAC9B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY;IAGrC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;IAK/D,cAAc;;;;;;;;;;;;;;;;;;;;IAKd,UAAU,CAAC,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;IAQ5B,eAAe,CAAC,SAAS,EAAE,MAAM;;;;IAWjC,aAAa,CAAC,SAAS,EAAE,MAAM;IAS/B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa;IAwC/D,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa;IA4C5D,aAAa,CAAC,SAAS,EAAE,MAAM;;;;IAgB/B,kBAAkB,CAAC,SAAS,EAAE,MAAM;IAapC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAiBxD"}
1
+ {"version":3,"file":"RestoreService.d.ts","sourceRoot":"","sources":["../../src/services/RestoreService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAiC,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAkB,MAAM,mBAAmB,CAAC;AAElE;;GAEG;AACH,qBAAa,cAAc;IAEzB,SAAS,CAAC,UAAU,EAAE,kBAAkB;IACxC,SAAS,CAAC,SAAS,EAAE,SAAS;IAC9B,SAAS,CAAC,WAAW,EAAE,WAAW;IAClC,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,SAAS,CAAC,YAAY,EAAE,YAAY;gBAJ1B,UAAU,EAAE,kBAAkB,EAC9B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY;IAGrC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;IAK/D,cAAc;;;;;;;;;;;;;;;;;;;;IAKd,UAAU,CAAC,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;IAQ5B,eAAe,CAAC,SAAS,EAAE,MAAM;;;;IAWjC,aAAa,CAAC,SAAS,EAAE,MAAM;IAS/B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa;IAgE/D,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa;IA6D5D,aAAa,CAAC,SAAS,EAAE,MAAM;;;;IAgB/B,kBAAkB,CAAC,SAAS,EAAE,MAAM;IAapC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAiBxD"}
@@ -1 +1 @@
1
- import{NotFoundError}from"../utils/AppError";import{RemoteStrategy,LocalStrategy}from"../strategies/restore";export class RestoreService{localAgent;planStore;backupStore;restoreStore;storageStore;constructor(localAgent,planStore,backupStore,restoreStore,storageStore){this.localAgent=localAgent,this.planStore=planStore,this.backupStore=backupStore,this.restoreStore=restoreStore,this.storageStore=storageStore}getRestoreStrategy(deviceId,method){return"main"!==deviceId?new RemoteStrategy(deviceId):new LocalStrategy(this.localAgent)}async getAllRestores(){return await this.restoreStore.getAll()}async getRestore(restoreId){const restore=await this.restoreStore.getById(restoreId);if(!restore)throw new NotFoundError("Restore Item not found.");return restore}async getRestoreStats(restoreId){const restore=await this.restoreStore.getById(restoreId);if(!restore)throw new NotFoundError("Restore not found");const strategy=this.getRestoreStrategy(restore.sourceId,restore.method);return await strategy.getRestoreStats(restore.planId,restoreId)}async deleteRestore(restoreId){if(!await this.restoreStore.getById(restoreId))throw new NotFoundError("Restore not found");await this.restoreStore.delete(restoreId)}async dryRestoreBackup(backupId,restoreConfig){try{const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");if(await this.restoreStore.isRestoreRunning(backupId))throw new Error("A Restoration is already in progress for this Plan");const backupDevice=backup.sourceId?backup.sourceId:"main",strategy=this.getRestoreStrategy(backupDevice,backup.method),storageName=await this.getStorageName(backup.storageId),targetPath=restoreConfig.target||"",restoreResult=await strategy.getRestoreSnapshotStats(backup.planId,backup.id,{storageName:storageName,planId:backup.planId,storagePath:backup.storagePath||"",encryption:backup.encryption||!0,overwrite:restoreConfig.overwrite,target:targetPath,delete:restoreConfig.delete,includes:restoreConfig.includes,excludes:restoreConfig.excludes});if(!restoreResult.success)throw new Error(restoreResult.result||"Failed to dry restore plan");return restoreResult.result}catch(error){throw new Error(error?.message||"Failed to dry restore the backup plan")}}async restoreBackup(backupId,restoreConfig){try{const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");const plan=await this.planStore.getById(backup.planId);if(!plan)throw new Error("Plan not found");if(await this.restoreStore.isRestoreRunning(backupId))throw new Error("A Restoration is already in progress for this Plan");const backupDevice=backup.sourceId?backup.sourceId:"main",strategy=this.getRestoreStrategy(backupDevice,plan.method),storageName=await this.getStorageName(backup.storageId),performanceSettings=plan.settings.performance,restoreResult=await strategy.restoreSnapshot(backup.planId,backup.id,{planId:backup.planId,storageName:storageName,storagePath:backup.storagePath||"",encryption:backup.encryption||!0,overwrite:restoreConfig.overwrite||"always",target:restoreConfig.target||"",includes:restoreConfig.includes||[],excludes:restoreConfig.excludes||[],delete:restoreConfig.delete||!1,sources:plan.sourceConfig.includes||[],performanceSettings:performanceSettings});if(!restoreResult.success)throw new Error(restoreResult.result||"Failed to restore plan");return restoreResult.result}catch(error){throw new Error(error?.message||"Failed to Dry restore the backup plan")}}async cancelRestore(restoreId){const restore=await this.restoreStore.getById(restoreId);if(!restore)throw new NotFoundError("Restore not found");const strategy=this.getRestoreStrategy(restore.sourceId,restore.method),cancelResult=await strategy.cancelSnapshotRestore(restore.planId,restoreId);return await this.restoreStore.update(restoreId,{status:"cancelled",inProgress:!1}),cancelResult}async getRestoreProgress(restoreId){const restore=await this.restoreStore.getById(restoreId);if(!restore)throw new NotFoundError("Restore not found");const strategy=this.getRestoreStrategy(restore.sourceId,restore.method),progressResult=await strategy.getRestoreProgress(restore.planId,restoreId);if(!progressResult.success)throw new Error(progressResult.result||"Failed to get Restore Progress");return progressResult.result}async getStorageName(storageId){let storageName="";if("local"!==storageId)try{const storage=await this.storageStore.getById(storageId);storage?.name&&(storageName=storage.name)}catch(error){return storageName}else storageName="local";return storageName}}
1
+ import{NotFoundError}from"../utils/AppError";import{RemoteStrategy,LocalStrategy}from"../strategies/restore";export class RestoreService{localAgent;planStore;backupStore;restoreStore;storageStore;constructor(localAgent,planStore,backupStore,restoreStore,storageStore){this.localAgent=localAgent,this.planStore=planStore,this.backupStore=backupStore,this.restoreStore=restoreStore,this.storageStore=storageStore}getRestoreStrategy(deviceId,method){return"main"!==deviceId?new RemoteStrategy(deviceId):new LocalStrategy(this.localAgent)}async getAllRestores(){return await this.restoreStore.getAll()}async getRestore(restoreId){const restore=await this.restoreStore.getById(restoreId);if(!restore)throw new NotFoundError("Restore Item not found.");return restore}async getRestoreStats(restoreId){const restore=await this.restoreStore.getById(restoreId);if(!restore)throw new NotFoundError("Restore not found");const strategy=this.getRestoreStrategy(restore.sourceId,restore.method);return await strategy.getRestoreStats(restore.planId,restoreId)}async deleteRestore(restoreId){if(!await this.restoreStore.getById(restoreId))throw new NotFoundError("Restore not found");await this.restoreStore.delete(restoreId)}async dryRestoreBackup(backupId,restoreConfig){try{const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");if(await this.restoreStore.isRestoreRunning(backupId))throw new Error("A Restoration is already in progress for this Plan");const plan=await this.planStore.getById(backup.planId);if(!plan)throw new Error("Plan not found");const backupDevice=backup.sourceId?backup.sourceId:"main",storageID=backup.storageId;let storagePath=backup.storagePath,storageName=await this.getStorageName(storageID);const targetPath=restoreConfig.target||"";if(restoreConfig.replicationId){const replicationStorage=plan.settings?.replication?.storages.find(m=>m.replicationId===restoreConfig.replicationId);if(!replicationStorage)throw new Error("Replication Storage not found");storagePath=replicationStorage.storagePath||"",storageName=replicationStorage.storageName,storageName||(storageName=await this.getStorageName(replicationStorage.storageId))}const strategy=this.getRestoreStrategy(backupDevice,backup.method),restoreResult=await strategy.getRestoreSnapshotStats(backup.planId,backup.id,{storageName:storageName,planId:backup.planId,storagePath:storagePath||"",encryption:backup.encryption||!0,overwrite:restoreConfig.overwrite,target:targetPath,delete:restoreConfig.delete,includes:restoreConfig.includes,excludes:restoreConfig.excludes,replicationId:restoreConfig.replicationId});if(!restoreResult.success)throw new Error(restoreResult.result||"Failed to dry restore plan");return restoreResult.result}catch(error){throw new Error(error?.message||"Failed to dry restore the backup plan")}}async restoreBackup(backupId,restoreConfig){try{const backup=await this.backupStore.getById(backupId);if(!backup)throw new Error("Backup not found");const plan=await this.planStore.getById(backup.planId);if(!plan)throw new Error("Plan not found");if(await this.restoreStore.isRestoreRunning(backupId))throw new Error("A Restoration is already in progress for this Plan");const backupDevice=backup.sourceId?backup.sourceId:"main",storageID=backup.storageId;let storagePath=backup.storagePath,storageName=await this.getStorageName(storageID);const performanceSettings=plan.settings.performance;if(restoreConfig.replicationId){const replicationStorage=plan.settings?.replication?.storages.find(m=>m.replicationId===restoreConfig.replicationId);if(!replicationStorage)throw new Error("Replication Storage not found");storagePath=replicationStorage.storagePath||"",storageName=replicationStorage.storageName,storageName||(storageName=await this.getStorageName(replicationStorage.storageId))}const strategy=this.getRestoreStrategy(backupDevice,plan.method),restoreResult=await strategy.restoreSnapshot(backup.planId,backup.id,{planId:backup.planId,storageName:storageName,storagePath:storagePath||"",encryption:backup.encryption||!0,overwrite:restoreConfig.overwrite||"always",target:restoreConfig.target||"",includes:restoreConfig.includes||[],excludes:restoreConfig.excludes||[],delete:restoreConfig.delete||!1,sources:plan.sourceConfig.includes||[],performanceSettings:performanceSettings});if(!restoreResult.success)throw new Error(restoreResult.result||"Failed to restore plan");return restoreResult.result}catch(error){throw new Error(error?.message||"Failed to restore the backup plan")}}async cancelRestore(restoreId){const restore=await this.restoreStore.getById(restoreId);if(!restore)throw new NotFoundError("Restore not found");const strategy=this.getRestoreStrategy(restore.sourceId,restore.method),cancelResult=await strategy.cancelSnapshotRestore(restore.planId,restoreId);return await this.restoreStore.update(restoreId,{status:"cancelled",inProgress:!1}),cancelResult}async getRestoreProgress(restoreId){const restore=await this.restoreStore.getById(restoreId);if(!restore)throw new NotFoundError("Restore not found");const strategy=this.getRestoreStrategy(restore.sourceId,restore.method),progressResult=await strategy.getRestoreProgress(restore.planId,restoreId);if(!progressResult.success)throw new Error(progressResult.result||"Failed to get Restore Progress");return progressResult.result}async getStorageName(storageId){let storageName="";if("local"!==storageId)try{const storage=await this.storageStore.getById(storageId);storage?.name&&(storageName=storage.name)}catch(error){return storageName}else storageName="local";return storageName}}
@@ -1 +1 @@
1
- {"version":3,"file":"RestoreService.js","sourceRoot":"","sources":["../../src/services/RestoreService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAmB,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAOvF;;GAEG;AACH,MAAM,OAAO,cAAc;IAEf;IACA;IACA;IACA;IACA;IALX,YACW,UAA8B,EAC9B,SAAoB,EACpB,WAAwB,EACxB,YAA0B,EAC1B,YAA0B;QAJ1B,eAAU,GAAV,UAAU,CAAoB;QAC9B,cAAS,GAAT,SAAS,CAAW;QACpB,gBAAW,GAAX,WAAW,CAAa;QACxB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,iBAAY,GAAZ,YAAY,CAAc;IAClC,CAAC;IAEJ,kBAAkB,CAAC,QAAgB,EAAE,MAAc;QAClD,MAAM,QAAQ,GAAG,QAAQ,KAAK,MAAM,CAAC;QACrC,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,cAAc;QACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAClD,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB;QACjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,IAAI,aAAa,CAAC,yBAAyB,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAiB;QACtC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,IAAI,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,MAAgB,EAAE,SAAS,CAAC,CAAC;QAErF,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QACpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,IAAI,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,QAAgB,EAAE,aAA4B;QACpE,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACxD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACrC,CAAC;YACD,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAChF,IAAI,oBAAoB,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACvE,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;YAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACtE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAmB,CAAC,CAAC;YAC1E,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,IAAI,EAAE,CAAC;YAC9C,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,uBAAuB,CAC3D,MAAM,CAAC,MAAgB,EACvB,MAAM,CAAC,EAAE,EACT;gBACC,WAAW;gBACX,MAAM,EAAE,MAAM,CAAC,MAAgB;gBAC/B,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;gBACrC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;gBACrC,SAAS,EAAE,aAAa,CAAC,SAAS;gBAClC,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,aAAa,CAAC,MAAM;gBAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ;gBAChC,QAAQ,EAAE,aAAa,CAAC,QAAQ;aAChC,CACD,CAAC;YAEF,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,IAAI,4BAA4B,CAAC,CAAC;YACvE,CAAC;YAED,OAAO,aAAa,CAAC,MAAM,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,uCAAuC,CAAC,CAAC;QAC5E,CAAC;IACF,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,aAA4B;QACjE,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACxD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACrC,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,MAAgB,CAAC,CAAC;YACnE,IAAI,CAAC,IAAI,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACnC,CAAC;YACD,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAChF,IAAI,oBAAoB,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;YAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACpE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAmB,CAAC,CAAC;YAC1E,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAEtD,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,MAAgB,EAAE,MAAM,CAAC,EAAE,EAAE;gBACxF,MAAM,EAAE,MAAM,CAAC,MAAgB;gBAC/B,WAAW,EAAE,WAAW;gBACxB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;gBACrC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;gBACrC,SAAS,EAAE,aAAa,CAAC,SAAS,IAAI,QAAQ;gBAC9C,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,EAAE;gBAClC,QAAQ,EAAE,aAAa,CAAC,QAAQ,IAAI,EAAE;gBACtC,QAAQ,EAAE,aAAa,CAAC,QAAQ,IAAI,EAAE;gBACtC,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,KAAK;gBACrC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,EAAE;gBACzC,mBAAmB;aACnB,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,IAAI,wBAAwB,CAAC,CAAC;YACnE,CAAC;YAED,OAAO,aAAa,CAAC,MAAM,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,uCAAuC,CAAC,CAAC;QAC5E,CAAC;IACF,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QACpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,IAAI,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACrF,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAgB,EAAE,SAAS,CAAC,CAAC;QAC/F,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE;YACzC,MAAM,EAAE,WAAW;YACnB,UAAU,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,SAAiB;QACzC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,IAAI,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACrF,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAgB,EAAE,SAAS,CAAC,CAAC;QAC9F,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAE,cAAc,CAAC,MAAiB,IAAI,gCAAgC,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,cAAc,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB;QACrC,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACJ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC3D,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;oBACnB,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC5B,CAAC;YACF,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACrB,OAAO,WAAW,CAAC;YACpB,CAAC;QACF,CAAC;aAAM,CAAC;YACP,WAAW,GAAG,OAAO,CAAC;QACvB,CAAC;QAED,OAAO,WAAW,CAAC;IACpB,CAAC;CACD"}
1
+ {"version":3,"file":"RestoreService.js","sourceRoot":"","sources":["../../src/services/RestoreService.ts"],"names":[],"mappings":"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"}
@@ -18,5 +18,13 @@ export declare class SettingsService {
18
18
  }, settings: AppSettings): Promise<boolean>;
19
19
  getAppLogs(id: number): Promise<Record<string, any>[]>;
20
20
  getAppLogsFile(): Promise<ReadStream>;
21
+ setupTwoFactorAuth(): Promise<{
22
+ qrCodeDataUrl: string;
23
+ setupKey: string;
24
+ tempSecret: string;
25
+ }>;
26
+ finalizeTwoFactorSetup(tempSecret: string, userCode: string, settingsId: number): Promise<{
27
+ recoveryCodes: string[];
28
+ }>;
21
29
  }
22
30
  //# sourceMappingURL=SettingsService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsService.d.ts","sourceRoot":"","sources":["../../src/services/SettingsService.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,UAAU,EAAE,MAAM,IAAI,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAwB,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAKtE;;GAEG;AACH,qBAAa,eAAe;IAEf,SAAS,CAAC,aAAa,EAAE,aAAa;IADlD,SAAS,CAAC,2BAA2B,EAAE,4BAA4B,CAA+B;gBAC5E,aAAa,EAAE,aAAa;IAE5C,eAAe,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAI3C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAIjD,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgC3E,mBAAmB,CACxB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,gBAAgB,EACtB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EACvB,QAAQ,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC;IAiDb,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAwCtD,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC;CAkB3C"}
1
+ {"version":3,"file":"SettingsService.d.ts","sourceRoot":"","sources":["../../src/services/SettingsService.ts"],"names":[],"mappings":"AAEA,OAAO,EAA+B,UAAU,EAAE,MAAM,IAAI,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAwB,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAQtE;;GAEG;AACH,qBAAa,eAAe;IAEf,SAAS,CAAC,aAAa,EAAE,aAAa;IADlD,SAAS,CAAC,2BAA2B,EAAE,4BAA4B,CAA+B;gBAC5E,aAAa,EAAE,aAAa;IAE5C,eAAe,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAI3C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAIjD,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgC3E,mBAAmB,CACxB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,gBAAgB,EACtB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EACvB,QAAQ,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC;IAiDb,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAwCtD,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC;IAmBrC,kBAAkB;;;;;IA2BX,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;;;CA8C5F"}
@@ -1 +1 @@
1
- import{createReadStream,constants}from"fs";import{readFile,access}from"fs/promises";import{settingsUpdateSchema}from"../db/schema/settings";import{TestEmailNotification}from"../notifications/templates/email/test-email/TestEmailNotification";import{NotificationChannelResolver}from"../notifications/channels/NotificationChannelResolver";import{appPaths}from"../utils/AppPaths";import{AppError,NotFoundError}from"../utils/AppError";export class SettingsService{settingsStore;notificationChannelResolver=NotificationChannelResolver;constructor(settingsStore){this.settingsStore=settingsStore}async getMainSettings(){return await this.settingsStore.getFirst()}async getSettings(id){return await this.settingsStore.getById(id)}async updateSettings(id,settings){try{let parsedSettings={...settings};try{parsedSettings=settingsUpdateSchema.partial().parse({settings:parsedSettings}).settings}catch(error){throw new AppError(400,"Invalid settings data provided")}const updatedSettings=await this.settingsStore.update(id,parsedSettings);if(!updatedSettings)throw new AppError(500,"Failed to update settings");return updatedSettings}catch(error){if(error instanceof AppError)throw error;throw new AppError(500,error?.message||"An unexpected error occurred while updating settings.")}}async validateIntegration(id,type,test,settings){const appSettings=settings,integrationType=type;appSettings.integration=this.notificationChannelResolver.encryptSecrets(appSettings.integration);try{const updatedSettings=await this.settingsStore.update(id,appSettings);if(!updatedSettings)throw new AppError(500,"Failed to update settings");const theAppSettings=updatedSettings.settings,notificationClass=new TestEmailNotification({integrationType:integrationType,appTitle:theAppSettings?.title||"Pluton"}),senderChannel=await this.notificationChannelResolver.getChannel(integrationType),sendRes=await senderChannel.send(notificationClass,{emails:test.email});if(sendRes.success)return theAppSettings?.integration?.[integrationType]&&(theAppSettings.integration[integrationType].connected=!0),await this.settingsStore.update(id,theAppSettings),!0;throw new AppError(500,`Failed to send test email using ${integrationType}. Reason: ${sendRes.result}`)}catch(error){throw new AppError(500,error instanceof Error?error.message:`Failed to send test email using ${integrationType}.`)}}async getAppLogs(id){const logFilePath=`${appPaths.getLogsDir()}/app.log`;try{const rawLogs=await readFile(logFilePath,"utf-8");if(!rawLogs)throw new NotFoundError("No logs found");return rawLogs.split(/\r?\n/).filter(line=>""!==line.trim()).map(line=>{try{const entry=JSON.parse(line);if(entry.time){const date=new Date(entry.time);entry.formattedTime=date.toLocaleString()}return entry}catch(e){return{raw:line}}})}catch(error){if("ENOENT"===error.code)throw new NotFoundError("No logs found for this plan");throw new AppError(500,"Failed to read logs: "+error.message)}}async getAppLogsFile(){const logFilePath=`${appPaths.getLogsDir()}/app.log`;try{await access(logFilePath,constants.F_OK);return createReadStream(logFilePath)}catch(error){if("ENOENT"===error.code)throw new NotFoundError("Log file not found");throw new AppError(500,`Failed to download logs: ${error.message}`)}}}
1
+ import*as otpauth from"otpauth";import qrcode from"qrcode";import{createReadStream,constants}from"fs";import{readFile,access}from"fs/promises";import{settingsUpdateSchema}from"../db/schema/settings";import{TestEmailNotification}from"../notifications/templates/email/test-email/TestEmailNotification";import{NotificationChannelResolver}from"../notifications/channels/NotificationChannelResolver";import{appPaths}from"../utils/AppPaths";import{AppError,NotFoundError}from"../utils/AppError";import Cryptr from"cryptr";import{configService}from"./ConfigService";import{createHash,randomBytes}from"crypto";export class SettingsService{settingsStore;notificationChannelResolver=NotificationChannelResolver;constructor(settingsStore){this.settingsStore=settingsStore}async getMainSettings(){return await this.settingsStore.getFirst()}async getSettings(id){return await this.settingsStore.getById(id)}async updateSettings(id,settings){try{let parsedSettings={...settings};try{parsedSettings=settingsUpdateSchema.partial().parse({settings:parsedSettings}).settings}catch(error){throw new AppError(400,"Invalid settings data provided")}const updatedSettings=await this.settingsStore.update(id,parsedSettings);if(!updatedSettings)throw new AppError(500,"Failed to update settings");return updatedSettings}catch(error){if(error instanceof AppError)throw error;throw new AppError(500,error?.message||"An unexpected error occurred while updating settings.")}}async validateIntegration(id,type,test,settings){const appSettings=settings,integrationType=type;appSettings.integration=this.notificationChannelResolver.encryptSecrets(appSettings.integration);try{const updatedSettings=await this.settingsStore.update(id,appSettings);if(!updatedSettings)throw new AppError(500,"Failed to update settings");const theAppSettings=updatedSettings.settings,notificationClass=new TestEmailNotification({integrationType:integrationType,appTitle:theAppSettings?.title||"Pluton"}),senderChannel=await this.notificationChannelResolver.getChannel(integrationType),sendRes=await senderChannel.send(notificationClass,{emails:test.email});if(sendRes.success)return theAppSettings?.integration?.[integrationType]&&(theAppSettings.integration[integrationType].connected=!0),await this.settingsStore.update(id,theAppSettings),!0;throw new AppError(500,`Failed to send test email using ${integrationType}. Reason: ${sendRes.result}`)}catch(error){throw new AppError(500,error instanceof Error?error.message:`Failed to send test email using ${integrationType}.`)}}async getAppLogs(id){const logFilePath=`${appPaths.getLogsDir()}/app.log`;try{const rawLogs=await readFile(logFilePath,"utf-8");if(!rawLogs)throw new NotFoundError("No logs found");return rawLogs.split(/\r?\n/).filter(line=>""!==line.trim()).map(line=>{try{const entry=JSON.parse(line);if(entry.time){const date=new Date(entry.time);entry.formattedTime=date.toLocaleString()}return entry}catch(e){return{raw:line}}})}catch(error){if("ENOENT"===error.code)throw new NotFoundError("No logs found for this plan");throw new AppError(500,"Failed to read logs: "+error.message)}}async getAppLogsFile(){const logFilePath=`${appPaths.getLogsDir()}/app.log`;try{await access(logFilePath,constants.F_OK);return createReadStream(logFilePath)}catch(error){if("ENOENT"===error.code)throw new NotFoundError("Log file not found");throw new AppError(500,`Failed to download logs: ${error.message}`)}}async setupTwoFactorAuth(){const appSettings=await this.getMainSettings();if(!appSettings||!appSettings.settings)throw new Error("Application settings not found.");const appName=appSettings.settings.title||"Pluton",totp=new otpauth.TOTP({issuer:appName,label:"admin",algorithm:"SHA1",digits:6,period:30}),secret=totp.secret.base32,uri=totp.toString();return{qrCodeDataUrl:await qrcode.toDataURL(uri),setupKey:secret,tempSecret:secret}}async finalizeTwoFactorSetup(tempSecret,userCode,settingsId){if(null===new otpauth.TOTP({secret:otpauth.Secret.fromBase32(tempSecret),algorithm:"SHA1",digits:6,period:30}).validate({token:userCode,window:1}))throw new AppError(400,"Invalid verification code. Please try again.");const appSettings=await this.settingsStore.getById(settingsId);if(!appSettings||!appSettings.settings)throw new AppError(500,"Could not retrieve settings to finalize setup.");const encryptedSecret=new Cryptr(configService.config.SECRET).encrypt(tempSecret),recoveryCodes=Array.from({length:10},()=>randomBytes(5).toString("hex").toUpperCase()),hashedRecoveryCodes=recoveryCodes.map(code=>createHash("sha256").update(code).digest("hex")),updatedSettings={...appSettings.settings,totp:{enabled:!0,secret:encryptedSecret,recoveryCodes:hashedRecoveryCodes}};return await this.settingsStore.update(settingsId,updatedSettings),{recoveryCodes:recoveryCodes}}}
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsService.js","sourceRoot":"","sources":["../../src/services/SettingsService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SettingsService.js","sourceRoot":"","sources":["../../src/services/SettingsService.ts"],"names":[],"mappings":"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"}