Warren
4003864d28
Fix WebDAV: add Clone to WebdavCredentials
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-22 07:26:54 +08:00
Warren
a7f50ff747
Update WebDAV: root path + 0.0.0.0 bind
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-22 07:17:45 +08:00
Warren
9b02bbac27
A: Code quality improvements - fix clippy warnings
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Remove unused imports in server.rs (Body, HeaderValue, RwLock)
- Remove unused imports in forward_acl.rs (tests still need Ipv4Addr)
- Remove unused imports in host_key.rs (Read, Write)
- Remove unused imports in kex_exchange.rs (HostKeyType)
- Remove unused imports in known_hosts.rs (tests need Ipv4Addr)
- Remove unused imports in multiplex.rs (Arc)
- Auto-fix other unused imports via clippy --fix
Tests: 303 passed, 0 failed (4 new tests added)
2026-06-21 23:08:07 +08:00
Warren
49873cb302
Phase 5.1: AsyncVfsDavFs spawn_blocking wrapper complete
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- AsyncVfsDavFs wraps VfsDavFs with spawn_blocking
- All DavFileSystem methods offloaded to blocking thread pool
- Uses tokio::runtime::Runtime::block_on inside spawn_blocking
- Prevents blocking async executor during VFS operations
Tests: 293 passed, 0 failed
2026-06-21 21:33:43 +08:00
Warren
ed55c6050e
P2: Streaming read optimization (64KB chunk cache)
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add read_cache + read_cache_offset fields to VfsDavFile
- Read-ahead 64KB chunks to reduce VFS calls
- Serve from cache when data is available
- Invalidate cache on seek()
- Reduces memory allocations and VFS syscall overhead
Tests: 289 passed, 0 failed
2026-06-21 19:16:12 +08:00
Warren
9c82830959
P1: WebDAV ACL enforcement (RFC 3744)
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- Add enable_acl field to VfsDavFs
- Add check_acl() helper method
- ACL checks in open(), read_dir(), create_dir(), remove_dir(), remove_file(), rename()
- Uses VfsAceMask for permission checks (ReadData, WriteData, etc.)
- Returns FsError::Forbidden if ACL denies access
Tests: 289 passed, 0 failed
2026-06-21 18:37:48 +08:00
Warren
a56207db0b
P3: Quota enforcement - check before write in flush()
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- Check VfsBackend quota before writing buffered data
- Return FsError::InsufficientStorage (507) if limit exceeded
- Log warning with current/adding/limit values
Tests: 289 passed, 0 failed
2026-06-21 18:24:44 +08:00
Warren
12ec190831
Add Range request test: verify dav-server partial content support
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- test_range_request: GET with Range header returns 206 + partial content
- Verify Content-Range header present
- Test bytes=5-10 returns correct 6-byte slice
Tests: 289 passed, 0 failed
2026-06-21 18:21:48 +08:00
Warren
0322e2d4b6
WebDAV error handling improvements: map_vfs_error helper
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- Add map_vfs_error() to map VfsError to FsError properly
- NotFound → NotFound, PermissionDenied → Forbidden, etc.
- Update create_dir/remove_dir/remove_file/rename/set_atime/set_mtime/get_quota
- Add executable() method to VfsDavMetaData (mode & 0o111)
Tests: 288 passed, 0 failed
2026-06-21 16:50:23 +08:00
Warren
43c135e877
WebDAV additional fixes: dead props compaction + accessed metadata
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- save_props/patch_props: filter empty entries before persisting
- VfsDavMetaData: add accessed field + accessed() method
Tests: 288 passed, 0 failed
2026-06-21 16:45:03 +08:00
Warren
ab11983c1b
WebDAV MKCOL: return 405 Exists if directory already exists (RFC 4918)
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
P3 fix:
- create_dir: check vfs.exists() before creating
- Return FsError::Exists (405 Method Not Allowed) if path exists
Tests: 36 webdav tests pass
2026-06-21 16:16:43 +08:00
Warren
5000ba7c14
WebDAV async + cache TTL: spawn_blocking for props persistence, 5min TTL eviction
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
P2 improvements:
- patch_props: use tokio::spawn_blocking for blocking VFS writes
- WEBDAV_HANDLER_CACHE: add CachedHandler with Instant timestamp
- TTL check on each request (300s = 5 minutes), recreate if expired
- create_handler_for_user() helper function
Tests: 288 passed, 0 failed
2026-06-21 16:14:42 +08:00
Warren
9acd174388
WebDAV improvements: flush fix, RwLock recovery, expired lock cleanup, atomic set_times
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
P0 fixes:
- flush(): add flushed flag, proper error logging, Drop warning for data loss
- props_data RwLock: replace unwrap() with try_read/try_write recovery
- PersistedLs: add is_expired() + cleanup_expired_locks() helper
P1 improvements:
- Props persistence via VFS (load_props/save_props/patch_props)
- COPY/MOVE sync dead props (copy on COPY, move key on rename)
- Atomic set_atime/set_mtime via filetime crate (no race condition)
New files:
- webdav_locks.rs: PersistedLs with lock persistence + expiry cleanup
Tests: 288 passed, 0 failed
2026-06-21 16:07:12 +08:00
Warren
dbca6e6d35
Fix clippy warnings: unused imports, minor style fixes
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-20 21:08:50 +08:00
Warren
7eb528d35f
SMB Server Phase 2: VFS backend build fix + integration test
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- Add VfsFile: Send supertrait for Mutex compatibility
- Fix SmbServerCommand: struct → Subcommand enum with Start variant
- Fix tracing_subscriber::init() → try_init() to avoid panic when
logger already initialized
- Fix CLI subcommand name: smb-server → smb-start (flatten naming)
- Add #[command(name = "smb-start")] for CLI disambiguation
- Fix unused variable warnings (smb_fs.rs, smb_server_backend.rs)
- Remove unused VfsFile imports (webdav.rs, scp_handler.rs)
- Integration test: Docker smbclient verified (list, upload, read)
2026-06-20 19:42:29 +08:00
Warren
eb80c07c85
Implement WebDAV VFS integration: dav-server 0.11 compatible
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add webdav.rs module: VfsDavFs, VfsDavFile, VfsDavMetaData
- Implement DavFileSystem + Clone for GuardedFileSystem blanket impl
- Add clone_boxed to VfsBackend trait (required for Sync)
- Update CLI webdav.rs to use VFS instead of SQLite
- Add bytes dependency
- All 155 tests pass
2026-06-19 08:19:16 +08:00