diff --git a/src/main/services/BackupManager.ts b/src/main/services/BackupManager.ts index 18dbd00422..63a3303c0a 100644 --- a/src/main/services/BackupManager.ts +++ b/src/main/services/BackupManager.ts @@ -7,7 +7,7 @@ import Logger from 'electron-log' import * as fs from 'fs-extra' import StreamZip from 'node-stream-zip' import * as path from 'path' -import { createClient, CreateDirectoryOptions, FileStat } from 'webdav' +import { CreateDirectoryOptions, FileStat } from 'webdav' import WebDav from './WebDav' import { windowService } from './WindowService' @@ -340,12 +340,8 @@ class BackupManager { listWebdavFiles = async (_: Electron.IpcMainInvokeEvent, config: WebDavConfig) => { try { - const client = createClient(config.webdavHost, { - username: config.webdavUser, - password: config.webdavPass - }) - - const response = await client.getDirectoryContents(config.webdavPath) + const client = new WebDav(config) + const response = await client.getDirectoryContents() const files = Array.isArray(response) ? response : response.data return files diff --git a/src/main/services/WebDav.ts b/src/main/services/WebDav.ts index e78dfdee7e..ad1a127b3a 100644 --- a/src/main/services/WebDav.ts +++ b/src/main/services/WebDav.ts @@ -1,6 +1,7 @@ import { WebDavConfig } from '@types' import Logger from 'electron-log' import Stream from 'stream' +import https from 'https' import { BufferLike, createClient, @@ -20,7 +21,8 @@ export default class WebDav { username: params.webdavUser, password: params.webdavPass, maxBodyLength: Infinity, - maxContentLength: Infinity + maxContentLength: Infinity, + httpsAgent: new https.Agent({ rejectUnauthorized: false }) }) this.putFileContents = this.putFileContents.bind(this) @@ -74,6 +76,19 @@ export default class WebDav { } } + public getDirectoryContents = async () => { + if (!this.instance) { + throw new Error('WebDAV client not initialized') + } + + try { + return await this.instance.getDirectoryContents(this.webdavPath) + } catch (error) { + Logger.error('[WebDAV] Error getting directory contents on WebDAV:', error) + throw error + } + } + public checkConnection = async () => { if (!this.instance) { throw new Error('WebDAV client not initialized')