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
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
3d0d031677
Add SMB Previous Versions tests: GMT token generation and snapshot listing/open/restore verification
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
2026-06-21 06:20:17 +08:00
Warren
1ca4913291
Implement SMB ACLs (NFSv4) at VFS layer
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add ACL structures:
- VfsAceType (Allow/Deny/Audit/Alarm)
- VfsAceFlag (inheritance flags)
- VfsAceMask (permission masks)
- VfsAce (access control entry)
- VfsAcl (ACL list with default_acl)
- Add VfsBackend methods:
- get_acl() - retrieve ACL from .acl JSON
- set_acl() - store ACL as .acl JSON
- check_acl() - check permission for principal
- add_ace() - add ACE to ACL
- remove_ace() - remove ACE by index
- LocalFs implementation:
- VfsAclMeta serialization struct
- ACL stored as JSON metadata (similar to quota/snapshot)
- Box<VfsAcl> for recursive default_acl
- Foundation for SMB/NFSv4 ACL support
All 229 tests pass.
2026-06-20 22:33:03 +08:00
Warren
837ffa923d
Implement SMB Previous versions (shadow copy) at VFS layer
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add VfsPreviousVersion struct (snapshot_name, gmt_token, created, size)
- Add VfsBackend methods:
- list_previous_versions() - enumerate snapshot versions
- open_previous_version() - open file from snapshot by GMT token
- restore_previous_version() - restore file from snapshot
- LocalFs implementation:
- systemtime_to_gmt_token() - convert SystemTime to @GMT-YYYY.MM.DD-HH.MM.SS
- scan .snapshots directory for matching versions
- use existing restore_snapshot() for restoration
- Foundation for SMB shadow copy (@GMT- token support)
All 229 tests pass.
2026-06-20 22:26:58 +08:00
Warren
9c44bd5929
Implement VFS quota support
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add VfsQuota and VfsQuotaUsage structs
- Add quota methods to VfsBackend trait:
- set_quota: set space/file limits
- get_quota: retrieve quota settings
- get_quota_usage: current usage stats
- check_quota: pre-write check
- Implement LocalFs quota support:
- Uses .quota metadata file
- JSON storage for quota limits
- Recursive size/file counting
- Hidden files excluded (.quota, .snapshots)
Enables SMB per-share/user quota enforcement.
All 229 tests pass.
2026-06-20 22:17:50 +08:00
Warren
f016525687
Implement VFS snapshot support (ZFS-style)
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add VfsSnapshotInfo struct
- Add snapshot methods to VfsBackend trait:
- create_snapshot: copy-on-write with metadata
- list_snapshots: enumerate snapshots
- delete_snapshot: remove snapshot and metadata
- restore_snapshot: restore from snapshot
- snapshot_info: get snapshot metadata
- Implement LocalFs snapshot support:
- Uses .snapshots directory for storage
- JSON metadata files (*.meta)
- Recursive directory copy
- Size calculation
This enables SMB 'Previous versions' feature foundation.
All 229 tests pass.
2026-06-20 22:13:17 +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
Warren
d94cb2df4c
Fix code quality: trailing whitespace, unused imports, clippy warnings
...
- Fix trailing whitespace in kex.rs and s3.rs
- Add missing KexProposal import in kex_complete.rs
- Auto-fix clippy warnings across all crates
- All 153 tests pass
2026-06-19 05:21:38 +08:00
Warren
f90e4f496c
VFS/DataProvider/Config refactoring + SSH public key authentication
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
Phase 1-6 of refactoring plan:
- VFS abstraction (VfsBackend trait + LocalFs + OpenFlags builder)
- DataProvider trait (SqliteProvider + PgProvider, SFTPGo-compatible)
- Config refactoring (AppConfig unified sections, env overrides)
- SSH handlers (sftp/scp/rsync) migrated to VFS + DataProvider
- SSH public key authentication (Ed25519 signature verification)
- SSH stderr → CHANNEL_EXTENDED_DATA support
- Web auth uses DataProvider instead of direct SQL
- User home directory from provider (per-user isolation)
- PostgreSQL auth provider for SFTPGo compatibility
2026-06-18 23:35:18 +08:00