houseme
841f86fe90
test(property): expand parser invariants ( #3534 )
...
* test(property): harden parser invariants for #3522
* test(property): satisfy clippy for #3522
2026-06-17 23:52:30 +08:00
安正超
ed55857bca
refactor: move bucket operations contract ( #3507 )
2026-06-17 09:10:38 +08:00
houseme
efaf07d323
feat: preserve request ids across async recovery logs ( #3451 )
...
* feat(obs): promote request ids in structured logs
* refactor(tracing): propagate spans into request tasks
* test(ecstore): baseline recovery monitor log chains
* fix(replication): reduce startup resync log noise
* chore(docs): stop tracking local recovery baseline
* chore(obs): polish request id logging cleanup
2026-06-14 23:16:04 +08:00
安正超
84f7027e90
refactor: add object store resolver for standalone crates ( #3437 )
2026-06-14 18:02:39 +08:00
houseme
e8012bd1ba
refactor(logging): normalize admin telemetry and error messages ( #3430 )
2026-06-14 13:27:10 +08:00
houseme
efa89a98ed
refactor(logging): standardize protocol and observability events ( #3419 )
...
* refactor(logging): standardize object capacity events
* refactor(logging): standardize protocol server events
* refactor(logging): standardize swift protocol events
* refactor(logging): standardize observability events
* refactor(logging): move masking helper and extend guardrails
2026-06-14 07:14:45 +08:00
escapecode
b6973636b6
docs(sftp): document server operations ( #3391 )
...
Adds an operator guide for the SFTP server: recommended
configuration, the path model, host keys on Unix and Windows, the
environment variable reference, session cleanup behaviour, IAM
policy requirements per SFTP operation, client compatibility
notes, multipart upload sizing and cleanup, and the log lines
worth alerting on.
Corrects documentation the platform change left stale. The module
overview and the UnsupportedPlatform error text still described
Windows as unsupported. A source comment referenced a document
that does not exist in the repository and now points at the new
guide. The changelog adds the two host-key reload variables
missing from its environment list, describes the banner variable
as the SSH identification string, and corrects the upload size
cap and compliance case count.
2026-06-12 22:52:00 +08:00
escapecode
7a8514bdfa
feat(sftp): add macOS and Windows platform support ( #3372 )
...
The session watchdog now selects its detection method per
platform. It previously probed kernel TCP state through a
Linux-only procfs path, so on macOS every healthy idle session
was killed within a minute, and on Windows the watchdog never
spawned at all, leaving wedged sessions with no cleanup. Linux
keeps its fast-kill watchdog unchanged. Other platforms get a
silence-only backstop that kills a session only at the
documented 30-minute idle ceiling.
The host-key loader now has a Windows arm. It loads OpenSSH
format host keys from the configured directory and logs a
one-time warning to restrict NTFS ACLs on the key directory,
the same operator-managed approach FTPS, WebDAV, KMS, and IAM
already use on Windows. Startup previously aborted with
UnsupportedPlatform because the Unix mode-bit permission check
has no Windows equivalent. tokio's io-uring feature is now
enabled only in Linux builds. io-uring is a Linux kernel
interface and enabling it unconditionally broke the Windows
build.
Co-authored-by: houseme <housemecn@gmail.com >
2026-06-12 18:08:23 +08:00
安正超
7146c893cb
refactor(storage-api): remove legacy bucket DTO re-export ( #3364 )
2026-06-11 21:24:56 +08:00
安正超
d60deba9b6
fix(security): add IAM authorization to FTP read/metadata/cwd handlers (GHSA-3g29-xff2-92vp) ( #3347 )
...
fix(security): add IAM authorization to FTP read/metadata/cwd handlers
The FTP frontend's get() (RETR), metadata() (SIZE/MDTM), and cwd()
(CWD) handlers dispatched directly to the storage backend without
calling authorize_operation(). This allowed any authenticated FTP user,
including those with explicit Deny policies, to read arbitrary objects
and probe bucket existence regardless of IAM policy.
Add authorize_operation() calls matching the pattern used by the
write-path handlers (put, del, list, rmd) and the WebDAV driver:
- get(): S3Action::GetObject
- metadata() for files: S3Action::HeadObject
- metadata() for directories: S3Action::HeadBucket
- cwd(): S3Action::HeadBucket
Fixes: GHSA-3g29-xff2-92vp
Co-authored-by: houseme <housemecn@gmail.com >
2026-06-11 05:48:53 +00:00
安正超
97dd825468
fix(ecstore): optimize ObjectInfo clone and fix critical TODOs ( #3149 )
...
* fix(ecstore): optimize ObjectInfo clone and fix critical TODOs
## ObjectInfo hot-path clone optimization (issue #653 item 2)
- Wrap user_defined (HashMap), user_tags (String), parts (Vec) in Arc
- Clone cost reduced from ~20 heap allocations to O(1) ref count bump
- Updated 11 downstream access sites with explicit deref where needed
## Critical TODO/FIXME fixes (issue #653 item 7)
- rpc/peer_s3_client.rs: descriptive error message for empty peer response
- set_disk/write.rs: concurrent rollback deletes via tokio::spawn + join_all
- store_list_objects.rs: resolved FIXME with explanation + 4 regression tests
- store/bucket.rs: namespace write locks for make_bucket and delete_bucket
Skipped TODOs (too risky without broader context):
- multipart.rs:30 nslock — causes lock timeout in existing tests
- bucket.rs:88 cached list_bucket — needs cache invalidation strategy
- bucket.rs:149 replication delete — needs replication subsystem integration
1134 tests pass (1 flaky under parallel execution, passes individually).
* fix: address PR #3149 review comments
- Preserve NamespaceLockQuorumUnavailable variant in bucket create/delete
- Fix cancellation test to actually test cancellation (keep senders open)
- Update ObjectInfo consumers in app/ for Arc-backed fields
- Update bucket_usecase.rs user_tags to Arc<String>
* fix: update ObjectInfo Arc consumers
* fix: address ecstore merge review comments
* fix: cancel blocked merge output sends
* fix(ecstore): satisfy ObjectInfo clone clippy
2026-06-01 00:44:58 +00:00
houseme
d74e6eb042
refactor(tls): centralize runtime foundation ( #3065 )
...
* refactor(targets): move notify net helpers from utils
* refactor(tls): centralize runtime foundation
* refactor(targets): move notify net helpers from utils
* refactor(tls): centralize runtime foundation
* feat(tls-runtime): add TLS debug state and admin handler
* refactor(tls-runtime): unify TLS debug consumer status view
* fix(tls): address PR3065 review feedback
* refactor(tls): align debug status payload types
* refactor(targets): harden TLS hot reload paths
* fix(targets): resolve review-4348251652 findings
* fix(targets): finalize tls runtime review follow-ups
* fix(targets): harden tls reload and review follow-ups
* fix(targets): align tls reload handling across targets
* fix(targets): finalize tls reload state and metrics updates
* chore(deps): trim unused TLS deps
* style(targets): normalize TLS reload formatting
* refactor(targets): introduce tls runtime adapter path
* chore: update workspace manifests for tls refactor
* fix(tls): stabilize material reload and audit workflow
* fix(targets): refresh tls fingerprint flow across sinks
* fix(tls): align runtime coordinator and http reader updates
* fix(sftp): simplify protocol error mapping
* fix(tls): harmonize material loading behavior
* fix(server): finalize tls material wiring in startup flow
* fix(protos): tighten tls generation cache and deps
2026-05-24 06:41:15 +00:00
Henry Guo
bca8b08c2b
fix: handle Windows paths in pre-commit tests ( #2974 )
...
Co-authored-by: houseme <housemecn@gmail.com >
2026-05-15 14:04:51 +00:00
安正超
fd3fb77ed5
fix(sftp): avoid metadata on multipart copy ( #2935 )
...
Co-authored-by: houseme <housemecn@gmail.com >
2026-05-13 07:44:09 +00:00
Henry Guo
fe5690ca70
fix(sftp): preserve open attrs metadata ( #2929 )
...
Co-authored-by: houseme <housemecn@gmail.com >
2026-05-12 13:34:52 +00:00
安正超
25cf164461
test(protocols): cover SFTP host key reload failure ( #2928 )
...
Co-authored-by: houseme <housemecn@gmail.com >
2026-05-12 10:40:23 +00:00
安正超
8169bd63e9
test(protocols): cover TLS reload fingerprint ordering ( #2927 )
2026-05-12 02:50:49 +00:00
houseme
6185d38911
fix(protocols): add hot reload for WebDAV FTPS and SFTP ( #2922 )
...
Signed-off-by: houseme <housemecn@gmail.com >
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-05-11 16:25:20 +00:00
Henry Guo
1c94f7a066
fix(sftp): classify backend errors by type ( #2909 )
2026-05-11 02:56:08 +00:00
houseme
53ec1b95d8
keep sftp e2e tests buildable ( #2897 )
2026-05-10 11:52:15 +00:00
安正超
65c62ab2ea
test(sftp): cover init session activity stamp ( #2898 )
2026-05-10 09:57:04 +00:00
安正超
c419cff348
test(sftp): cover init negotiation and platform gating ( #2896 )
2026-05-10 05:59:10 +00:00
escapecode
96b293bf8a
feat(sftp): add SFTPv3 protocol support ( #2875 )
...
Co-authored-by: houseme <housemecn@gmail.com >
2026-05-10 03:48:42 +00:00
houseme
8892cbbdd7
feat: enhance WebDAV support with features and directory operations ( #2856 ) ( #2892 )
...
Signed-off-by: giter <giter@users.noreply.github.com >
Signed-off-by: 安正超 <anzhengchao@gmail.com >
Co-authored-by: giter <giter@users.noreply.github.com >
Co-authored-by: 安正超 <anzhengchao@gmail.com >
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
Co-authored-by: Lijiajie <lijiajie@ffcode.net >
Co-authored-by: cxymds <Cxymds@qq.com >
Co-authored-by: loverustfs <hello@rustfs.com >
Co-authored-by: 唐小鸭 <tangtang1251@qq.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: houseme <4829346+houseme@users.noreply.github.com >
2026-05-09 16:45:09 +00:00
安正超
61d2e9fbc3
test(webdav): cover decoded path parsing ( #2729 )
...
Co-authored-by: houseme <housemecn@gmail.com >
2026-04-29 07:30:40 +00:00
giter
90ce72122b
fix(webdav): decode URL-encoded filenames in path parsing ( #2722 )
...
Signed-off-by: giter <giter@users.noreply.github.com >
2026-04-28 14:06:05 +00:00
houseme
f77ccd5b23
chore: move mcp crate to standalone repository ( #2578 )
2026-04-17 12:42:26 +00:00
安正超
68d3dba9fc
fix: revert standalone #2351 artifacts (phase 5) ( #2535 )
2026-04-14 22:35:05 +08:00
安正超
2a3d127a86
revert: restore PutObjReader and remove PUT zero-copy chunk path ( #2351 phase 2) ( #2532 )
2026-04-14 16:35:03 +08:00
houseme
979626c370
refactor(utils): decouple config deps and move sys helpers ( #2520 )
...
Co-authored-by: houseme <4829346+houseme@users.noreply.github.com >
2026-04-13 21:05:03 +08:00
houseme
32bf8f5bf3
feat(storage): add direct chunk GET fast path ( #2351 )
...
Signed-off-by: houseme <housemecn@gmail.com >
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: cxymds <Cxymds@qq.com >
2026-04-07 08:33:46 +08:00
weisd
5d302febb7
fix(rio): preserve reader capabilities and crypto safety ( #2363 )
2026-04-03 13:57:42 +08:00
houseme
19b8389dc4
fix(disk): Fix Usage Report Capacity Calculation ( #2274 )
...
Co-authored-by: cxymds <Cxymds@qq.com >
Co-authored-by: loverustfs <hello@rustfs.com >
Co-authored-by: heihutu <heihutu@gmail.com >
2026-03-24 23:47:30 +08:00
heihutu
3c28f0a0ba
feat(metrics): migrate system monitoring from rustfs-obs to rustfs-metrics ( #2242 )
...
Co-authored-by: houseme <housemecn@gmail.com >
2026-03-20 18:52:33 +08:00
yxrxy
d3cff7d033
feat(webdav): add WebDAV protocol gateway ( #2158 )
...
Signed-off-by: yxrxy <1532529704@qq.com >
Co-authored-by: houseme <housemecn@gmail.com >
Co-authored-by: 马登山 <Cxymds@qq.com >
Co-authored-by: heihutu <30542132+heihutu@users.noreply.github.com >
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
Co-authored-by: 安正超 <anzhengchao@gmail.com >
2026-03-14 23:06:53 +08:00
安正超
9908a44c38
fix(protocols): return errors instead of panics for sync signatures ( #2120 )
...
Co-authored-by: houseme <housemecn@gmail.com >
Co-authored-by: heihutu <30542132+heihutu@users.noreply.github.com >
2026-03-11 11:22:20 +08:00
houseme
8e4a1ef917
refactor(protocols): replace tar with astral-tokio-tar for async processing ( #2099 )
...
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com >
Co-authored-by: houseme <4829346+houseme@users.noreply.github.com >
2026-03-08 15:18:15 +08:00
Senol Colak
b07383760f
Add OpenStack Swift API Support ( #2066 )
...
Co-authored-by: houseme <housemecn@gmail.com >
Co-authored-by: Copilot <noreply@github.com >
2026-03-08 01:11:35 +08:00
houseme
d17d2083d4
feat(targets): enhance webhook TLS support with custom CA and skip-verify ( #1994 )
...
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com >
Co-authored-by: houseme <4829346+houseme@users.noreply.github.com >
Co-authored-by: heihutu <heihutu@gmail.com >
2026-02-27 21:24:49 +08:00
houseme
024a3107d8
build(deps): bump the dependencies group with 4 updates ( #1955 )
2026-02-25 19:21:20 +08:00
yxrxy
deb1dbedbb
fix(ftps): Fix basename extraction and implement recursive delete ( #1920 )
...
Co-authored-by: houseme <housemecn@gmail.com >
Co-authored-by: heihutu <30542132+heihutu@users.noreply.github.com >
2026-02-24 20:49:57 +08:00
安正超
4211652991
refactor(app): add application layer module entry ( #1907 )
2026-02-22 22:15:37 +08:00
dependabot[bot]
ff8c1c782a
build(deps): bump libunftp from 0.21.0 to 0.22.0 in the dependencies group across 1 directory ( #1756 )
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: houseme <housemecn@gmail.com >
2026-02-09 13:43:47 +08:00
houseme
0b870d6301
build(deps): bump the dependencies group with 19 updates ( #1745 )
2026-02-07 12:22:14 +08:00
yxrxy
5c2eda356e
feat: migrate FTP/SFTP to protocols crate and update dependencies ( #1580 )
...
Signed-off-by: yxrxy <yxrxytrigger@gmail.com >
Signed-off-by: houseme <housemecn@gmail.com >
Signed-off-by: heihutu <30542132+heihutu@users.noreply.github.com >
Co-authored-by: houseme <housemecn@gmail.com >
Co-authored-by: heihutu <30542132+heihutu@users.noreply.github.com >
Co-authored-by: loverustfs <hello@rustfs.com >
2026-02-06 20:58:42 +08:00