With the s3.* config form (no storage_url) and an s3.endpoint written without a scheme, an omitted use_ssl built an http:// endpoint, while config.example.yml documented use_ssl as defaulting to true. Over plain HTTP a network observer sees what the store operator sees (manifests, object names, sizes, the access key id) and can alter responses.
S3Config.UseSSL is now *bool: omitted (nil) resolves a scheme-less endpoint to https://; only an explicit use_ssl: false forces http://. An endpoint that already carries a scheme is still honored as written. This matches the s3:// URL form, which already defaults to TLS, and makes config.example.yml accurate without changing it.
The config init template previously listed use_ssl in the s3:// credentials block, where the key is never read (TLS for a URL is controlled by ?ssl=false). That line is dropped and replaced with a one-line note pointing at ?ssl=false.
A new test in internal/storage builds the storer from a legacy s3.* config with a scheme-less endpoint and checks the resolved endpoint scheme: use_ssl omitted yields https, explicit use_ssl: false yields http.
make check is green.
Model: opus-4-8
Fixes https://git.eeqj.de/sneak/vaultik/issues/158.
With the `s3.*` config form (no `storage_url`) and an `s3.endpoint` written without a scheme, an omitted `use_ssl` built an `http://` endpoint, while `config.example.yml` documented `use_ssl` as defaulting to true. Over plain HTTP a network observer sees what the store operator sees (manifests, object names, sizes, the access key id) and can alter responses.
`S3Config.UseSSL` is now `*bool`: omitted (nil) resolves a scheme-less endpoint to `https://`; only an explicit `use_ssl: false` forces `http://`. An endpoint that already carries a scheme is still honored as written. This matches the `s3://` URL form, which already defaults to TLS, and makes `config.example.yml` accurate without changing it.
The `config init` template previously listed `use_ssl` in the `s3://` credentials block, where the key is never read (TLS for a URL is controlled by `?ssl=false`). That line is dropped and replaced with a one-line note pointing at `?ssl=false`.
A new test in `internal/storage` builds the storer from a legacy `s3.*` config with a scheme-less endpoint and checks the resolved endpoint scheme: `use_ssl` omitted yields `https`, explicit `use_ssl: false` yields `http`.
`make check` is green.
Model: opus-4-8
With the s3.* config form and an endpoint written without a scheme,
use_ssl being omitted built an http:// endpoint, while config.example.yml
documented use_ssl as defaulting to true. Over plain HTTP a network
observer sees manifests, object names, sizes and the access key id, and
can alter responses.
use_ssl is now *bool: omitted (nil) means the default, TLS; only an
explicit use_ssl: false forces plain HTTP. This matches the s3:// URL
form, which already defaults to TLS. The config init template dropped its
misleading use_ssl line from the s3:// block (that key is never read for
URLs; ?ssl=false controls TLS there) and points at ?ssl=false instead.
Model: opus-4-8
Rebased onto current next and force-pushed. The rebase applied cleanly with no conflicts: this PR's commit changes only source and test files, not TODO.md, so the anticipated TODO.md conflict did not arise and all entries remain intact. make check (tests + Docker lint + fmt-check) green.
Model: opus-4-8
Rebased onto current `next` and force-pushed. The rebase applied cleanly with no conflicts: this PR's commit changes only source and test files, not `TODO.md`, so the anticipated `TODO.md` conflict did not arise and all entries remain intact. `make check` (tests + Docker lint + fmt-check) green.
Model: opus-4-8
clawbot
merged commit d77663d039 into next2026-09-22 11:11:34 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Fixes #158.
With the
s3.*config form (nostorage_url) and ans3.endpointwritten without a scheme, an omitteduse_sslbuilt anhttp://endpoint, whileconfig.example.ymldocumenteduse_sslas defaulting to true. Over plain HTTP a network observer sees what the store operator sees (manifests, object names, sizes, the access key id) and can alter responses.S3Config.UseSSLis now*bool: omitted (nil) resolves a scheme-less endpoint tohttps://; only an explicituse_ssl: falseforceshttp://. An endpoint that already carries a scheme is still honored as written. This matches thes3://URL form, which already defaults to TLS, and makesconfig.example.ymlaccurate without changing it.The
config inittemplate previously listeduse_sslin thes3://credentials block, where the key is never read (TLS for a URL is controlled by?ssl=false). That line is dropped and replaced with a one-line note pointing at?ssl=false.A new test in
internal/storagebuilds the storer from a legacys3.*config with a scheme-less endpoint and checks the resolved endpoint scheme:use_sslomitted yieldshttps, explicituse_ssl: falseyieldshttp.make checkis green.Model: opus-4-8
PASS
Model: opus-4-8
fa4958c63etoefdb5eeb2bRebased onto current
nextand force-pushed. The rebase applied cleanly with no conflicts: this PR's commit changes only source and test files, notTODO.md, so the anticipatedTODO.mdconflict did not arise and all entries remain intact.make check(tests + Docker lint + fmt-check) green.Model: opus-4-8