Warren
20b208bb7f
Remove Download Center routes from server.rs (dead code cleanup)
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
Removed routes:
- /api/v2/products/* (CRUD + file assignment)
- /api/v2/download/* (file download + stats)
- /api/v2/files/:user_id (list + info via download module)
- /upload, /files, /products (HTML pages)
Kept: /api/v2/upload-unlimited, /downloads, category/series APIs
2026-06-22 11:00:41 +08:00
Warren
60e4329eed
Add VirtualFs tag-mode WebDAV + MyFiles UI + Admin WebDAV endpoint
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- VirtualFs: SQLite-backed virtual folders (tag mode), 16 unit tests
- MyFiles module: API endpoints + Web UI for folder/tag management
- Admin WebDAV: /admin-webdav/*path with Basic Auth + URI prefix rewrite
- CLI: webdav-folder/tag/untag/list/start --virtual-mode commands
- Deployed and tested on M5Max48: PROPFIND, PUT, GET, DELETE all working
2026-06-22 10:38:25 +08:00
Warren
37d0fe1a3c
Fix duplicate derive(Clone)
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-22 07:28:33 +08:00
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
8039f0d375
Fix WebDAV auth: use map_or for password check
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-22 07:25:53 +08:00
Warren
3d395584a8
Fix WebDAV: middleware use extensions().get() to not consume
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-22 07:23:57 +08:00
Warren
cf57d46ca5
Fix WebDAV: handle_dav extract WebdavCredentials Extension
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-22 07:22:01 +08:00
Warren
8a5a23a309
Fix WebDAV Extension layer order
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-22 07:20:34 +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
41f0217450
Update Caddyfile: studio.momentry.ddns.net/demo WebDAV config
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-22 06:51:51 +08:00
Warren
e7a9f886ed
Fix web server bind to 0.0.0.0 for external access
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-22 06:20:17 +08:00
Warren
cd184daa20
Update AGENTS.md: CTDB architecture analysis summary
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-22 05:37:12 +08:00
Warren
060f43f0c4
Add CTDB architecture analysis document
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
2026-06-22 05:36:23 +08:00
Warren
63b765f68e
Update AGENTS.md: Phase 5 complete summary
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
2026-06-22 05:31:26 +08:00
Warren
e9eca1b492
Add DFS Referral Support (Phase 5)
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-22 05:30:16 +08:00
Warren
4db72fff4a
Update AGENTS.md: Phase 6 complete summary
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
2026-06-22 05:22:54 +08:00
Warren
52c38b1919
Add SMB Configuration Templates (Phase 6)
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-22 05:22:14 +08:00
Warren
054bf55490
Update AGENTS.md: Phase 1-4 complete summary
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
2026-06-22 05:15:41 +08:00
Warren
e267b43424
Add Compound Request tests (Phase 4)
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-22 05:13:02 +08:00
Warren
c89f6c96ae
Update AGENTS.md: Phase 1-3 complete summary
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
2026-06-22 04:43:49 +08:00
Warren
ebe976eee4
Implement Write/Read Cache (Phase 3)
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-22 04:42:55 +08:00
Warren
9ae0402318
Document NTLMv2+LDAP incompatibility and skip Phase 2.3
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
2026-06-22 04:34:15 +08:00
Warren
3c5de4e6a3
Update AGENTS.md: LDAP Provider Phase 2.1-2.2 complete
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-22 04:13:59 +08:00
Warren
88590d3611
Add LDAP CLI parameters to SMB server (Phase 2.2)
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
2026-06-22 04:13:10 +08:00
Warren
912bc21929
Implement LDAP Provider Phase 2.1: DataProvider trait with OpenLDAP/AD support
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-22 03:34:17 +08:00
Warren
4ab282bbff
Update AGENTS.md: SMB3 encryption Phase 1 complete (v1.51)
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
2026-06-22 03:19:23 +08:00
Warren
382ea2e28b
Phase 1.3: SMB3 packet encryption handling complete
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add handle_encrypted_frame() to dispatch.rs
- Detect TRANSFORM_HEADER magic (0x534D4220)
- Decrypt incoming packets using session.encryption_key
- Encrypt outgoing responses
- All encryption tests pass (3 passed)
Phase 1 SMB3 encryption complete: ~380 lines total
2026-06-22 03:18:22 +08:00
Warren
98239c09d4
Phase 1.2: SMB3 encryption negotiation + session state
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- Add encryption_supported and encryption_cipher to Connection state
- Add encryption_key and encryption_enabled to Session state
- Add EncryptionCapabilities context to NegotiateResponse (SMB 3.1.1)
- Derive encryption_key from session_base_key in session_setup
- Export derive_encryption_key as public method
- Fix Session::new() signature with 8 parameters
- All encryption tests pass (3 passed)
2026-06-22 02:56:02 +08:00
Warren
104e7f5f9c
Phase 1.1: SMB3 encryption module (AES-CTR + HMAC)
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add encryption.rs with Smb3Encryption struct
- Implement AES-128-CTR + HMAC-SHA256 (simplified approach)
- Add TransformHeader struct for SMB2 TRANSFORM_HEADER
- 3 unit tests pass (encrypt/decrypt roundtrip + signature verification)
- Total: ~180 lines of code
2026-06-22 02:20:59 +08:00
Warren
097521b35d
P2: Fix S3 multipart route - use query param for action
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- Change route from /s3/multipart/:bucket/*key/init to /s3/multipart/:bucket/*key?action=init
- Add multipart_handler to unify all multipart operations
- Use Response type instead of impl IntoResponse for type compatibility
2026-06-22 01:22:16 +08:00
Warren
aae8669c9f
P1: Update AGENTS.md with S3 improvements (P0-P3) + benchmark scripts
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-22 01:15:49 +08:00
Warren
08244032a8
P0: Add S3 benchmark script
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- PUT/GET 1-100MB files
- LIST bucket, HEAD object
- DELETE cleanup
- Multipart upload simulation (5x10MB)
Tests throughput for all S3 operations
2026-06-22 00:06:35 +08:00
Warren
7d229d0b62
P0: Add performance benchmark scripts
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- webdav_benchmark.sh: PROPFIND, upload/download 1-100MB
- ssh_benchmark.sh: SCP, rsync upload/download, delta transfer
- Tests throughput for all file sizes
Ready for performance testing
2026-06-21 23:55:25 +08:00
Warren
321310582b
E: Security improvements - auth + policy enforcement
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- Add Signature V4 auth to multipart endpoints (init/upload/complete/abort)
- Add policy checks to main S3 handlers (get/put/delete)
- extract_user_from_auth() helper for policy evaluation
- check_bucket_policy() integrated into all handlers
- Policy denied returns 403 FORBIDDEN
Tests: 299 passed, 0 failed
2026-06-21 23:43:24 +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
02d98419e1
P3: Bucket Policy implementation complete
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- BucketPolicy struct with Version + Statement array
- PolicyStatement: Effect, Principal, Action, Resource, Condition
- Principal matching (wildcard + user-specific)
- Action/Resource pattern matching with wildcards
- GetBucketPolicy: GET /s3/policy/:bucket
- PutBucketPolicy: PUT /s3/policy/:bucket
- DeleteBucketPolicy: DELETE /s3/policy/:bucket
- Policy persistence to data/s3_policies/:bucket/policy.json
- check_bucket_policy() for authorization
- 6 unit tests
Tests: 299 passed, 0 failed
2026-06-21 22:50:53 +08:00
Warren
ca0f541a79
P2: S3 Multipart Upload support complete
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- InitiateMultipartUpload: POST /s3/multipart/:bucket/:key/init
- UploadPart: PUT /s3/multipart/:bucket/:key/part
- CompleteMultipartUpload: POST /s3/multipart/:bucket/:key/complete
- AbortMultipartUpload: DELETE /s3/multipart/:bucket/:key/abort
- In-memory upload tracking with once_cell::Lazy
- Part files stored in temp dir during upload
- Final file assembled on CompleteMultipartUpload
- XML responses for all operations
Tests: 293 passed, 0 failed
2026-06-21 22:44:17 +08:00
Warren
5487ad63a6
P1: AsyncS3Vfs native async implementation using reqwest
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- Replace spawn_blocking + ureq with native async reqwest
- AsyncS3Vfs uses reqwest::Client for HTTP operations
- rusty-s3 for presigned URL generation + XML parsing
- AsyncS3File with async read/write/seek/flush
- reqwest dependency added under async-vfs feature
Tests: 297 passed (293 + 4 new s3_auth tests)
2026-06-21 22:22:05 +08:00
Warren
f5074b2ce2
P0: AWS Signature V4 implementation complete
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Full Canonical Request with signed headers
- Proper URI encoding (encode_slash option)
- X-Amz-Date timestamp support
- SignedHeaders extraction from Authorization header
- Payload hash from X-Amz-Content-Sha256
- 4 unit tests passing
Tests: 297 passed (293 + 4 new)
2026-06-21 22:14:34 +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
c2ff6fc90e
Phase 5: WebDAV async integration analysis - API mismatch found
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- dav-server DavFileSystem API changed (20+ compile errors)
- read_dir takes ReadDirMeta, not depth
- have_props/get_props/get_prop/patch_props new methods
- DavFile needs write_buf method
- DavMetaData/DavDirEntry async return types changed
Recommended approach: spawn_blocking wrapper (~2h)
Alternative: full rewrite (~8h)
Phase 5 blocked pending API analysis
2026-06-21 21:28:39 +08:00
Warren
23e0996b81
Phase 5: WebDAV async integration design framework
...
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
- Detailed design notes for AsyncVfsDavFs
- AsyncVfsDavFile implementation pattern
- DavFileSystem trait async implementation
- Estimated: ~3 hours for full implementation
Phase 5 framework documented for future implementation
2026-06-21 21:20:47 +08:00
Warren
94a7584e64
P1: AsyncSmbVfs implementation (Phase 4)
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- AsyncSmbVfs: spawn_blocking wrapper over SmbVfs
- AsyncSmbFile: tokio::sync::Mutex for async state
- Add Clone derive to SmbVfs (Arc<Mutex<Tree>>)
- Remove manual Clone impl (derive handles it)
Phase 4 complete: AsyncSmbVfs working
Phase 5 pending: WebDAV integration
Tests: 293 passed, 0 failed
2026-06-21 21:16:50 +08:00
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
2a0376cc58
Update AGENTS.md: Phase 22 complete with 10 commits summary
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
2026-06-21 18:31:08 +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