From ef26e6d26d3b6ccb989fe69e2c78eb8fe707b88d Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Mon, 4 May 2026 18:19:10 +0100 Subject: [PATCH] protondrive: route HTTP through rclone's transport The Proton Drive backend constructed the upstream Proton-API-Bridge without ever passing rclone's HTTP transport. As a result none of rclone's HTTP flags reached Proton: --dump headers, --dump bodies, --no-check-certificate, --user-agent, --bind, --ca-cert, --header, --tpslimit etc. all silently did nothing for this remote, and HTTP traffic was invisible to -vv. Pass fshttp.NewTransport(ctx) through the new Config.Transport hook on the bridge, which forwards it to the updated go-proton-api's WithTransport option and so to the underlying resty client. --- backend/protondrive/protondrive.go | 6 ++++++ go.mod | 4 ++-- go.sum | 8 ++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/backend/protondrive/protondrive.go b/backend/protondrive/protondrive.go index 1b76e9d73..0211696ee 100644 --- a/backend/protondrive/protondrive.go +++ b/backend/protondrive/protondrive.go @@ -22,6 +22,7 @@ import ( "github.com/rclone/rclone/fs/config/configmap" "github.com/rclone/rclone/fs/config/configstruct" "github.com/rclone/rclone/fs/config/obscure" + "github.com/rclone/rclone/fs/fshttp" "github.com/rclone/rclone/fs/hash" "github.com/rclone/rclone/lib/dircache" "github.com/rclone/rclone/lib/encoder" @@ -428,6 +429,11 @@ func newProtonDrive(ctx context.Context, f *Fs, opt *Options, m configmap.Mapper } config.UserAgent = f.ci.UserAgent // opt.UserAgent + // Route HTTP through rclone's transport so global flags such as + // --dump headers, --no-check-certificate, --user-agent, --bind, + // --ca-cert and --header all take effect against Proton Drive. + config.Transport = fshttp.NewTransport(ctx) + config.ReplaceExistingDraft = opt.ReplaceExistingDraft config.EnableCaching = opt.EnableCaching diff --git a/go.mod b/go.mod index f7d1660ea..e15051a7c 100644 --- a/go.mod +++ b/go.mod @@ -71,8 +71,8 @@ require ( github.com/prometheus/client_golang v1.23.2 github.com/putdotio/go-putio/putio v0.0.0-20200123120452-16d982cac2b8 github.com/quasilyte/go-ruleguard/dsl v0.3.23 - github.com/rclone/Proton-API-Bridge v1.0.1 - github.com/rclone/go-proton-api v1.0.1 + github.com/rclone/Proton-API-Bridge v1.0.2 + github.com/rclone/go-proton-api v1.0.2 github.com/rclone/gofakes3 v0.0.4 github.com/rfjakob/eme v1.2.0 github.com/rivo/uniseg v0.4.7 diff --git a/go.sum b/go.sum index 6106bc26d..4ca7699ef 100644 --- a/go.sum +++ b/go.sum @@ -594,10 +594,10 @@ github.com/quic-go/quic-go v0.59.0 h1:OLJkp1Mlm/aS7dpKgTc6cnpynnD2Xg7C1pwL6vy/SA github.com/quic-go/quic-go v0.59.0/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= github.com/rasky/go-xdr v0.0.0-20170124162913-1a41d1a06c93 h1:UVArwN/wkKjMVhh2EQGC0tEc1+FqiLlvYXY5mQ2f8Wg= github.com/rasky/go-xdr v0.0.0-20170124162913-1a41d1a06c93/go.mod h1:Nfe4efndBz4TibWycNE+lqyJZiMX4ycx+QKV8Ta0f/o= -github.com/rclone/Proton-API-Bridge v1.0.1 h1:iLSWfK4SSKRrM1t8DtvMSTUrVOAnkfJ+zdU9hIwgu4s= -github.com/rclone/Proton-API-Bridge v1.0.1/go.mod h1:26RAest751Ofk+F/d8xtl4UyWXrZvMQwn39U8rm/WKM= -github.com/rclone/go-proton-api v1.0.1 h1:Nb7E1d0kPpniupBTqvf0JCmAfRdmuQx0IVjfo5T1/jg= -github.com/rclone/go-proton-api v1.0.1/go.mod h1:LB2kCEaZMzNn3ocdz+qYfxXmuLxxN0ka62KJd2x53Bc= +github.com/rclone/Proton-API-Bridge v1.0.2 h1:YmN8lAbkQqJPjHaapg5QJyuPbcPC26SaS0jMKkm5UO8= +github.com/rclone/Proton-API-Bridge v1.0.2/go.mod h1:26RAest751Ofk+F/d8xtl4UyWXrZvMQwn39U8rm/WKM= +github.com/rclone/go-proton-api v1.0.2 h1:cJtJUab0MGJ3C6q5kiEJs3pbyhSLnOKMyYOQehA0PBc= +github.com/rclone/go-proton-api v1.0.2/go.mod h1:LB2kCEaZMzNn3ocdz+qYfxXmuLxxN0ka62KJd2x53Bc= github.com/rclone/gofakes3 v0.0.4 h1:LswpC49VY/UJ1zucoL5ktnOEX6lq3qK7e1aFIAfqCbk= github.com/rclone/gofakes3 v0.0.4/go.mod h1:j/UoS+2/Mr7xAlfKhyVC58YyFQmh9uoQA5YZQXQUqmg= github.com/relvacode/iso8601 v1.7.0 h1:BXy+V60stMP6cpswc+a93Mq3e65PfXCgDFfhvNNGrdo=