diff --git a/assets/index.js b/assets/index.js
index 45595ed..eed8c42 100644
--- a/assets/index.js
+++ b/assets/index.js
@@ -50,6 +50,8 @@ const IFRAME_FORMATS = [
".mp3", ".ogg", ".wav", ".m4a",
];
+const MAX_SUBPATHS_COUNT = 1000;
+
const ICONS = {
dir: ``,
symlinkFile: ``,
@@ -248,7 +250,7 @@ class Uploader {
progress(event) {
const now = Date.now();
const speed = (event.loaded - this.uploaded) / (now - this.lastUptime) * 1000;
- const [speedValue, speedUnit] = formatSize(speed);
+ const [speedValue, speedUnit] = formatFileSize(speed);
const speedText = `${speedValue} ${speedUnit}/s`;
const progress = formatPercent(((event.loaded + this.uploadOffset) / this.file.size) * 100);
const duration = formatDuration((event.total - event.loaded) / speed);
@@ -477,8 +479,8 @@ function addPath(file, index) {
${actionDelete}
${actionEdit}
`;
-
- let sizeDisplay = isDir ? `${file.size} ${file.size === 1 ? "item" : "items"}` : formatSize(file.size).join(" ");
+
+ let sizeDisplay = isDir ? formatDirSize(file.size) : formatFileSize(file.size).join(" ");
$pathsTableBody.insertAdjacentHTML("beforeend", `
@@ -878,7 +880,13 @@ function padZero(value, size) {
return ("0".repeat(size) + value).slice(-1 * size);
}
-function formatSize(size) {
+function formatDirSize(size) {
+ const unit = file.size === 1 ? "item" : "items";
+ const num = size >= MAX_SUBPATHS_COUNT ? `>${MAX_SUBPATHS_COUNT - 1}` : `${file.size}`;
+ return ` ${num} ${unit}`;
+}
+
+function formatFileSize(size) {
if (size == null) return [0, "B"];
const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
if (size == 0) return [0, "B"];
@@ -938,9 +946,9 @@ function decodeBase64(base64String) {
let i = 0;
for (; i < arr.length; i++) {
arr[i] = binString.charCodeAt(i * 4) |
- (binString.charCodeAt(i * 4 + 1) << 8) |
- (binString.charCodeAt(i * 4 + 2) << 16) |
- (binString.charCodeAt(i * 4 + 3) << 24);
+ (binString.charCodeAt(i * 4 + 1) << 8) |
+ (binString.charCodeAt(i * 4 + 2) << 16) |
+ (binString.charCodeAt(i * 4 + 3) << 24);
}
for (i = i * 4; i < len; i++) {
bytes[i] = binString.charCodeAt(i);
diff --git a/src/server.rs b/src/server.rs
index da9da9a..3f75b16 100644
--- a/src/server.rs
+++ b/src/server.rs
@@ -63,6 +63,7 @@ const BUF_SIZE: usize = 65536;
const EDITABLE_TEXT_MAX_SIZE: u64 = 4194304; // 4M
const RESUMABLE_UPLOAD_MIN_SIZE: u64 = 20971520; // 20M
const HEALTH_CHECK_PATH: &str = "__dufs__/health";
+const MAX_SUBPATHS_COUNT: u64 = 1000;
pub struct Server {
args: Args,
@@ -1410,6 +1411,9 @@ impl Server {
continue;
}
count += 1;
+ if count >= MAX_SUBPATHS_COUNT {
+ break;
+ }
}
count
}