From 1d8149606a1ed683934a9014411833e9d6b67dc2 Mon Sep 17 00:00:00 2001 From: Mikei386 <44135113+Mikei386@users.noreply.github.com> Date: Tue, 23 Jun 2026 21:45:51 +0200 Subject: [PATCH] Use raw file uploads --- build-plugin.sh | 2 +- packages/u-navigator-2026.06.23.r045.tgz | Bin 32062 -> 0 bytes packages/u-navigator-2026.06.23.r046.tgz | Bin 0 -> 32366 bytes .../emhttp/plugins/u-navigator/api/upload.php | 56 ++++++++++++++---- server/public/app.js | 20 +++++-- u-navigator.plg | 4 +- 6 files changed, 60 insertions(+), 22 deletions(-) delete mode 100644 packages/u-navigator-2026.06.23.r045.tgz create mode 100644 packages/u-navigator-2026.06.23.r046.tgz diff --git a/build-plugin.sh b/build-plugin.sh index 441e3fe..da35fd4 100755 --- a/build-plugin.sh +++ b/build-plugin.sh @@ -2,7 +2,7 @@ set -eu PLUGIN="u-navigator" -VERSION="2026.06.23.r045" +VERSION="2026.06.23.r046" PKG_DIR="packages" WORK_DIR=".plugin-build" PKG_NAME="${PLUGIN}-${VERSION}.tgz" diff --git a/packages/u-navigator-2026.06.23.r045.tgz b/packages/u-navigator-2026.06.23.r045.tgz deleted file mode 100644 index 0067e32a34f0881945aafd535d3106c2a86eedef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32062 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 literal 0 HcmV?d00001 diff --git a/plugin-root/usr/local/emhttp/plugins/u-navigator/api/upload.php b/plugin-root/usr/local/emhttp/plugins/u-navigator/api/upload.php index 5001cbb..fe60f78 100644 --- a/plugin-root/usr/local/emhttp/plugins/u-navigator/api/upload.php +++ b/plugin-root/usr/local/emhttp/plugins/u-navigator/api/upload.php @@ -7,6 +7,31 @@ if (!is_dir($target['path'])) { unav_error(400, 'Upload target must be a directory'); } +if (isset($_GET['relativePath']) || isset($_SERVER['HTTP_X_UNAV_RELATIVE_PATH'])) { + $relativeName = (string)($_GET['relativePath'] ?? $_SERVER['HTTP_X_UNAV_RELATIVE_PATH']); + $destination = unav_prepare_upload_destination($target['path'], $relativeName); + $input = fopen('php://input', 'rb'); + $output = fopen($destination['path'], 'xb'); + if (!$input || !$output) { + if ($input) { + fclose($input); + } + if ($output) { + fclose($output); + } + unav_error(500, 'Could not open upload stream'); + } + stream_copy_to_stream($input, $output); + fclose($input); + fclose($output); + unav_json([ + 'uploaded' => [[ + 'name' => $destination['relative'], + 'size' => filesize($destination['path']) ?: 0, + ]], + ], 201); +} + $uploaded = []; $names = unav_upload_array($_FILES['files']['name'] ?? []); $errors = unav_upload_array($_FILES['files']['error'] ?? []); @@ -17,33 +42,38 @@ foreach ($names as $index => $name) { unav_error(400, 'Upload failed'); } $relativeName = $relativePaths[$index] ?? $name; - $safeName = unav_upload_safe_relative_path((string)$relativeName); + $destination = unav_prepare_upload_destination($target['path'], (string)$relativeName); + if (!move_uploaded_file($tmpNames[$index] ?? '', $destination['path'])) { + unav_error(500, 'Could not store uploaded file'); + } + $uploaded[] = [ + 'name' => $destination['relative'], + 'size' => filesize($destination['path']) ?: 0, + ]; +} + +unav_json(['uploaded' => $uploaded], 201); + +function unav_prepare_upload_destination(string $targetPath, string $relativeName): array { + $safeName = unav_upload_safe_relative_path($relativeName); $relativeParent = dirname($safeName); if ($relativeParent !== '.') { - $parentCandidate = $target['path'] . '/' . $relativeParent; - unav_root_for_real($target['path']); + $parentCandidate = $targetPath . '/' . $relativeParent; + unav_root_for_real($targetPath); if (!is_dir($parentCandidate) && !mkdir($parentCandidate, 0777, true) && !is_dir($parentCandidate)) { unav_error(500, 'Could not create upload directory'); } } - $destination = unav_destination_path($target['path'] . '/' . $safeName); + $destination = unav_destination_path($targetPath . '/' . $safeName); if (file_exists($destination['path'])) { unav_error(409, 'Destination already exists'); } if (!is_dir(dirname($destination['path']))) { unav_error(500, 'Could not create upload directory'); } - if (!move_uploaded_file($tmpNames[$index] ?? '', $destination['path'])) { - unav_error(500, 'Could not store uploaded file'); - } - $uploaded[] = [ - 'name' => $safeName, - 'size' => filesize($destination['path']) ?: 0, - ]; + return ['path' => $destination['path'], 'relative' => $safeName]; } -unav_json(['uploaded' => $uploaded], 201); - function unav_upload_array($value): array { if (is_array($value)) { return array_values($value); diff --git a/server/public/app.js b/server/public/app.js index 01deee2..5cfd2e0 100644 --- a/server/public/app.js +++ b/server/public/app.js @@ -904,13 +904,21 @@ async function uploadFileList(win, files, targetPath) { const uploadItems = normalizeUploadItems(files); for (const [index, item] of uploadItems.entries()) { recordDebug('upload.file.request', { path: item.path, size: item.file.size, index: index + 1, total: uploadItems.length }); - const form = new FormData(); - form.append('files', item.file, item.file.name); - form.append('relativePath', item.path); - appendCsrf(form); - await fetchChecked(apiUrl(`upload.php?path=${encodeURIComponent(targetPath)}`), { + const params = new URLSearchParams({ + path: targetPath, + relativePath: item.path + }); + const token = getCsrfToken(); + if (token) { + params.set('csrf_token', token); + recordDebug('csrf.attached', { length: token.length }); + } else { + recordDebug('csrf.missing', {}); + } + await fetchChecked(apiUrl(`upload.php?${params.toString()}`), { method: 'POST', - body: form + headers: { 'Content-Type': 'application/octet-stream' }, + body: item.file }); recordDebug('upload.file.done', { path: item.path, index: index + 1, total: uploadItems.length }); } diff --git a/u-navigator.plg b/u-navigator.plg index aa0e035..030e657 100644 --- a/u-navigator.plg +++ b/u-navigator.plg @@ -1,7 +1,7 @@ - + @@ -24,7 +24,7 @@ https://git.casaderoll.de/michael/Unraid-Navigator/raw/branch/main/packages/&package; -cd3b5a92d7174924985b5d929cb180fe +acb81bdc26294c48b2115013cac89015