From fa76c213003d47be7ae35902ebc85e54a4cd3df0 Mon Sep 17 00:00:00 2001 From: Neal Shah <30693865+ProgrammerIn-wonderland@users.noreply.github.com> Date: Mon, 2 Feb 2026 11:48:16 -0800 Subject: [PATCH] WebDAV post migration fixes (#2398) --- src/backend/src/services/WebDAV/WebDAVService.js | 2 +- src/backend/src/services/WebDAV/methodHandlers/COPY.mjs | 4 ---- src/backend/src/services/WebDAV/methodHandlers/LOCK.mjs | 2 +- src/backend/src/services/WebDAV/methodHandlers/MKCOL.mjs | 2 +- src/backend/src/services/WebDAV/methodHandlers/MOVE.mjs | 4 ---- src/backend/src/services/WebDAV/methodHandlers/PROPFIND.mjs | 4 ++-- src/backend/src/services/WebDAV/methodHandlers/PROPPATCH.mjs | 2 +- 7 files changed, 6 insertions(+), 14 deletions(-) diff --git a/src/backend/src/services/WebDAV/WebDAVService.js b/src/backend/src/services/WebDAV/WebDAVService.js index 9c86db9bb..1e1e93c3d 100644 --- a/src/backend/src/services/WebDAV/WebDAVService.js +++ b/src/backend/src/services/WebDAV/WebDAVService.js @@ -54,7 +54,7 @@ const ROOT_WEB_DAV_RESPONSE_XML = ` - /dav/ + / dav diff --git a/src/backend/src/services/WebDAV/methodHandlers/COPY.mjs b/src/backend/src/services/WebDAV/methodHandlers/COPY.mjs index 395321811..c6d02f424 100644 --- a/src/backend/src/services/WebDAV/methodHandlers/COPY.mjs +++ b/src/backend/src/services/WebDAV/methodHandlers/COPY.mjs @@ -29,10 +29,6 @@ export const COPY = async ( req, res, _filePath, fileNode, headerLockToken ) => let destinationPath; try { const destUrl = new URL(destinationHeader, `http://${req.headers.host}`); - if ( ! destUrl.pathname.startsWith('/dav/') ) { - res.status(400).end( 'Bad Request: Destination must be within WebDAV namespace'); - return; - } destinationPath = destUrl.pathname; if ( ! destinationPath.startsWith('/') ) { destinationPath = `/${destinationPath}`; diff --git a/src/backend/src/services/WebDAV/methodHandlers/LOCK.mjs b/src/backend/src/services/WebDAV/methodHandlers/LOCK.mjs index b24e515f6..c0d76ce49 100644 --- a/src/backend/src/services/WebDAV/methodHandlers/LOCK.mjs +++ b/src/backend/src/services/WebDAV/methodHandlers/LOCK.mjs @@ -24,7 +24,7 @@ const getLockResponse = ( lockToken, lockScope, filePath ) => { ${lockToken} - /dav${escapeXml(encodeURI(filePath))} + ${escapeXml(encodeURI(filePath))} diff --git a/src/backend/src/services/WebDAV/methodHandlers/MKCOL.mjs b/src/backend/src/services/WebDAV/methodHandlers/MKCOL.mjs index 22d8232b1..d31371c3a 100644 --- a/src/backend/src/services/WebDAV/methodHandlers/MKCOL.mjs +++ b/src/backend/src/services/WebDAV/methodHandlers/MKCOL.mjs @@ -67,7 +67,7 @@ export const MKCOL = async ( req, res, filePath, fileNode, headerLockToken ) => // Set response headers res.set({ - Location: `/dav${targetPath}${targetPath.endsWith('/') ? '' : '/'}`, + Location: `${targetPath}${targetPath.endsWith('/') ? '' : '/'}`, 'Content-Length': '0', }); diff --git a/src/backend/src/services/WebDAV/methodHandlers/MOVE.mjs b/src/backend/src/services/WebDAV/methodHandlers/MOVE.mjs index 0f3702466..67400a940 100644 --- a/src/backend/src/services/WebDAV/methodHandlers/MOVE.mjs +++ b/src/backend/src/services/WebDAV/methodHandlers/MOVE.mjs @@ -30,10 +30,6 @@ export const MOVE = async ( req, res, filePath, fileNode, headerLockToken ) => { let destinationPath; try { const destUrl = new URL(destinationHeader, `http://${req.headers.host}`); - if ( ! destUrl.pathname.startsWith('/dav/') ) { - res.status(400).end( 'Bad Request: Destination must be within WebDAV namespace'); - return; - } destinationPath = destUrl.pathname; // Remove '/dav' prefix if ( ! destinationPath.startsWith('/') ) { destinationPath = `/${destinationPath}`; diff --git a/src/backend/src/services/WebDAV/methodHandlers/PROPFIND.mjs b/src/backend/src/services/WebDAV/methodHandlers/PROPFIND.mjs index cad6e6701..fb7945af2 100644 --- a/src/backend/src/services/WebDAV/methodHandlers/PROPFIND.mjs +++ b/src/backend/src/services/WebDAV/methodHandlers/PROPFIND.mjs @@ -46,7 +46,7 @@ const convertToWebDAVPropfindXML = ( fsEntry ) => { const xml = ` - /dav${escapeXml(encodeURI(href))} + ${escapeXml(encodeURI(href))} ${escapeXml(fsEntry.name)} @@ -92,7 +92,7 @@ const convertMultipleToWebDAVPropfindXML = ( selfStat, fsEntries ) => { href += '/'; } return ` - /dav${escapeXml(encodeURI(href))} + ${escapeXml(encodeURI(href))} ${escapeXml(fsEntry.name)} diff --git a/src/backend/src/services/WebDAV/methodHandlers/PROPPATCH.mjs b/src/backend/src/services/WebDAV/methodHandlers/PROPPATCH.mjs index bc9b417e6..7d7d4ea92 100644 --- a/src/backend/src/services/WebDAV/methodHandlers/PROPPATCH.mjs +++ b/src/backend/src/services/WebDAV/methodHandlers/PROPPATCH.mjs @@ -5,7 +5,7 @@ import { escapeXml } from '../utils.mjs'; const getStubResponse = ( filePath ) => ` - /dav${escapeXml(encodeURI(filePath))} + ${escapeXml(encodeURI(filePath))} HTTP/1.1 200 OK