Warren
5c9b51fc49
P1: AsyncS3Vfs implementation (Phase 3)
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- AsyncS3Vfs: spawn_blocking wrapper over S3Vfs
- AsyncS3File: tokio::sync::Mutex for async state
- Add Clone derive to S3Vfs
- All backend methods wrapped with spawn_blocking
Phase 3 complete: AsyncS3Vfs working
Phase 4 pending: AsyncSmbVfs
Phase 5 pending: WebDAV integration
Tests: 293 passed, 0 failed
2026-06-21 21:08:48 +08:00
Warren
790efe13f4
P1: AsyncLocalFs implementation (Phase 2)
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- AsyncLocalFile: tokio::fs::File wrapper
- AsyncLocalFs: AsyncVfsBackend impl using tokio::fs
- Key methods: read_dir, open_file, stat, create_dir, remove_file, rename
- 4 async tests passing
Phase 2 complete: AsyncLocalFs working
Phase 3 pending: AsyncS3Vfs
Phase 4 pending: AsyncSmbVfs
Phase 5 pending: WebDAV integration
Tests: 293 passed, 0 failed
2026-06-21 20:59:41 +08:00
Warren
6242a5eaab
P1: AsyncVfsBackend trait design (Phase 1 - framework)
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- Add AsyncVfsBackend + AsyncVfsFile trait definitions
- Use cfg(feature = "async-vfs") for optional compilation
- Design notes for Phase 2-5 implementation
- Estimated: ~13 hours (multi-day project)
Phase 2: AsyncLocalFs (tokio::fs)
Phase 3: AsyncS3Vfs (async client)
Phase 4: AsyncSmbVfs (async wrapper)
Phase 5: WebDAV integration
Tests: 289 passed, 0 failed
2026-06-21 20:52:31 +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
b71510b2e8
P0 fix: Mutex/RwLock poison recovery for webdav_locks and webdav_version
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- Add recover_mutex() helper in webdav_locks.rs
- Add recover_rwlock() helper in webdav_version.rs
- Replace all .unwrap() calls with recovery pattern
- Tests: 288 passed, 0 failed
2026-06-21 18:11: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
a475de45c9
Add SSH Port Forwarding ACL (Phase 1-3): prevent SSH tunnel abuse
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
Features:
- ForwardRule: Allow/Deny rules with address/port specifications
- ForwardAcl: User-specific ACL with priority-based rule matching
- ForwardAclManager: Global ACL manager for all users
- OpenSSH-style PermitOpen/PermitListen parsing
- 8 unit tests for all operations
Security:
- Prevent unauthorized SSH tunnel creation
- Restrict forwarding to specific hosts/ports
- Default deny policy for unknown users
Files:
- markbase-core/src/ssh_server/forward_acl.rs (493 lines)
- markbase-core/src/ssh_server/mod.rs (+1 line)
Tests: 317 passed (+8)
2026-06-21 12:48:56 +08:00
Warren
204186e34b
Add WebDAV Versioning (Phase 1-5): version control with history tracking
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
Features:
- WebDavVersioning: Version control using HashMap storage
- VersionInfo/VersionHistory: Version metadata structures
- create_version/get_version/delete_version operations
- restore_version: Restore from previous version
- SHA-256 checksum calculation
- 11 unit tests for all operations
Files:
- markbase-core/src/webdav_version.rs (391 lines)
- markbase-core/src/lib.rs (add module)
Tests: 309 passed (+11)
2026-06-21 12:15:37 +08:00
Warren
2ca543fd66
Add SSH Structured Logging (Phase 1-5): ssh_audit_log.rs module with JSON tracing
...
Features:
- SshAuditLog: Structured audit logging using tracing crate
- 16 audit event types (connection/auth/command/file/port_forward)
- JSON output format via tracing-subscriber json layer
- 10 unit tests for all audit events
Files:
- markbase-core/src/ssh_server/ssh_audit_log.rs (289 lines)
- markbase-core/Cargo.toml (tracing + json layer)
- markbase-core/src/ssh_server/mod.rs (export module)
Tests: 298 passed (+10)
2026-06-21 11:29:04 +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
d368a7a4c0
Implement SSH Multiplexing: Connection/Session/Channel management with expiration and cleanup
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-21 05:31:06 +08:00
Warren
30c1e5fff9
Implement SSH Known Hosts Verification: Parse ~/.ssh/known_hosts + verify host keys + hashed host support
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
2026-06-21 05:24:33 +08:00
Warren
b014390d12
Implement SSH Connection Rate Limiting: IP rate limit + global rate limit + auth brute force prevention
2026-06-21 05:01:04 +08:00
Warren
56e73ad8a4
Implement SSH Host Key Management (Phase 1): Generate/Load/Rotate Ed25519 keys
2026-06-21 04:57:15 +08:00
Warren
bb886449d7
Implement SSH config file support Phase 1
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- ssh_config.rs module with SshConfigParser
- Parse ~/.ssh/config format (OpenSSH standard)
- SshHostConfig struct with common options:
HostName, User, Port, IdentityFile
PreferredAuthentications, Ciphers, MACs, KexAlgorithms
Compression, ConnectTimeout, ServerAliveInterval
StrictHostKeyChecking, ProxyCommand, ProxyJump
- Merge default config (*) with host-specific config
- Unit tests: 5 tests (parse_simple, parse_default, identity_file, list_hosts)
All 187 tests pass.
2026-06-21 02:36:32 +08:00
Warren
b24e4f727b
Implement SSH X11 forwarding Phase 4: Save X11ForwardContext
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Save X11ForwardContext to Channel.x11_forward_context
- Clone context for later use in data forwarding
- Prepare for actual X11 data forwarding in handle_channel_data
All 182 tests pass.
2026-06-21 02:32:32 +08:00
Warren
df707bee7e
Implement SSH X11 forwarding Phase 3: Channel structure
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- Add x11_forward_context field to Channel struct
- Initialize x11_forward_context: None in all Channel creations
- Prepare for actual X11 data forwarding
All 182 tests pass.
2026-06-21 02:29:56 +08:00
Warren
d3997acfcc
Implement SSH X11 forwarding Phase 2
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add 'x11' channel type in handle_channel_open()
- Add handle_x11_channel_open() method
- Add 'x11-req' request in handle_channel_request()
- Add handle_x11_request() method
- Parse x11-req parameters (single_connection, auth_protocol, auth_cookie, screen_number)
- Create X11ForwardContext from DISPLAY env
All 182 tests pass.
2026-06-21 02:20:46 +08:00
Warren
929ad150d8
Implement SSH X11 forwarding Phase 1
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- x11_forward.rs module with X11ForwardContext
- parse_display() to parse DISPLAY env variable
- read_xauthority_cookie() to read MIT-MAGIC-COOKIE-1
- X11Connection for socket forwarding
- Unit tests: parse_display/disabled/display_env
All tests pass.
2026-06-21 02:11:55 +08:00
Warren
913296fe96
Implement SSH Compression Phase 3: Actual packet compression
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- EncryptedPacket::new(): compress payload before encryption
- EncryptedPacket::read(): decompress payload after decryption
- Apply to AES-GCM, ChaCha20-Poly1305, and AES-CTR modes
- Compression order: compress → encrypt (write)
- Decompression order: decrypt → decompress (read)
All 179 tests pass.
2026-06-21 02:07:35 +08:00
Warren
93e33b04a7
Implement SSH Compression Phase 2: Integration
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- Add compression_ctos/compression_stoc to EncryptionContext
- Default impl: CompressionContext::new(6)
- from_session_keys(): initialize compression fields
- enable_compression() method (based on KEX negotiation)
- server.rs: enable compression after NEWKEYS (if negotiated)
All 179 tests pass.
2026-06-21 01:51:39 +08:00
Warren
a5375075b8
Implement SSH Compression support Phase 1
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- compression.rs module with CompressionContext
- Compress/Decompress using flate2 (raw deflate, no zlib header)
- enable/disable/is_enabled methods
- compress/decompress with Sync flush
- Unit tests: disabled/enabled/roundtrip/supported
All tests pass.
2026-06-21 01:40:07 +08:00
Warren
487b4450f8
Implement SSH Banner/MOTD support
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add banner and banner_file fields to SshSecurityConfig
- Enterprise default: 'MarkBaseSSH - Secure File Transfer Server'
- Support banner_file for reading from /etc/motd
- Send SSH_MSG_USERAUTH_BANNER before USERAUTH_SUCCESS
- Pass security_config to perform_ssh_auth function
All 229 tests pass.
2026-06-20 23:33:19 +08:00
Warren
783356852e
Implement SSH Keep-alive support
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- Add keep_alive_interval and keep_alive_max_count to SshSecurityConfig
- Enterprise default: 15s interval, 3 max failures
- Development default: 30s interval, 5 max failures
- Track last_activity timestamp in service loop
- Send keepalive@openssh.com channel request when idle
- Disconnect after max keepalive failures
- Add build_keepalive_request() and get_first_session_channel()
- Prevents connection timeout on idle SSH sessions
All 229 tests pass.
2026-06-20 23:29:14 +08:00
Warren
82ff713b24
Implement SSH Agent forwarding support
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add auth_agent_socket field to Channel struct
- Add handle_auth_agent_request() for auth-agent-req@openssh.com
- Check SSH_AUTH_SOCK environment variable for agent socket
- Respond with SSH_MSG_CHANNEL_SUCCESS if agent available
- Foundation for SSH agent forwarding through jump hosts
All 229 tests pass.
2026-06-20 23:25:38 +08:00
Warren
4afd96c9ac
Implement VFS RAID-Z (software RAID)
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add VfsRaidLevel enum:
- Single (no RAID)
- RaidZ1 (single parity, similar to RAID 5)
- RaidZ2 (double parity, similar to RAID 6)
- RaidZ3 (triple parity)
- Add VfsRaidBackend with:
- Stripe-based data distribution across disks
- Galois Field arithmetic for parity (P/Q/R)
- gf_exp, gf_mul for Reed-Solomon coding
- rebuild_disk() for disk recovery
- Add VfsRaidConfig:
- level (RAID level)
- stripe_size (default 64KB)
- disk_paths (storage devices)
- All VfsBackend methods propagate to all disks
- Foundation for ZFS-style software RAID
All 229 tests pass.
2026-06-20 23:17:00 +08:00
Warren
37f5da7d6c
Implement VFS Deduplication (block-level)
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add DedupStore with content-addressable storage:
- SHA-256 hash-based block storage
- Reference counting for block lifecycle
- dedup_file() and restore_file() operations
- DedupManifest for file reconstruction
- DedupStats for storage statistics
- Add VfsDedupConfig:
- block_size (default 4KB)
- min_file_size threshold
- store_path for dedup directory
- Add hex crate for hash encoding
- Block-level dedup foundation for SMB/ZFS
All 229 tests pass.
2026-06-20 22:39:25 +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
70cc6d9921
Implement VFS compression support (ZSTD)
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add VfsCompression and VfsCompressionConfig types
- Add compression module with Compressor:
- compress/decompress methods
- compress_file/decompress_file utilities
- should_compress threshold check
- extension detection (.zst, .lz4)
- Add zstd crate dependency
- LZ4 placeholder (future implementation)
Enables SMB transparent compression.
All 229 tests pass.
2026-06-20 22:21:50 +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
7b033e5276
Implement SMB streaming read using chunked READ requests
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add file_id and read_chunk_size fields to SmbVfsFile
- Use Tree::open_file() to get file_id for reads
- Issue READ requests on each read() call (64KB chunks)
- Close file handle in Drop
Benefits:
- No memory overhead for large files
- Read-ahead caching possible
- Compatible with SMB2 protocol
All 229 tests pass.
2026-06-20 21:24:55 +08:00
Warren
c91dbe2cc3
Fix SSH cipher key length: dynamically determine based on negotiated algorithm
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add cipher_key_len() helper function
- Store encryption_ctos/stoc in KexExchangeHandler
- Use algorithm name to determine key_len (aes256 → 32, aes128 → 16)
- Remove hardcoded cipher_key_len=32 TODO
All 229 tests pass.
2026-06-20 21:16:25 +08:00
Warren
914eacb230
Suppress non_snake_case warning for RFC 4253 notation (K, H, X)
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-20 21:10:28 +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
3986fb28fb
SMB CLI: Add S3 VFS backend support (--s3 flag)
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
Usage:
smb-start --s3 --s3-endpoint https://s3.example.com --s3-bucket mybucket --s3-access-key AKIA... --s3-secret-key secret...
All SMB operations now work over S3-compatible storage.
All 229 tests pass.
2026-06-20 20:49:22 +08:00
Warren
d1467f03bd
SMB CLI: Add multi-user support (--user name:password)
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add --user CLI argument (repeatable) format: name:password
- Default user 'demo:demo123' if no users specified
- All users get ReadWrite access to the share
- Note: SMB3 encryption not available (smb-server v1 out of scope)
Example:
smb-start --user alice:pass1 --user bob:pass2 --share-name myshare
All 229 tests pass.
2026-06-20 20:44:23 +08:00
Warren
51ca0c4633
SMB VFS: Add set_len, set_stat, streaming write, auto_reconnect
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- set_len() via SMB SET_INFO compound (CREATE → SET_INFO → CLOSE)
with FileEndOfFileInformation (class 14)
- set_stat() via SMB SET_INFO compound with FileBasicInformation (class 4)
for timestamp updates (atime, mtime)
- Streaming write using Tree::create_file_writer + FileWriter::write_chunk
+ finish for pipelined uploads
- Add file_writer: Option<FileWriter> to SmbVfsFile for streaming state
- Enable auto_reconnect by default (new_with_options param)
- Add systemtime_to_filetime helper for timestamp conversion
All 229 tests pass.
2026-06-20 20:26:35 +08:00
Warren
8a85c2ef7c
SMB comprehensive unit tests (229 passed, 0 failed)
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
smb_server_backend.rs tests (+135 lines):
- Full VfsHandle lifecycle: file create/write/read/flush/close, stat,
truncate (zero + extend), set_times, list_dir error, write past end
- Directory: create/stat/list/close, contains-created-file, read/write/truncate
error cases
- All OpenIntent variants: Create (new + existing fail), OpenOrCreate
(new + existing), OverwriteOrCreate (new + truncate existing), Truncate
(existing + nonexistent fail)
- Directory OpenIntent: Create (new + existing fail), Open (existing),
OpenOrCreate (new + existing)
- non_directory flag on dir (IsDirectory), directory flag on file (NotADirectory)
- Unlink: file, directory, nonexistent (NotFound)
- Rename: success + content preserved, nonexistent source (NotFound),
existing target (Exists)
- Error mapping: all 8 VfsError variants (adds Unsupported, UnexpectedEof)
- FILETIME: roundtrip, below-offset returns epoch, exactly-offset
- vfs_stat_to_file_info: custom name, dir name from path, alloc_size
smb_fs.rs tests (+40 lines):
- Error mapping: NotFound, AlreadyExists, AccessDenied, IsADirectory,
NotADirectory, DiskFull, SharingViolation, ConnectionLost, TimedOut,
SessionExpired, InvalidData, Auth, Io, Cancelled
- Filetime: conversion, below-epoch, exact epoch boundary
- Path: leading slash stripping, root, deep paths
- Rejects trailing backslash
2026-06-20 19:57:20 +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
45d050c0b3
P0: exit-status for subsystem, improved error msgs, integration test suite
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-20 16:40:29 +08:00
Warren
5b439dfbef
Phase 17: SCP over SFTP subsystem + EOF/CLOSE fixes
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
2026-06-20 16:31:00 +08:00