diff --git a/server/Server.js b/server/Server.js index 1c437e25..44a28d6d 100644 --- a/server/Server.js +++ b/server/Server.js @@ -139,7 +139,8 @@ class Server { await this.checkUserMediaProgress() // Remove invalid user item progress await this.purgeMetadata() // Remove metadata folders without library item await this.cacheManager.ensureCachePaths() - + await this.abMergeManager.ensureDownloadDirPath() + await this.backupManager.init() await this.logManager.init() await this.rssFeedManager.init() diff --git a/server/managers/AbMergeManager.js b/server/managers/AbMergeManager.js index 5eb59b7f..a0fbcb36 100644 --- a/server/managers/AbMergeManager.js +++ b/server/managers/AbMergeManager.js @@ -16,11 +16,28 @@ class AbMergeManager { this.clientEmitter = clientEmitter this.downloadDirPath = Path.join(global.MetadataPath, 'downloads') + this.downloadDirPathExist = false this.pendingDownloads = [] this.downloads = [] } + async ensureDownloadDirPath() { // Creates download path if necessary and sets owner and permissions + if (this.downloadDirPathExist) return + + var pathCreated = false + if (!(await fs.pathExists(this.downloadDirPath))) { + await fs.mkdir(this.downloadDirPath) + pathCreated = true + } + + if (pathCreated) { + await filePerms.setDefault(this.downloadDirPath) + } + + this.downloadDirPathExist = true + } + getDownload(downloadId) { return this.downloads.find(d => d.id === downloadId) } @@ -76,6 +93,7 @@ class AbMergeManager { await fs.mkdir(download.dirpath) } catch (error) { Logger.error(`[AbMergeManager] Failed to make directory ${download.dirpath}`) + Logger.debug(`[AbMergeManager] Make directory error: ${error}`) var downloadJson = download.toJSON() this.clientEmitter(user.id, 'abmerge_failed', downloadJson) return