@plutonhq/core-backend 0.0.1 → 0.0.2
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.
- package/dist/controllers/SetupController.d.ts +17 -0
- package/dist/controllers/SetupController.d.ts.map +1 -0
- package/dist/controllers/SetupController.js +1 -0
- package/dist/controllers/SetupController.js.map +1 -0
- package/dist/createApp.d.ts.map +1 -1
- package/dist/createApp.js +1 -1
- package/dist/createApp.js.map +1 -1
- package/dist/db/index.js +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/jobs/index.js +2 -1
- package/dist/jobs/tasks/PruneDatabaseTask.js +2 -1
- package/dist/jobs/tasks/UpdateDevicesTask.js +2 -1
- package/dist/managers/BaseBackupManager.d.ts.map +1 -1
- package/dist/managers/BaseBackupManager.js +1 -1
- package/dist/managers/BaseBackupManager.js.map +1 -1
- package/dist/managers/BaseSnapshotManager.js +1 -1
- package/dist/managers/BaseSnapshotManager.js.map +1 -1
- package/dist/managers/SecurityKeyManager.d.ts.map +1 -1
- package/dist/managers/SecurityKeyManager.js +1 -1
- package/dist/managers/SecurityKeyManager.js.map +1 -1
- package/dist/managers/handlers/BackupHandler.d.ts.map +1 -1
- package/dist/managers/handlers/BackupHandler.js +1 -1
- package/dist/managers/handlers/BackupHandler.js.map +1 -1
- package/dist/managers/handlers/DownloadHandler.d.ts.map +1 -1
- package/dist/managers/handlers/DownloadHandler.js +1 -1
- package/dist/managers/handlers/DownloadHandler.js.map +1 -1
- package/dist/managers/handlers/PruneHandler.d.ts.map +1 -1
- package/dist/managers/handlers/PruneHandler.js +1 -1
- package/dist/managers/handlers/PruneHandler.js.map +1 -1
- package/dist/managers/handlers/RestoreHandler.d.ts.map +1 -1
- package/dist/managers/handlers/RestoreHandler.js +1 -1
- package/dist/managers/handlers/RestoreHandler.js.map +1 -1
- package/dist/middlewares/authMiddleware.js +1 -1
- package/dist/middlewares/errorHandlerMiddleware.js +1 -1
- package/dist/middlewares/versionMiddleware.d.ts.map +1 -1
- package/dist/middlewares/versionMiddleware.js +1 -1
- package/dist/middlewares/versionMiddleware.js.map +1 -1
- package/dist/routes/devices.js +1 -1
- package/dist/routes/index.d.ts +1 -0
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +1 -1
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/setup.d.ts +4 -0
- package/dist/routes/setup.d.ts.map +1 -0
- package/dist/routes/setup.js +1 -0
- package/dist/routes/setup.js.map +1 -0
- package/dist/services/ConfigService.d.ts +62 -8
- package/dist/services/ConfigService.d.ts.map +1 -1
- package/dist/services/ConfigService.js +1 -1
- package/dist/services/ConfigService.js.map +1 -1
- package/dist/services/KeyringService.d.ts +81 -0
- package/dist/services/KeyringService.d.ts.map +1 -0
- package/dist/services/KeyringService.js +1 -0
- package/dist/services/KeyringService.js.map +1 -0
- package/dist/utils/AppPaths.d.ts +10 -0
- package/dist/utils/AppPaths.d.ts.map +1 -1
- package/dist/utils/AppPaths.js +1 -1
- package/dist/utils/AppPaths.js.map +1 -1
- package/dist/utils/asyncHandler.js +1 -1
- package/dist/utils/binaryPathResolver.d.ts +7 -3
- package/dist/utils/binaryPathResolver.d.ts.map +1 -1
- package/dist/utils/binaryPathResolver.js +1 -1
- package/dist/utils/binaryPathResolver.js.map +1 -1
- package/dist/utils/copyFiles.js +1 -1
- package/dist/utils/executeUserScript.d.ts +1 -1
- package/dist/utils/executeUserScript.d.ts.map +1 -1
- package/dist/utils/initSetup.js +1 -1
- package/dist/utils/installHelpers.d.ts +36 -0
- package/dist/utils/installHelpers.d.ts.map +1 -0
- package/dist/utils/installHelpers.js +1 -0
- package/dist/utils/installHelpers.js.map +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/providers/_features.js +1 -1
- package/dist/utils/providers/_s3Options.js +1 -1
- package/dist/utils/providers/azureblob.js +1 -1
- package/dist/utils/providers/azurefiles.js +1 -1
- package/dist/utils/providers/b2.js +1 -1
- package/dist/utils/providers/boxCom.js +1 -1
- package/dist/utils/providers/dropbox.js +1 -1
- package/dist/utils/providers/fichier.js +1 -1
- package/dist/utils/providers/filesCom.js +1 -1
- package/dist/utils/providers/ftp.js +1 -1
- package/dist/utils/providers/gcs.js +1 -1
- package/dist/utils/providers/gdrive.js +1 -1
- package/dist/utils/providers/gofile.js +1 -1
- package/dist/utils/providers/gphotos.js +1 -1
- package/dist/utils/providers/hdfs.js +1 -1
- package/dist/utils/providers/hidrive.js +1 -1
- package/dist/utils/providers/http.js +1 -1
- package/dist/utils/providers/internetarchive.js +1 -1
- package/dist/utils/providers/jottacloud.js +1 -1
- package/dist/utils/providers/koofr.js +1 -1
- package/dist/utils/providers/linkbox.js +1 -1
- package/dist/utils/providers/local.js +1 -1
- package/dist/utils/providers/mailru.js +1 -1
- package/dist/utils/providers/mega.js +1 -1
- package/dist/utils/providers/netstorage.js +1 -1
- package/dist/utils/providers/onedrive.js +1 -1
- package/dist/utils/providers/opendrive.js +1 -1
- package/dist/utils/providers/oracle.js +1 -1
- package/dist/utils/providers/pcloud.js +1 -1
- package/dist/utils/providers/pikpak.js +1 -1
- package/dist/utils/providers/pixeldrain.js +1 -1
- package/dist/utils/providers/premiumizeme.js +1 -1
- package/dist/utils/providers/protondrive.js +1 -1
- package/dist/utils/providers/putio.js +1 -1
- package/dist/utils/providers/qingstor.js +1 -1
- package/dist/utils/providers/quatrix.js +1 -1
- package/dist/utils/providers/seafile.js +1 -1
- package/dist/utils/providers/sftp.js +1 -1
- package/dist/utils/providers/sharefile.js +1 -1
- package/dist/utils/providers/sia.js +1 -1
- package/dist/utils/providers/smb.js +1 -1
- package/dist/utils/providers/storj.js +1 -1
- package/dist/utils/providers/sugarsync.js +1 -1
- package/dist/utils/providers/swift.js +1 -1
- package/dist/utils/providers/ulozto.js +1 -1
- package/dist/utils/providers/webdav.js +1 -1
- package/dist/utils/providers/yandex.js +1 -1
- package/dist/utils/providers/zoho.js +1 -1
- package/dist/utils/rclone/rclone.d.ts.map +1 -1
- package/dist/utils/rclone/rclone.js +1 -1
- package/dist/utils/rclone/rclone.js.map +1 -1
- package/dist/utils/restic/restic.d.ts.map +1 -1
- package/dist/utils/restic/restic.js +1 -1
- package/dist/utils/restic/restic.js.map +1 -1
- package/package.json +19 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DownloadHandler.js","sourceRoot":"","sources":["../../../src/managers/handlers/DownloadHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAY,MAAM,aAAa,CAAC;AAClD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"DownloadHandler.js","sourceRoot":"","sources":["../../../src/managers/handlers/DownloadHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PruneHandler.d.ts","sourceRoot":"","sources":["../../../src/managers/handlers/PruneHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"PruneHandler.d.ts","sourceRoot":"","sources":["../../../src/managers/handlers/PruneHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAKtC,qBAAa,YAAY;IACZ,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY;IAEnC,KAAK,CACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,WAAW,GAAE,OAAe,GAC1B,OAAO,CAAC;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;IAgDF,OAAO,CAAC,oBAAoB;CAuC5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getBackupPlanStats,runResticCommand}from"../../utils/restic/restic";import{generateResticRepoPath}from"../../utils/restic/helpers";export class PruneHandler{emitter;constructor(emitter){this.emitter=emitter}async prune(planId,options,updateStats=!1){let pruneErrorMsg="";const prune=options.settings.prune,{resticArgs:resticArgs,policyArgs:policyArgs,resticEnv:resticEnv}=this.generatePruneCommand(planId,options);try{const countFilterArgs=[...resticArgs];let planStats;prune.snapCount?(countFilterArgs.push("--keep-last",prune.snapCount.toString()),await runResticCommand([...resticArgs,...policyArgs],resticEnv),await runResticCommand(countFilterArgs,resticEnv)):await runResticCommand([...resticArgs,...policyArgs],resticEnv),updateStats&&(planStats=await getBackupPlanStats(planId,options.storage.name,options.storagePath,options.settings.encryption)),this.emitter.emit("pruneEnd",{planId:planId,success:!0,stats:planStats})}catch(error){this.emitter.emit("pruneEnd",{planId:planId,success:!1,error:error?.message||"Unknown Error"}),pruneErrorMsg=error?.message||"Unknown Error"}return{success:!pruneErrorMsg,result:pruneErrorMsg||"Pruned Old Snapshots Successfully."}}generatePruneCommand(planId,options){const{storagePath:storagePath,storage:storage,settings:settings}=options,{prune:prune,encryption:encryption=!0}=settings,resticArgs=["forget","--prune","--tag",`plan-${planId}`],policyArgs=[],resticEnv={RESTIC_PASSWORD:encryption?
|
|
1
|
+
import{getBackupPlanStats,runResticCommand}from"../../utils/restic/restic";import{generateResticRepoPath}from"../../utils/restic/helpers";import{configService}from"../../services/ConfigService";export class PruneHandler{emitter;constructor(emitter){this.emitter=emitter}async prune(planId,options,updateStats=!1){let pruneErrorMsg="";const prune=options.settings.prune,{resticArgs:resticArgs,policyArgs:policyArgs,resticEnv:resticEnv}=this.generatePruneCommand(planId,options);try{const countFilterArgs=[...resticArgs];let planStats;prune.snapCount?(countFilterArgs.push("--keep-last",prune.snapCount.toString()),await runResticCommand([...resticArgs,...policyArgs],resticEnv),await runResticCommand(countFilterArgs,resticEnv)):await runResticCommand([...resticArgs,...policyArgs],resticEnv),updateStats&&(planStats=await getBackupPlanStats(planId,options.storage.name,options.storagePath,options.settings.encryption)),this.emitter.emit("pruneEnd",{planId:planId,success:!0,stats:planStats})}catch(error){this.emitter.emit("pruneEnd",{planId:planId,success:!1,error:error?.message||"Unknown Error"}),pruneErrorMsg=error?.message||"Unknown Error"}return{success:!pruneErrorMsg,result:pruneErrorMsg||"Pruned Old Snapshots Successfully."}}generatePruneCommand(planId,options){const{storagePath:storagePath,storage:storage,settings:settings}=options,{prune:prune,encryption:encryption=!0}=settings,resticArgs=["forget","--prune","--tag",`plan-${planId}`],policyArgs=[],resticEnv={RESTIC_PASSWORD:encryption?configService.config.ENCRYPTION_KEY:""};if(storage.name){const repoPath=generateResticRepoPath(storage.name,storagePath||"");resticArgs.push("-r",repoPath)}switch(prune.policy){case"custom":prune.keepDailySnaps&&policyArgs.push("--keep-daily",prune.keepDailySnaps.toString()),prune.keepWeeklySnaps&&policyArgs.push("--keep-weekly",prune.keepWeeklySnaps.toString()),prune.keepMonthlySnaps&&policyArgs.push("--keep-monthly",prune.keepMonthlySnaps.toString());break;case"forgetByAge":prune.forgetAge&&policyArgs.push("--keep-within",prune.forgetAge);break;case"forgetByDate":prune.forgetDate&&policyArgs.push("--keep-before",prune.forgetDate)}return!1===encryption&&resticArgs.push("--insecure-no-password"),resticArgs.push("--json"),{resticArgs:resticArgs,resticEnv:resticEnv,policyArgs:policyArgs}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PruneHandler.js","sourceRoot":"","sources":["../../../src/managers/handlers/PruneHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"PruneHandler.js","sourceRoot":"","sources":["../../../src/managers/handlers/PruneHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RestoreHandler.d.ts","sourceRoot":"","sources":["../../../src/managers/handlers/RestoreHandler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAKtC,OAAO,EAAE,kBAAkB,EAAkB,MAAM,oBAAoB,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"RestoreHandler.d.ts","sourceRoot":"","sources":["../../../src/managers/handlers/RestoreHandler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAKtC,OAAO,EAAE,kBAAkB,EAAkB,MAAM,oBAAoB,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,qBAAa,cAAc;IAMd,OAAO,CAAC,OAAO;IAL3B,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,mBAAmB,CAAsB;gBAE7B,OAAO,EAAE,YAAY;YAM3B,yBAAyB;IAQvC;;;;OAIG;IACG,OAAO,CACZ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAClD,OAAO,CAAC,MAAM,CAAC;IAkHlB;;OAEG;YACW,eAAe;IA8F7B;;OAEG;YACW,mBAAmB;IAoCjC;;OAEG;YACW,gBAAgB;IA8E9B;;OAEG;cACa,cAAc,CAC7B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO,EAClB,KAAK,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAUhB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqBxB,MAAM,CAAC,OAAO,EAAE,cAAc;IAmCpC,uBAAuB,CACtB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,EACvB,MAAM,GAAE,OAAe;;;;;;IA0ElB,UAAU,CACf,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG;YAAE,KAAK,EAAE,GAAG,CAAC;YAAC,KAAK,EAAE,kBAAkB,EAAE,CAAA;SAAE,CAAA;KAAE,CAAC;IAqCxF,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAmB9C,OAAO,CAAC,cAAc;IAyBtB;;OAEG;YACW,gBAAgB;cAsBd,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc;cACxE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc;cACvE,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc;cAC9E,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc;cAC5E,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc;CAC9F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import path from"path";import os from"os";import{existsSync,constants}from"fs";import{rm,access}from"fs/promises";import{getSnapshotByTag,runResticCommand}from"../../utils/restic/restic";import{generateResticRepoPath,resticPathToWindows}from"../../utils/restic/helpers";import{processManager}from"../ProcessManager";import copyFilesNatively from"../../utils/copyFiles";import{ProgressManager}from"../ProgressManager";import{appPaths}from"../../utils/AppPaths";import{RestoreStatsManager}from"../RestoreStatsManager";export class RestoreHandler{emitter;runningRestores=new Set;cancelledRestores=new Set;progressManager;restoreStatsManager;constructor(emitter){this.emitter=emitter,this.progressManager=new ProgressManager(appPaths.getProgressDir(),"restore"),this.restoreStatsManager=new RestoreStatsManager,this.initializeProgressManager()}async initializeProgressManager(){try{await this.progressManager.initialize()}catch(error){}}async execute(backupId,restoreId,options,retryInfo){const{planId:planId}=options;if(this.runningRestores.has(planId))throw new Error(`Restore is already in progress for plan: ${planId}`);this.runningRestores.add(planId);try{await this.progressManager.initializeProgress(planId,restoreId,retryInfo)}catch(error){}try{await this.restoreStatsManager.initialize(planId,backupId,restoreId,options.sources||[],options)}catch(error){}retryInfo.attempts>0&&await this.updateProgress(planId,restoreId,"pre-restore",`RETRY_ATTEMPT_${retryInfo.attempts}_OF_${retryInfo.maxAttempts}_START`,!1);try{const snapshot=await this.preRestorePhase(planId,backupId,restoreId,options);if(this.cancelledRestores.has(planId))throw new Error("RESTORE_CANCELLED: Restore was cancelled");const result=await this.executeRestorePhase(planId,backupId,restoreId,snapshot,options);if(this.cancelledRestores.has(planId))throw new Error("RESTORE_CANCELLED: Restore was cancelled");return await this.postRestorePhase(planId,backupId,restoreId,snapshot,options),await this.progressManager.markCompleted(planId,restoreId,!0),await this.afterRestore(planId,restoreId,options),result}catch(error){const errorMessage=error instanceof Error?error.message:"Unknown execution error";if(errorMessage.startsWith("RESTORE_CANCELLED:"))return"";const permanentlyFailed=retryInfo.attempts+1>retryInfo.maxAttempts;throw await this.progressManager.markCompleted(planId,restoreId,!1,errorMessage,permanentlyFailed),permanentlyFailed||await this.updateProgress(planId,restoreId,"retry",`RESTORE_RETRY_${retryInfo.attempts+1}_OF_${retryInfo.maxAttempts}_SCHEDULED`,!1),this.emitter.emit("restore_error",{planId:planId,backupId:backupId,restoreId:restoreId,error:errorMessage}),permanentlyFailed?await this.afterRestoreFailure(planId,restoreId,options):await this.afterRestoreError(planId,restoreId,options),await this.afterRestore(planId,restoreId,options),new Error(errorMessage)}finally{this.runningRestores.delete(planId),this.cancelledRestores.delete(planId)}}async preRestorePhase(planId,backupId,restoreId,options){await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_START",!1),await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_GET_SNAPSHOT",!1);const snapshotTagRes=await getSnapshotByTag("backup-"+backupId,options);if(!snapshotTagRes.success||"object"!=typeof snapshotTagRes.result)throw new Error(snapshotTagRes.result||"Could not retrieve snapshot details.");const snapshot=snapshotTagRes.result;await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_GET_SNAPSHOT_COMPLETE",!0),await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_DRY_RUN_START",!1);const restoreStats=await this.dryRestore(backupId,snapshot.id,options);if(!restoreStats.success)throw new Error(restoreStats.result||"Restore dry run failed.");return"object"==typeof restoreStats.result&&restoreStats.result?.files&&await this.restoreStatsManager.update(restoreId,restoreStats.result?.files||[],restoreStats.result.stats),await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_DRY_RUN_COMPLETE",!0),this.emitter.emit("restore_start",{restoreId:restoreId,backupId:backupId,planId:planId,stats:"object"==typeof restoreStats.result?restoreStats.result.stats:void 0,config:{target:options.target,overwrite:options.overwrite,includes:options.includes,excludes:options.excludes}}),await this.waitForRestoreCreation(backupId),await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_CHECKS_START",!1),await this.canRun(options),await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_CHECKS_COMPLETE",!0),await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_UNLOCK_STALE_LOCKS",!1),await this.unlockStaleLocks(planId,{storageName:options.storageName,storagePath:options.storagePath,encryption:options.encryption}),await this.beforeRestore(planId,restoreId,options),await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_COMPLETE",!0),snapshot}async executeRestorePhase(planId,backupId,restoreId,snapshot,options){await this.updateProgress(planId,restoreId,"restore","RESTORE_OPERATION_START",!1);const handlers=this.createHandlers(planId,backupId,restoreId),resticOpts=this.createResticRestoreArgs(backupId,snapshot.id,options);try{const result=await runResticCommand(resticOpts.args,resticOpts.env,handlers.onProgress,handlers.onError,handlers.onComplete,process=>processManager.trackProcess(`restore-${restoreId}`,process));return await this.updateProgress(planId,restoreId,"restore","RESTORE_OPERATION_COMPLETE",!0),result}catch(error){const errMsg=error.message||"Restic restore command failed";throw await this.updateProgress(planId,restoreId,"restore","RESTORE_OPERATION_ERROR",!0,errMsg),error}}async postRestorePhase(planId,backupId,restoreId,snapshot,options){await this.updateProgress(planId,restoreId,"post-restore","POST_RESTORE_START",!1);const{target:target,overwrite:overwrite="always"}=options;if("win32"===process.platform&&(!target||"/"===target)){await this.updateProgress(planId,restoreId,"post-restore","POST_RESTORE_WINDOWS_MOVE_START",!1);const restoresDir=appPaths.getRestoresDir(),winRestorePath=path.join(restoresDir,`backup-${backupId}`),errorMessages=[];for(const sourcePath of snapshot.paths)try{const sourceRoot=path.parse(sourcePath).root,driveLetter=sourceRoot.replace(":\\",""),relativePath=sourcePath.substring(sourceRoot.length),sourceItemInTempDir=path.join(winRestorePath,driveLetter,relativePath),destinationPath=sourcePath;await access(sourceItemInTempDir,constants.F_OK),await copyFilesNatively(sourceItemInTempDir,destinationPath,overwrite)}catch(error){errorMessages.push(`Failed to move files to ${sourcePath}: ${error.message}`)}if(errorMessages.length>0){const finalError=errorMessages.join("\n")+`. Failed to Move files. Manually move the restored files from ${winRestorePath} to desired location.`;await this.updateProgress(planId,restoreId,"post-restore","POST_RESTORE_WINDOWS_MOVE_ERROR",!1,finalError)}else{if(existsSync(winRestorePath))try{await rm(winRestorePath,{recursive:!0,force:!0})}catch(error){}await this.updateProgress(planId,restoreId,"post-restore","POST_RESTORE_WINDOWS_MOVE_COMPLETE",!0)}}await this.afterRestoreSuccess(planId,restoreId,options),await this.updateProgress(planId,restoreId,"post-restore","POST_RESTORE_COMPLETE",!0)}async updateProgress(planId,restoreId,phase,action,completed,error){try{await this.progressManager.updateAction(planId,restoreId,phase,action,completed,error)}catch(progressError){}}waitForRestoreCreation(backupId){return new Promise((resolve,reject)=>{const timeout=setTimeout(()=>{this.emitter.removeListener("restoreCreated",onRestoreCreated),reject(new Error(`Timeout: Did not receive restore_created confirmation for backup: ${backupId}`))},3e4),onRestoreCreated=data=>{data.backupId===backupId&&(clearTimeout(timeout),this.emitter.removeListener("restoreCreated",onRestoreCreated),resolve())};this.emitter.on("restoreCreated",onRestoreCreated)})}async canRun(options){if(os.freemem()<67108864*(process.env.GOMAXPROCS?parseInt(process.env.GOMAXPROCS,10):os.cpus().length))throw new Error("Insufficient memory to perform restore.");if(options.encryption&&!process.env.ENCRYPTION_KEY)throw new Error("Snapshot encrypted but ENCRYPTION_KEY not found.");if(options.target&&"/"!==options.target)try{await access(path.dirname(options.target),constants.W_OK)}catch(error){throw new Error(`Target path not writable: ${options.target}`)}try{await runResticCommand(["version"])}catch(error){throw new Error("Restic is not installed.")}return!0}createResticRestoreArgs(backupId,snapshotId,options,dryRun=!1){const{storageName:storageName,storagePath:storagePath,encryption:encryption,target:target,overwrite:overwrite="always",delete:deleteOption,includes:includes,excludes:excludes,performanceSettings:performance}=options,repoPassword=encryption?process.env.ENCRYPTION_KEY:"",repoPath=generateResticRepoPath(storageName,storagePath||""),overWriteCommand="always"==overwrite?[]:["--overwrite",overwrite];let theTargetPath=target||"/";const restoresDir=appPaths.getRestoresDir(),winRestorePath=path.join(restoresDir,"backup-"+backupId);"/"===theTargetPath&&"win32"===process.platform&&(theTargetPath=winRestorePath);const resticEnv={},resticArgs=["restore","-r",repoPath,snapshotId,"--target",theTargetPath,...overWriteCommand,"--verbose=2","--json"];return includes&&includes.length>0&&includes.forEach(item=>{resticArgs.push("--include",item)}),excludes&&excludes.length>0&&excludes.forEach(item=>{resticArgs.push("--exclude",item)}),deleteOption&&resticArgs.push("--delete"),performance&&(performance.maxProcessor&&(resticEnv.GOMAXPROCS=performance.maxProcessor.toString()),performance.transfers&&(resticEnv.RCLONE_TRANSFERS=performance.transfers.toString()),performance.bufferSize&&(resticEnv.RCLONE_BUFFER_SIZE=performance.bufferSize),performance.multiThreadStream&&(resticEnv.RCLONE_MULTI_THREAD_STREAMS=performance.multiThreadStream.toString())),encryption||resticArgs.push("--insecure-no-password"),dryRun&&resticArgs.push("--dry-run"),{args:resticArgs,env:{RESTIC_PASSWORD:repoPassword,...resticEnv}}}async dryRestore(backupId,snapshotId,options){try{const resticOpts=this.createResticRestoreArgs(backupId,snapshotId,options,!0),dryRes=await runResticCommand(resticOpts.args,resticOpts.env),parsedLines=dryRes.split("\n").filter(line=>line.trim()).map(line=>JSON.parse(line)),stats=parsedLines.find(item=>"summary"===item.message_type),files=parsedLines.filter(item=>"verbose_status"===item.message_type).map(item=>({path:"win32"===process.platform?resticPathToWindows(item.item):item.item,size:parseInt(item.size,10),action:item.action}));return{success:!0,result:{stats:{total_files:stats.total_files,files_restored:stats.files_restored,total_bytes:stats.total_bytes,bytes_restored:stats.bytes_restored},files:files}}}catch(error){return{success:!1,result:error?.message||"Failed to get dry run results"}}}async cancel(planId,restoreId){this.cancelledRestores.add(planId),await this.progressManager.markCompleted(planId,restoreId,!1,"Restoration was cancelled by user",!0);try{processManager.killProcess("restore-"+restoreId);return!0}catch(error){throw new Error("Error Cancelling restore. "+error?.message||"")}}createHandlers(planId,backupId,restoreId){return{onProgress:data=>{const progressLine=data.toString().trim();this.progressManager.updateResticProgress(planId,restoreId,progressLine)},onError:data=>{this.emitter.emit("restore_error",{backupId:backupId,restoreId:restoreId,planId:planId,error:data.toString()})},onComplete:code=>{this.emitter.emit("restore_complete",{backupId:backupId,restoreId:restoreId,planId:planId,success:0===code})}}}async unlockStaleLocks(planId,options){if(options.storageName&&options.storagePath)try{const repoPath=generateResticRepoPath(options.storageName,options.storagePath||""),repoPassword=options.encryption?process.env.ENCRYPTION_KEY:"";await runResticCommand(["unlock","-r",repoPath],{RESTIC_PASSWORD:repoPassword})}catch(error){}}async beforeRestore(planId,restoreId,options){}async afterRestore(planId,restoreId,options){}async afterRestoreSuccess(planId,restoreId,options){}async afterRestoreError(planId,restoreId,options){}async afterRestoreFailure(planId,restoreId,options){}}
|
|
1
|
+
import path from"path";import os from"os";import{existsSync,constants}from"fs";import{rm,access}from"fs/promises";import{getSnapshotByTag,runResticCommand}from"../../utils/restic/restic";import{generateResticRepoPath,resticPathToWindows}from"../../utils/restic/helpers";import{processManager}from"../ProcessManager";import copyFilesNatively from"../../utils/copyFiles";import{ProgressManager}from"../ProgressManager";import{appPaths}from"../../utils/AppPaths";import{RestoreStatsManager}from"../RestoreStatsManager";import{configService}from"../../services/ConfigService";export class RestoreHandler{emitter;runningRestores=new Set;cancelledRestores=new Set;progressManager;restoreStatsManager;constructor(emitter){this.emitter=emitter,this.progressManager=new ProgressManager(appPaths.getProgressDir(),"restore"),this.restoreStatsManager=new RestoreStatsManager,this.initializeProgressManager()}async initializeProgressManager(){try{await this.progressManager.initialize()}catch(error){}}async execute(backupId,restoreId,options,retryInfo){const{planId:planId}=options;if(this.runningRestores.has(planId))throw new Error(`Restore is already in progress for plan: ${planId}`);this.runningRestores.add(planId);try{await this.progressManager.initializeProgress(planId,restoreId,retryInfo)}catch(error){}try{await this.restoreStatsManager.initialize(planId,backupId,restoreId,options.sources||[],options)}catch(error){}retryInfo.attempts>0&&await this.updateProgress(planId,restoreId,"pre-restore",`RETRY_ATTEMPT_${retryInfo.attempts}_OF_${retryInfo.maxAttempts}_START`,!1);try{const snapshot=await this.preRestorePhase(planId,backupId,restoreId,options);if(this.cancelledRestores.has(planId))throw new Error("RESTORE_CANCELLED: Restore was cancelled");const result=await this.executeRestorePhase(planId,backupId,restoreId,snapshot,options);if(this.cancelledRestores.has(planId))throw new Error("RESTORE_CANCELLED: Restore was cancelled");return await this.postRestorePhase(planId,backupId,restoreId,snapshot,options),await this.progressManager.markCompleted(planId,restoreId,!0),await this.afterRestore(planId,restoreId,options),result}catch(error){const errorMessage=error instanceof Error?error.message:"Unknown execution error";if(errorMessage.startsWith("RESTORE_CANCELLED:"))return"";const permanentlyFailed=retryInfo.attempts+1>retryInfo.maxAttempts;throw await this.progressManager.markCompleted(planId,restoreId,!1,errorMessage,permanentlyFailed),permanentlyFailed||await this.updateProgress(planId,restoreId,"retry",`RESTORE_RETRY_${retryInfo.attempts+1}_OF_${retryInfo.maxAttempts}_SCHEDULED`,!1),this.emitter.emit("restore_error",{planId:planId,backupId:backupId,restoreId:restoreId,error:errorMessage}),permanentlyFailed?await this.afterRestoreFailure(planId,restoreId,options):await this.afterRestoreError(planId,restoreId,options),await this.afterRestore(planId,restoreId,options),new Error(errorMessage)}finally{this.runningRestores.delete(planId),this.cancelledRestores.delete(planId)}}async preRestorePhase(planId,backupId,restoreId,options){await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_START",!1),await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_GET_SNAPSHOT",!1);const snapshotTagRes=await getSnapshotByTag("backup-"+backupId,options);if(!snapshotTagRes.success||"object"!=typeof snapshotTagRes.result)throw new Error(snapshotTagRes.result||"Could not retrieve snapshot details.");const snapshot=snapshotTagRes.result;await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_GET_SNAPSHOT_COMPLETE",!0),await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_DRY_RUN_START",!1);const restoreStats=await this.dryRestore(backupId,snapshot.id,options);if(!restoreStats.success)throw new Error(restoreStats.result||"Restore dry run failed.");return"object"==typeof restoreStats.result&&restoreStats.result?.files&&await this.restoreStatsManager.update(restoreId,restoreStats.result?.files||[],restoreStats.result.stats),await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_DRY_RUN_COMPLETE",!0),this.emitter.emit("restore_start",{restoreId:restoreId,backupId:backupId,planId:planId,stats:"object"==typeof restoreStats.result?restoreStats.result.stats:void 0,config:{target:options.target,overwrite:options.overwrite,includes:options.includes,excludes:options.excludes}}),await this.waitForRestoreCreation(backupId),await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_CHECKS_START",!1),await this.canRun(options),await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_CHECKS_COMPLETE",!0),await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_UNLOCK_STALE_LOCKS",!1),await this.unlockStaleLocks(planId,{storageName:options.storageName,storagePath:options.storagePath,encryption:options.encryption}),await this.beforeRestore(planId,restoreId,options),await this.updateProgress(planId,restoreId,"pre-restore","PRE_RESTORE_COMPLETE",!0),snapshot}async executeRestorePhase(planId,backupId,restoreId,snapshot,options){await this.updateProgress(planId,restoreId,"restore","RESTORE_OPERATION_START",!1);const handlers=this.createHandlers(planId,backupId,restoreId),resticOpts=this.createResticRestoreArgs(backupId,snapshot.id,options);try{const result=await runResticCommand(resticOpts.args,resticOpts.env,handlers.onProgress,handlers.onError,handlers.onComplete,process=>processManager.trackProcess(`restore-${restoreId}`,process));return await this.updateProgress(planId,restoreId,"restore","RESTORE_OPERATION_COMPLETE",!0),result}catch(error){const errMsg=error.message||"Restic restore command failed";throw await this.updateProgress(planId,restoreId,"restore","RESTORE_OPERATION_ERROR",!0,errMsg),error}}async postRestorePhase(planId,backupId,restoreId,snapshot,options){await this.updateProgress(planId,restoreId,"post-restore","POST_RESTORE_START",!1);const{target:target,overwrite:overwrite="always"}=options;if("win32"===process.platform&&(!target||"/"===target)){await this.updateProgress(planId,restoreId,"post-restore","POST_RESTORE_WINDOWS_MOVE_START",!1);const restoresDir=appPaths.getRestoresDir(),winRestorePath=path.join(restoresDir,`backup-${backupId}`),errorMessages=[];for(const sourcePath of snapshot.paths)try{const sourceRoot=path.parse(sourcePath).root,driveLetter=sourceRoot.replace(":\\",""),relativePath=sourcePath.substring(sourceRoot.length),sourceItemInTempDir=path.join(winRestorePath,driveLetter,relativePath),destinationPath=sourcePath;await access(sourceItemInTempDir,constants.F_OK),await copyFilesNatively(sourceItemInTempDir,destinationPath,overwrite)}catch(error){errorMessages.push(`Failed to move files to ${sourcePath}: ${error.message}`)}if(errorMessages.length>0){const finalError=errorMessages.join("\n")+`. Failed to Move files. Manually move the restored files from ${winRestorePath} to desired location.`;await this.updateProgress(planId,restoreId,"post-restore","POST_RESTORE_WINDOWS_MOVE_ERROR",!1,finalError)}else{if(existsSync(winRestorePath))try{await rm(winRestorePath,{recursive:!0,force:!0})}catch(error){}await this.updateProgress(planId,restoreId,"post-restore","POST_RESTORE_WINDOWS_MOVE_COMPLETE",!0)}}await this.afterRestoreSuccess(planId,restoreId,options),await this.updateProgress(planId,restoreId,"post-restore","POST_RESTORE_COMPLETE",!0)}async updateProgress(planId,restoreId,phase,action,completed,error){try{await this.progressManager.updateAction(planId,restoreId,phase,action,completed,error)}catch(progressError){}}waitForRestoreCreation(backupId){return new Promise((resolve,reject)=>{const timeout=setTimeout(()=>{this.emitter.removeListener("restoreCreated",onRestoreCreated),reject(new Error(`Timeout: Did not receive restore_created confirmation for backup: ${backupId}`))},3e4),onRestoreCreated=data=>{data.backupId===backupId&&(clearTimeout(timeout),this.emitter.removeListener("restoreCreated",onRestoreCreated),resolve())};this.emitter.on("restoreCreated",onRestoreCreated)})}async canRun(options){if(os.freemem()<67108864*(process.env.GOMAXPROCS?parseInt(process.env.GOMAXPROCS,10):os.cpus().length))throw new Error("Insufficient memory to perform restore.");if(options.encryption&&!configService.config.ENCRYPTION_KEY)throw new Error("Snapshot encrypted but ENCRYPTION_KEY not found.");if(options.target&&"/"!==options.target)try{await access(path.dirname(options.target),constants.W_OK)}catch(error){throw new Error(`Target path not writable: ${options.target}`)}try{await runResticCommand(["version"])}catch(error){throw new Error("Restic is not installed.")}return!0}createResticRestoreArgs(backupId,snapshotId,options,dryRun=!1){const{storageName:storageName,storagePath:storagePath,encryption:encryption,target:target,overwrite:overwrite="always",delete:deleteOption,includes:includes,excludes:excludes,performanceSettings:performance}=options,repoPassword=encryption?configService.config.ENCRYPTION_KEY:"",repoPath=generateResticRepoPath(storageName,storagePath||""),overWriteCommand="always"==overwrite?[]:["--overwrite",overwrite];let theTargetPath=target||"/";const restoresDir=appPaths.getRestoresDir(),winRestorePath=path.join(restoresDir,"backup-"+backupId);"/"===theTargetPath&&"win32"===process.platform&&(theTargetPath=winRestorePath);const resticEnv={},resticArgs=["restore","-r",repoPath,snapshotId,"--target",theTargetPath,...overWriteCommand,"--verbose=2","--json"];return includes&&includes.length>0&&includes.forEach(item=>{resticArgs.push("--include",item)}),excludes&&excludes.length>0&&excludes.forEach(item=>{resticArgs.push("--exclude",item)}),deleteOption&&resticArgs.push("--delete"),performance&&(performance.maxProcessor&&(resticEnv.GOMAXPROCS=performance.maxProcessor.toString()),performance.transfers&&(resticEnv.RCLONE_TRANSFERS=performance.transfers.toString()),performance.bufferSize&&(resticEnv.RCLONE_BUFFER_SIZE=performance.bufferSize),performance.multiThreadStream&&(resticEnv.RCLONE_MULTI_THREAD_STREAMS=performance.multiThreadStream.toString())),encryption||resticArgs.push("--insecure-no-password"),dryRun&&resticArgs.push("--dry-run"),{args:resticArgs,env:{RESTIC_PASSWORD:repoPassword,...resticEnv}}}async dryRestore(backupId,snapshotId,options){try{const resticOpts=this.createResticRestoreArgs(backupId,snapshotId,options,!0),dryRes=await runResticCommand(resticOpts.args,resticOpts.env),parsedLines=dryRes.split("\n").filter(line=>line.trim()).map(line=>JSON.parse(line)),stats=parsedLines.find(item=>"summary"===item.message_type),files=parsedLines.filter(item=>"verbose_status"===item.message_type).map(item=>({path:"win32"===process.platform?resticPathToWindows(item.item):item.item,size:parseInt(item.size,10),action:item.action}));return{success:!0,result:{stats:{total_files:stats.total_files,files_restored:stats.files_restored,total_bytes:stats.total_bytes,bytes_restored:stats.bytes_restored},files:files}}}catch(error){return{success:!1,result:error?.message||"Failed to get dry run results"}}}async cancel(planId,restoreId){this.cancelledRestores.add(planId),await this.progressManager.markCompleted(planId,restoreId,!1,"Restoration was cancelled by user",!0);try{processManager.killProcess("restore-"+restoreId);return!0}catch(error){throw new Error("Error Cancelling restore. "+error?.message||"")}}createHandlers(planId,backupId,restoreId){return{onProgress:data=>{const progressLine=data.toString().trim();this.progressManager.updateResticProgress(planId,restoreId,progressLine)},onError:data=>{this.emitter.emit("restore_error",{backupId:backupId,restoreId:restoreId,planId:planId,error:data.toString()})},onComplete:code=>{this.emitter.emit("restore_complete",{backupId:backupId,restoreId:restoreId,planId:planId,success:0===code})}}}async unlockStaleLocks(planId,options){if(options.storageName&&options.storagePath)try{const repoPath=generateResticRepoPath(options.storageName,options.storagePath||""),repoPassword=options.encryption?configService.config.ENCRYPTION_KEY:"";await runResticCommand(["unlock","-r",repoPath],{RESTIC_PASSWORD:repoPassword})}catch(error){}}async beforeRestore(planId,restoreId,options){}async afterRestore(planId,restoreId,options){}async afterRestoreSuccess(planId,restoreId,options){}async afterRestoreError(planId,restoreId,options){}async afterRestoreFailure(planId,restoreId,options){}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RestoreHandler.js","sourceRoot":"","sources":["../../../src/managers/handlers/RestoreHandler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RestoreHandler.js","sourceRoot":"","sources":["../../../src/managers/handlers/RestoreHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import jwt from"jsonwebtoken";import Cookies from"cookies";import{configService}from"../services/ConfigService";
|
|
1
|
+
import jwt from"jsonwebtoken";import Cookies from"cookies";import{configService}from"../services/ConfigService";export default(req,res,next)=>{const cookies=new Cookies(req,res),token=cookies&&cookies.get("token"),verifiedAPI=!!req.headers.authorization&&req.headers.authorization.substring(7)===configService.config.APIKEY,accessingAllowedRoute=req.url&&req.method&&["GET:/api/plans","GET:/api/storages","GET:/api/devices","GET:/api/health","POST:/api/plans"].includes(`${req.method}:${req.url.replace(/\?(.*)/,"")}`);let authorized="";token&&configService.config.SECRET?jwt.verify(token,configService.config.SECRET,err=>{authorized=err?"Not authorized":"authorized"}):verifiedAPI&&accessingAllowedRoute?authorized="authorized":(token||(authorized="Not authorized"),token&&!configService.config.SECRET&&(authorized="Token has not been Setup."),verifiedAPI&&!accessingAllowedRoute&&(authorized="This Route cannot be accessed with API."),req.headers.authorization&&!verifiedAPI&&(authorized="Invalid API Key Provided.")),"authorized"===authorized?next():res.status(401).json({error:authorized})};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{AppError}from"../utils/AppError";import{logger}from"../utils/logger";export const errorHandlerMiddleware=(err,req,res,next)=>{if(err instanceof AppError)return logger.warn({module:"ErrorHandler",statusCode:err.statusCode,message:err.message,path:req.path}),void res.status(err.statusCode).json({success:!1,error:err.message});logger.error({module:"ErrorHandler",error:err.stack,path:req.path},"An unexpected error occurred"),res.status(500).json({success:!1,error:"Internal Server Error"})};
|
|
1
|
+
import{AppError}from"../utils/AppError";import{logger}from"../utils/logger";export const errorHandlerMiddleware=(err,req,res,next)=>{if(err instanceof AppError)return logger.warn({module:"ErrorHandler",statusCode:err.statusCode,message:err.message,path:req.path}),void res.status(err.statusCode).json({success:!1,error:err.message});logger.error({module:"ErrorHandler",error:err.stack,path:req.path},"An unexpected error occurred"),res.status(500).json({success:!1,error:"Internal Server Error"})};export default fn=>(req,res,next)=>Promise.resolve(fn(req,res,next)).catch(next);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versionMiddleware.d.ts","sourceRoot":"","sources":["../../src/middlewares/versionMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"versionMiddleware.d.ts","sourceRoot":"","sources":["../../src/middlewares/versionMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAM1D;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,QAMxF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
let appVersion=process.env.APP_VERSION||"dev";export default function versionMiddleware(req,res,next){res.setHeader("X-App-Version",appVersion),res.setHeader("X-
|
|
1
|
+
import{getInstallType}from"../utils/installHelpers";let appVersion=process.env.APP_VERSION||"dev";export default function versionMiddleware(req,res,next){res.setHeader("X-App-Version",appVersion),res.setHeader("X-Server-OS",process.platform),res.setHeader("X-Install-Type",getInstallType()),next()}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versionMiddleware.js","sourceRoot":"","sources":["../../src/middlewares/versionMiddleware.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"versionMiddleware.js","sourceRoot":"","sources":["../../src/middlewares/versionMiddleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,oCAAoC;AACpC,IAAI,UAAU,GAAW,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,KAAK,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;IACxF,kCAAkC;IAClC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC3C,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,GAAG,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,EAAE,CAAC,CAAC;IAClD,IAAI,EAAE,CAAC;AACR,CAAC"}
|
package/dist/routes/devices.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Router}from"express";import authM from"../middlewares/authMiddleware";
|
|
1
|
+
import{Router}from"express";import authM from"../middlewares/authMiddleware";Router();export function createDeviceRouter(controller,router=Router()){return router.get("/",authM,controller.getDevices.bind(controller)),router.get("/:id",authM,controller.getDevice.bind(controller)),router.put("/:id",authM,controller.updateDevice.bind(controller)),router.get("/:id/metrics",authM,controller.getMetrics.bind(controller)),router.get("/:id/browse",authM,controller.getBrowsePath.bind(controller)),router.post("/:id/action/update/restic",authM,controller.updateRestic.bind(controller)),router.post("/:id/action/update/rclone",authM,controller.updateRclone.bind(controller)),router}
|
package/dist/routes/index.d.ts
CHANGED
|
@@ -6,4 +6,5 @@ export { createUserRouter } from './users';
|
|
|
6
6
|
export { createBackupRouter } from './backups';
|
|
7
7
|
export { createSettingsRouter } from './settings';
|
|
8
8
|
export { createHealthRouter } from './health';
|
|
9
|
+
export { createSetupRouter } from './setup';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/routes/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{createPlanRouter}from"./plans";export{createDeviceRouter}from"./devices";export{createStorageRouter}from"./storages";export{createRestoreRouter}from"./restores";export{createUserRouter}from"./users";export{createBackupRouter}from"./backups";export{createSettingsRouter}from"./settings";export{createHealthRouter}from"./health";
|
|
1
|
+
export{createPlanRouter}from"./plans";export{createDeviceRouter}from"./devices";export{createStorageRouter}from"./storages";export{createRestoreRouter}from"./restores";export{createUserRouter}from"./users";export{createBackupRouter}from"./backups";export{createSettingsRouter}from"./settings";export{createHealthRouter}from"./health";export{createSetupRouter}from"./setup";
|
package/dist/routes/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/routes/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,CAQrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Router}from"express";export function createSetupRouter(controller){const router=Router();return router.get("/status",(req,res)=>controller.getStatus(req,res)),router.post("/complete",(req,res)=>controller.completeSetup(req,res)),router.get("/keyring-check",(req,res)=>controller.checkKeyringAvailability(req,res)),router}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/routes/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,MAAM,UAAU,iBAAiB,CAAC,UAA2B;IAC5D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACpE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3E,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,wBAAwB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAE1F,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
declare const
|
|
2
|
+
declare const finalConfigSchema: z.ZodObject<{
|
|
3
3
|
NODE_ENV: z.ZodDefault<z.ZodEnum<{
|
|
4
4
|
production: "production";
|
|
5
5
|
development: "development";
|
|
@@ -8,24 +8,64 @@ declare const configSchema: z.ZodObject<{
|
|
|
8
8
|
SERVER_PORT: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
9
9
|
MQTT_PORT: z.ZodOptional<z.ZodDefault<z.ZodCoercedNumber<unknown>>>;
|
|
10
10
|
APP_URL: z.ZodDefault<z.ZodString>;
|
|
11
|
-
APP_TITLE: z.ZodString
|
|
11
|
+
APP_TITLE: z.ZodDefault<z.ZodString>;
|
|
12
12
|
MAX_CONCURRENT_BACKUPS: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
13
13
|
LICENSE_KEY: z.ZodOptional<z.ZodString>;
|
|
14
14
|
ALLOW_CUSTOM_RESTORE_PATH: z.ZodOptional<z.ZodDefault<z.ZodCoercedBoolean<unknown>>>;
|
|
15
15
|
ALLOW_FILE_BROWSER: z.ZodOptional<z.ZodDefault<z.ZodCoercedBoolean<unknown>>>;
|
|
16
|
-
SECRET: z.ZodString;
|
|
17
|
-
ENCRYPTION_KEY: z.ZodString;
|
|
18
|
-
APIKEY: z.ZodString;
|
|
19
16
|
DISABLE_EVENT_SCRIPTS: z.ZodOptional<z.ZodDefault<z.ZodCoercedBoolean<unknown>>>;
|
|
17
|
+
SESSION_DURATION: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
18
|
+
IS_DOCKER: z.ZodOptional<z.ZodDefault<z.ZodCoercedBoolean<unknown>>>;
|
|
19
|
+
IS_BINARY: z.ZodOptional<z.ZodDefault<z.ZodCoercedBoolean<unknown>>>;
|
|
20
|
+
SETUP_PENDING: z.ZodOptional<z.ZodDefault<z.ZodCoercedBoolean<unknown>>>;
|
|
21
|
+
ENCRYPTION_KEY: z.ZodString;
|
|
20
22
|
USER_NAME: z.ZodString;
|
|
21
23
|
USER_PASSWORD: z.ZodString;
|
|
24
|
+
SECRET: z.ZodString;
|
|
25
|
+
APIKEY: z.ZodString;
|
|
26
|
+
}, z.core.$strip>;
|
|
27
|
+
declare const setupModeConfigSchema: z.ZodObject<{
|
|
28
|
+
NODE_ENV: z.ZodDefault<z.ZodEnum<{
|
|
29
|
+
production: "production";
|
|
30
|
+
development: "development";
|
|
31
|
+
test: "test";
|
|
32
|
+
}>>;
|
|
33
|
+
SERVER_PORT: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
34
|
+
MQTT_PORT: z.ZodOptional<z.ZodDefault<z.ZodCoercedNumber<unknown>>>;
|
|
35
|
+
APP_URL: z.ZodDefault<z.ZodString>;
|
|
36
|
+
APP_TITLE: z.ZodDefault<z.ZodString>;
|
|
37
|
+
MAX_CONCURRENT_BACKUPS: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
38
|
+
LICENSE_KEY: z.ZodOptional<z.ZodString>;
|
|
39
|
+
ALLOW_CUSTOM_RESTORE_PATH: z.ZodOptional<z.ZodDefault<z.ZodCoercedBoolean<unknown>>>;
|
|
40
|
+
ALLOW_FILE_BROWSER: z.ZodOptional<z.ZodDefault<z.ZodCoercedBoolean<unknown>>>;
|
|
41
|
+
ENCRYPTION_KEY: z.ZodOptional<z.ZodString>;
|
|
42
|
+
DISABLE_EVENT_SCRIPTS: z.ZodOptional<z.ZodDefault<z.ZodCoercedBoolean<unknown>>>;
|
|
43
|
+
USER_NAME: z.ZodOptional<z.ZodString>;
|
|
44
|
+
USER_PASSWORD: z.ZodOptional<z.ZodString>;
|
|
22
45
|
SESSION_DURATION: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
46
|
+
IS_DOCKER: z.ZodOptional<z.ZodDefault<z.ZodCoercedBoolean<unknown>>>;
|
|
47
|
+
IS_BINARY: z.ZodOptional<z.ZodDefault<z.ZodCoercedBoolean<unknown>>>;
|
|
48
|
+
SECRET: z.ZodString;
|
|
49
|
+
APIKEY: z.ZodString;
|
|
50
|
+
SETUP_PENDING: z.ZodLiteral<true>;
|
|
23
51
|
}, z.core.$strip>;
|
|
24
|
-
export type AppConfig = z.infer<typeof
|
|
52
|
+
export type AppConfig = z.infer<typeof finalConfigSchema>;
|
|
53
|
+
export type SetupModeConfig = z.infer<typeof setupModeConfigSchema>;
|
|
25
54
|
declare class ConfigService {
|
|
26
55
|
private static instance;
|
|
27
|
-
|
|
56
|
+
private _config;
|
|
57
|
+
private keysPath;
|
|
58
|
+
private _isSetupPending;
|
|
59
|
+
/**
|
|
60
|
+
* Returns the config. In setup mode, some fields may be undefined.
|
|
61
|
+
*/
|
|
62
|
+
get config(): AppConfig;
|
|
63
|
+
/**
|
|
64
|
+
* Check if the app is in setup pending mode (waiting for credentials)
|
|
65
|
+
*/
|
|
66
|
+
isSetupPending(): boolean;
|
|
28
67
|
private constructor();
|
|
68
|
+
private loadOrGenerateSecrets;
|
|
29
69
|
/**
|
|
30
70
|
* Gets the singleton instance of the ConfigService.
|
|
31
71
|
*/
|
|
@@ -34,7 +74,21 @@ declare class ConfigService {
|
|
|
34
74
|
* A getter to check if the app is in development mode.
|
|
35
75
|
*/
|
|
36
76
|
isDevelopment(): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Complete the initial setup by updating config with credentials.
|
|
79
|
+
* This is called after credentials are stored in the keyring.
|
|
80
|
+
*/
|
|
81
|
+
completeSetup(credentials: {
|
|
82
|
+
ENCRYPTION_KEY: string;
|
|
83
|
+
USER_NAME: string;
|
|
84
|
+
USER_PASSWORD: string;
|
|
85
|
+
}): void;
|
|
86
|
+
/**
|
|
87
|
+
* Reinitialize ConfigService with credentials from keyring.
|
|
88
|
+
* Used after initial setup to reload config with actual credentials.
|
|
89
|
+
*/
|
|
90
|
+
static reinitializeWithKeyringCredentials(): Promise<boolean>;
|
|
37
91
|
}
|
|
38
92
|
export declare const configService: ConfigService;
|
|
39
|
-
export {};
|
|
93
|
+
export { ConfigService };
|
|
40
94
|
//# sourceMappingURL=ConfigService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigService.d.ts","sourceRoot":"","sources":["../../src/services/ConfigService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"ConfigService.d.ts","sourceRoot":"","sources":["../../src/services/ConfigService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiExB,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;iBAGrB,CAAC;AAGH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;iBAIzB,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC1D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,cAAM,aAAa;IAClB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,eAAe,CAAkB;IAEzC;;OAEG;IACH,IAAW,MAAM,IAAI,SAAS,CAM7B;IAED;;OAEG;IACI,cAAc,IAAI,OAAO;IAIhC,OAAO;IAiHP,OAAO,CAAC,qBAAqB;IA0C7B;;OAEG;WACW,WAAW,IAAI,aAAa;IAO1C;;OAEG;IACI,aAAa,IAAI,OAAO;IAI/B;;;OAGG;IACI,aAAa,CAAC,WAAW,EAAE;QACjC,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI;IAgBR;;;OAGG;WACiB,kCAAkC,IAAI,OAAO,CAAC,OAAO,CAAC;CAwB1E;AAGD,eAAO,MAAM,aAAa,eAA8B,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z}from"zod";import fs from"fs";import{appPaths}from"../utils/AppPaths";import path from"path";const
|
|
1
|
+
import{z}from"zod";import fs from"fs";import crypto from"crypto";import{appPaths}from"../utils/AppPaths";import path from"path";import{requiresKeyringSetup}from"../utils/installHelpers";const baseConfigSchema=z.object({NODE_ENV:z.enum(["development","production","test"]).default("production"),SERVER_PORT:z.coerce.number().int().positive().default(5173),MQTT_PORT:z.coerce.number().int().positive().default(1883).optional(),APP_URL:z.string().default("http://localhost:5173"),APP_TITLE:z.string().min(1).default("Pluton"),MAX_CONCURRENT_BACKUPS:z.coerce.number().int().positive().default(2),LICENSE_KEY:z.string().optional(),ALLOW_CUSTOM_RESTORE_PATH:z.coerce.boolean().default(!0).optional(),ALLOW_FILE_BROWSER:z.coerce.boolean().default(!0).optional(),ENCRYPTION_KEY:z.string().min(12,{message:"ENCRYPTION_KEY is required for rclone/restic."}).optional(),SECRET:z.string().min(12).optional(),APIKEY:z.string().min(12).optional(),DISABLE_EVENT_SCRIPTS:z.coerce.boolean().default(!1).optional(),USER_NAME:z.string().min(1).optional(),USER_PASSWORD:z.string().min(1).optional(),SESSION_DURATION:z.coerce.number().int().positive().default(7),IS_DOCKER:z.coerce.boolean().default(!1).optional(),IS_BINARY:z.coerce.boolean().default(!1).optional(),SETUP_PENDING:z.coerce.boolean().default(!1).optional()}),configSchema=baseConfigSchema.extend({ENCRYPTION_KEY:z.string().min(12,{message:"ENCRYPTION_KEY is required for rclone/restic."}),USER_NAME:z.string().min(1,{message:"USER_NAME is required."}),USER_PASSWORD:z.string().min(1,{message:"USER_PASSWORD is required."})}),userConfigSchema=baseConfigSchema.pick({APP_TITLE:!0,APP_URL:!0,MAX_CONCURRENT_BACKUPS:!0,SESSION_DURATION:!0,SERVER_PORT:!0,MQTT_PORT:!0,ALLOW_CUSTOM_RESTORE_PATH:!0,ALLOW_FILE_BROWSER:!0,DISABLE_EVENT_SCRIPTS:!0}).partial(),finalConfigSchema=configSchema.extend({SECRET:z.string().min(12),APIKEY:z.string().min(12)});baseConfigSchema.extend({SECRET:z.string().min(12),APIKEY:z.string().min(12),SETUP_PENDING:z.literal(!0)});class ConfigService{static instance;_config;keysPath="";_isSetupPending=!1;get config(){return this._isSetupPending,this._config}isSetupPending(){return this._isSetupPending}constructor(){const rawEnv=process.env,normalizedEnv={...rawEnv};normalizedEnv.PLUTON_ENCRYPTION_KEY&&(normalizedEnv.ENCRYPTION_KEY=normalizedEnv.PLUTON_ENCRYPTION_KEY),normalizedEnv.PLUTON_USER_NAME&&(normalizedEnv.USER_NAME=normalizedEnv.PLUTON_USER_NAME),normalizedEnv.PLUTON_USER_PASSWORD&&(normalizedEnv.USER_PASSWORD=normalizedEnv.PLUTON_USER_PASSWORD);const envConfig=configSchema.partial().parse(normalizedEnv);let fileConfig={};const configPath=path.join(appPaths.getConfigDir(),"config.json");try{if(fs.existsSync(configPath)){const fileContent=fs.readFileSync(configPath,"utf-8"),parsedJson=JSON.parse(fileContent),foundSensitiveFields=["ENCRYPTION_KEY","USER_NAME","USER_PASSWORD"].filter(field=>field in parsedJson);foundSensitiveFields.length>0&&foundSensitiveFields.forEach(field=>{}),fileConfig=userConfigSchema.parse(parsedJson)}}catch(error){}this.keysPath=path.join(appPaths.getDataDir(),"keys.json");const secrets=this.loadOrGenerateSecrets(envConfig.SECRET,envConfig.APIKEY),mergedConfig={...envConfig,...fileConfig,SECRET:secrets.SECRET,APIKEY:secrets.APIKEY,IS_DOCKER:"true"===rawEnv.IS_DOCKER||"1"===rawEnv.IS_DOCKER,IS_BINARY:!!process.pkg},parsedConfig=finalConfigSchema.safeParse(mergedConfig);if(!parsedConfig.success){if(requiresKeyringSetup())return this._isSetupPending=!0,void(this._config={...mergedConfig,ENCRYPTION_KEY:"",USER_NAME:"admin",USER_PASSWORD:"",SETUP_PENDING:!0});parsedConfig.error.issues.forEach(err=>{}),process.exit(1)}this._config=parsedConfig.data}loadOrGenerateSecrets(envSecret,envApiKey){let keysFileContent={};try{fs.existsSync(this.keysPath)&&(keysFileContent=JSON.parse(fs.readFileSync(this.keysPath,"utf-8")))}catch(error){}const finalSecret=envSecret||keysFileContent.SECRET||crypto.randomBytes(32).toString("hex"),finalApiKey=envApiKey||keysFileContent.APIKEY||crypto.randomBytes(24).toString("hex");if(finalSecret!==keysFileContent.SECRET||finalApiKey!==keysFileContent.APIKEY)try{const newContent={...keysFileContent,SECRET:finalSecret,APIKEY:finalApiKey},dir=path.dirname(this.keysPath);fs.existsSync(dir)||fs.mkdirSync(dir,{recursive:!0}),fs.writeFileSync(this.keysPath,JSON.stringify(newContent,null,2),{mode:384})}catch(error){}return{SECRET:finalSecret,APIKEY:finalApiKey}}static getInstance(){return ConfigService.instance||(ConfigService.instance=new ConfigService),ConfigService.instance}isDevelopment(){return"development"===this.config.NODE_ENV}completeSetup(credentials){if(!this._isSetupPending)throw new Error("Setup is not pending. Cannot complete setup.");this._config={...this._config,...credentials,SETUP_PENDING:!1},this._isSetupPending=!1}static async reinitializeWithKeyringCredentials(){if(!ConfigService.instance||!ConfigService.instance._isSetupPending)return!1;try{const{keyringService:keyringService}=await import("./KeyringService"),credentials=await keyringService.getAllCredentials();if(credentials.ENCRYPTION_KEY&&credentials.USER_NAME&&credentials.USER_PASSWORD)return ConfigService.instance.completeSetup({ENCRYPTION_KEY:credentials.ENCRYPTION_KEY,USER_NAME:credentials.USER_NAME,USER_PASSWORD:credentials.USER_PASSWORD}),!0}catch(error){}return!1}}export const configService=ConfigService.getInstance();export{ConfigService};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigService.js","sourceRoot":"","sources":["../../src/services/ConfigService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ConfigService.js","sourceRoot":"","sources":["../../src/services/ConfigService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
export declare const KEYRING_KEYS: {
|
|
2
|
+
readonly ENCRYPTION_KEY: "ENCRYPTION_KEY";
|
|
3
|
+
readonly USER_NAME: "USER_NAME";
|
|
4
|
+
readonly USER_PASSWORD: "USER_PASSWORD";
|
|
5
|
+
};
|
|
6
|
+
export type KeyringKey = (typeof KEYRING_KEYS)[keyof typeof KEYRING_KEYS];
|
|
7
|
+
export interface KeyringCredentials {
|
|
8
|
+
ENCRYPTION_KEY: string;
|
|
9
|
+
USER_NAME: string;
|
|
10
|
+
USER_PASSWORD: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* KeyringService provides a secure way to store and retrieve sensitive credentials
|
|
14
|
+
* using the OS-specific credential manager (Windows Credential Manager / macOS Keychain / Linux Secret Service).
|
|
15
|
+
*
|
|
16
|
+
* This is only used for pkg-packaged executables on Windows, macOS, and Linux desktop environments.
|
|
17
|
+
* Note: On Windows Requires C++ Redistributable to be installed.
|
|
18
|
+
* https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#latest-supported-redistributable-version
|
|
19
|
+
*/
|
|
20
|
+
declare class KeyringService {
|
|
21
|
+
private static instance;
|
|
22
|
+
private isSupported;
|
|
23
|
+
private Entry;
|
|
24
|
+
private constructor();
|
|
25
|
+
/**
|
|
26
|
+
* Loads the keyring native module for pkg binary mode
|
|
27
|
+
* The .node file is placed in node_modules/@napi-rs/keyring-<platform>/ alongside the executable
|
|
28
|
+
*/
|
|
29
|
+
private loadKeyringFromExternalPath;
|
|
30
|
+
/**
|
|
31
|
+
* Initializes the keyring module if available and supported
|
|
32
|
+
*/
|
|
33
|
+
private initializeKeyring;
|
|
34
|
+
/**
|
|
35
|
+
* Gets the singleton instance of KeyringService
|
|
36
|
+
*/
|
|
37
|
+
static getInstance(): KeyringService;
|
|
38
|
+
/**
|
|
39
|
+
* Checks if the keyring is supported on the current platform
|
|
40
|
+
*/
|
|
41
|
+
isPlatformSupported(): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Checks if the keyring module is loaded and ready
|
|
44
|
+
*/
|
|
45
|
+
isKeyringAvailable(): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Waits for the keyring to be initialized (async initialization)
|
|
48
|
+
*/
|
|
49
|
+
waitForInitialization(): Promise<boolean>;
|
|
50
|
+
/**
|
|
51
|
+
* Stores a credential in the OS keyring
|
|
52
|
+
*/
|
|
53
|
+
setCredential(key: KeyringKey, value: string): Promise<boolean>;
|
|
54
|
+
/**
|
|
55
|
+
* Retrieves a credential from the OS keyring
|
|
56
|
+
*/
|
|
57
|
+
getCredential(key: KeyringKey): Promise<string | null>;
|
|
58
|
+
/**
|
|
59
|
+
* Deletes a credential from the OS keyring
|
|
60
|
+
*/
|
|
61
|
+
deleteCredential(key: KeyringKey): Promise<boolean>;
|
|
62
|
+
/**
|
|
63
|
+
* Stores all required credentials at once
|
|
64
|
+
*/
|
|
65
|
+
setAllCredentials(credentials: KeyringCredentials): Promise<boolean>;
|
|
66
|
+
/**
|
|
67
|
+
* Retrieves all credentials from the OS keyring
|
|
68
|
+
*/
|
|
69
|
+
getAllCredentials(): Promise<Partial<KeyringCredentials>>;
|
|
70
|
+
/**
|
|
71
|
+
* Checks if all required credentials are stored in the keyring
|
|
72
|
+
*/
|
|
73
|
+
hasAllCredentials(): Promise<boolean>;
|
|
74
|
+
/**
|
|
75
|
+
* Deletes all Pluton credentials from the OS keyring
|
|
76
|
+
*/
|
|
77
|
+
deleteAllCredentials(): Promise<boolean>;
|
|
78
|
+
}
|
|
79
|
+
export declare const keyringService: KeyringService;
|
|
80
|
+
export {};
|
|
81
|
+
//# sourceMappingURL=KeyringService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyringService.d.ts","sourceRoot":"","sources":["../../src/services/KeyringService.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE1E,MAAM,WAAW,kBAAkB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACtB;AAuCD;;;;;;;GAOG;AACH,cAAM,cAAc;IACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;IACxC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,KAAK,CAAa;IAE1B,OAAO;IAIP;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAyBnC;;OAEG;YACW,iBAAiB;IA8B/B;;OAEG;WACW,WAAW,IAAI,cAAc;IAO3C;;OAEG;IACI,mBAAmB,IAAI,OAAO;IAIrC;;OAEG;IACI,kBAAkB,IAAI,OAAO;IAIpC;;OAEG;IACU,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAQtD;;OAEG;IACU,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB5E;;OAEG;IACU,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAenE;;OAEG;IACU,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBhE;;OAEG;IACU,iBAAiB,CAAC,WAAW,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAUjF;;OAEG;IACU,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAgBtE;;OAEG;IACU,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAUlD;;OAEG;IACU,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;CASrD;AAGD,eAAO,MAAM,cAAc,gBAA+B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import os from"os";import path from"path";import{createRequire}from"module";import{isKeyringPlatform,isBinaryMode}from"../utils/installHelpers";export const KEYRING_KEYS={ENCRYPTION_KEY:"ENCRYPTION_KEY",USER_NAME:"USER_NAME",USER_PASSWORD:"USER_PASSWORD"};class KeyringService{static instance;isSupported=!1;Entry=null;constructor(){this.initializeKeyring()}loadKeyringFromExternalPath(){const platformInfo=function(){const platform=os.platform(),arch=os.arch();return"win32"===platform&&"x64"===arch?{packageName:"@napi-rs/keyring-win32-x64-msvc",nodeFile:"keyring.win32-x64-msvc.node"}:"darwin"===platform&&"x64"===arch?{packageName:"@napi-rs/keyring-darwin-x64",nodeFile:"keyring.darwin-x64.node"}:"darwin"===platform&&"arm64"===arch?{packageName:"@napi-rs/keyring-darwin-arm64",nodeFile:"keyring.darwin-arm64.node"}:"linux"===platform&&"x64"===arch?{packageName:"@napi-rs/keyring-linux-x64-gnu",nodeFile:"keyring.linux-x64-gnu.node"}:"linux"===platform&&"arm64"===arch?{packageName:"@napi-rs/keyring-linux-arm64-gnu",nodeFile:"keyring.linux-arm64-gnu.node"}:null}();if(!platformInfo)throw new Error(`Unsupported platform: ${os.platform()} ${os.arch()}`);const execDir=path.dirname(process.execPath),nodeFilePath=path.join(execDir,"node_modules","@napi-rs",platformInfo.packageName.replace("@napi-rs/",""),platformInfo.nodeFile);return createRequire(import.meta.url)(nodeFilePath)}async initializeKeyring(){os.platform();if(isKeyringPlatform())try{let keyring;keyring=isBinaryMode()?this.loadKeyringFromExternalPath():await import("@napi-rs/keyring"),this.Entry=keyring.Entry,this.isSupported=!0}catch(error){this.isSupported=!1}else this.isSupported=!1}static getInstance(){return KeyringService.instance||(KeyringService.instance=new KeyringService),KeyringService.instance}isPlatformSupported(){return isKeyringPlatform()}isKeyringAvailable(){return this.isSupported&&null!==this.Entry}async waitForInitialization(){return this.isSupported||null!==this.Entry||await this.initializeKeyring(),this.isKeyringAvailable()}async setCredential(key,value){if(!await this.waitForInitialization())return!1;try{return new this.Entry("Pluton",key).setPassword(value),!0}catch(error){return!1}}async getCredential(key){if(!await this.waitForInitialization())return null;try{const entry=new this.Entry("Pluton",key);return entry.getPassword()||null}catch(error){return null}}async deleteCredential(key){if(!await this.waitForInitialization())return!1;try{return new this.Entry("Pluton",key).deletePassword(),!0}catch(error){return!1}}async setAllCredentials(credentials){return(await Promise.all([this.setCredential(KEYRING_KEYS.ENCRYPTION_KEY,credentials.ENCRYPTION_KEY),this.setCredential(KEYRING_KEYS.USER_NAME,credentials.USER_NAME),this.setCredential(KEYRING_KEYS.USER_PASSWORD,credentials.USER_PASSWORD)])).every(Boolean)}async getAllCredentials(){const[encryptionKey,userName,userPassword]=await Promise.all([this.getCredential(KEYRING_KEYS.ENCRYPTION_KEY),this.getCredential(KEYRING_KEYS.USER_NAME),this.getCredential(KEYRING_KEYS.USER_PASSWORD)]),credentials={};return encryptionKey&&(credentials.ENCRYPTION_KEY=encryptionKey),userName&&(credentials.USER_NAME=userName),userPassword&&(credentials.USER_PASSWORD=userPassword),credentials}async hasAllCredentials(){const credentials=await this.getAllCredentials();return!!(credentials.ENCRYPTION_KEY&&credentials.USER_NAME&&credentials.USER_PASSWORD&&credentials.ENCRYPTION_KEY.length>=12)}async deleteAllCredentials(){return(await Promise.all([this.deleteCredential(KEYRING_KEYS.ENCRYPTION_KEY),this.deleteCredential(KEYRING_KEYS.USER_NAME),this.deleteCredential(KEYRING_KEYS.USER_PASSWORD)])).every(Boolean)}}export const keyringService=KeyringService.getInstance();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyringService.js","sourceRoot":"","sources":["../../src/services/KeyringService.ts"],"names":[],"mappings":"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"}
|