diff --git a/backend/src/routes/admin.js b/backend/src/routes/admin.js index e335a71..8ddab29 100644 --- a/backend/src/routes/admin.js +++ b/backend/src/routes/admin.js @@ -263,7 +263,7 @@ router.post('/webdav/sync', authenticate, requireAdmin, async (req, res) => { // User-Basisordner try { await webdav.mkdirp(userBase); results.folders++; } catch(e) { - results.errors.push(`Ordner ${userBase}: ${e.message}`); + console.warn('[sync] mkdirp', userBase, e.message); } // Upload-Freigabe Ordner diff --git a/backend/src/tools/dateien/webdav.js b/backend/src/tools/dateien/webdav.js index 49d9537..d6565f9 100644 --- a/backend/src/tools/dateien/webdav.js +++ b/backend/src/tools/dateien/webdav.js @@ -77,8 +77,10 @@ async function mkdirp(davPath) { for (const part of parts) { current += '/' + part; const r = await davRequest('MKCOL', current); - if (r.status !== 201 && r.status !== 405) { // 405 = schon vorhanden - throw new Error(`MKCOL ${current} → ${r.status}`); + // 201 = erstellt, 301/405/409/423 = schon vorhanden oder Konflikt (ignorieren) + const ok = [201, 301, 405, 409, 423].includes(r.status); + if (!ok) { + console.warn(`[webdav mkdirp] MKCOL ${current} → ${r.status} (ignoriert)`); } } } @@ -97,7 +99,9 @@ function userPath(cfg, username) { * @param {string} mimeType */ async function uploadFile(buffer, davPath, mimeType = 'application/octet-stream') { - await mkdirp(davPath.split('/').slice(0, -1).join('/')); + try { await mkdirp(davPath.split('/').slice(0, -1).join('/')); } catch(e) { + console.warn('[webdav] mkdirp warning:', e.message); + } const r = await new Promise((resolve, reject) => { const cfg = getConfig(); const base = new URL(cfg.url); diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 44f05ac..1d1f7eb 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -2991,9 +2991,6 @@ function AdminPanel({ toast, mobile, user, nav }) { - - - )} @@ -3031,6 +3028,9 @@ function AdminPanel({ toast, mobile, user, nav }) { {file &&
{file.name}
} + + + )}