From 2278a30f91da38e20065123efbba8ffdcd540b3b Mon Sep 17 00:00:00 2001 From: Saw-jan Date: Wed, 10 Jan 2024 16:54:33 +0545 Subject: [PATCH] raise Exception if the provider is not webdav when using proxy mode --- cmd/serve/s3/backend.go | 2 +- cmd/serve/s3/s3.go | 11 +++++++++-- cmd/serve/s3/server.go | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/cmd/serve/s3/backend.go b/cmd/serve/s3/backend.go index c6066080e6a4b..1182d571e817c 100644 --- a/cmd/serve/s3/backend.go +++ b/cmd/serve/s3/backend.go @@ -41,7 +41,7 @@ func newBackend(opt *Options, w *Server) gofakes3.Backend { } func (b *s3Backend) getVfs(accessKey string) *vfs.VFS { - if b.opt.asProxy { + if b.opt.proxyMode { // new VFS if _, ok := b.w.f.(*webdav.Fs); ok { info, name, remote, config, _ := fs.ConfigFs(b.w.f.Name() + ":") diff --git a/cmd/serve/s3/s3.go b/cmd/serve/s3/s3.go index 293843f501593..57083fa0fa2e1 100644 --- a/cmd/serve/s3/s3.go +++ b/cmd/serve/s3/s3.go @@ -4,7 +4,9 @@ import ( "context" _ "embed" + "github.com/rclone/rclone/backend/webdav" "github.com/rclone/rclone/cmd" + "github.com/rclone/rclone/fs" "github.com/rclone/rclone/fs/config/flags" "github.com/rclone/rclone/fs/hash" httplib "github.com/rclone/rclone/lib/http" @@ -19,7 +21,7 @@ var DefaultOpt = Options{ hashName: "MD5", hashType: hash.MD5, noCleanup: false, - asProxy: false, + proxyMode: false, HTTP: httplib.DefaultCfg(), } @@ -36,7 +38,7 @@ func init() { flags.StringVarP(flagSet, &Opt.hashName, "etag-hash", "", Opt.hashName, "Which hash to use for the ETag, or auto or blank for off", "") flags.StringArrayVarP(flagSet, &Opt.authPair, "auth-key", "", Opt.authPair, "Set key pair for v4 authorization: access_key_id,secret_access_key", "") flags.BoolVarP(flagSet, &Opt.noCleanup, "no-cleanup", "", Opt.noCleanup, "Not to cleanup empty folder after object is deleted", "") - flags.BoolVarP(flagSet, &Opt.asProxy, "as-proxy", "", Opt.asProxy, "Serve as a proxy", "") + flags.BoolVarP(flagSet, &Opt.proxyMode, "proxy-mode", "", Opt.proxyMode, "Serve as a proxy for s3 clients", "") } //go:embed serve_s3.md @@ -56,6 +58,11 @@ var Command = &cobra.Command{ cmd.CheckArgs(1, 1, command, args) f := cmd.NewFsSrc(args) + if _, ok := f.(*webdav.Fs); !ok && Opt.proxyMode { + fs.Logf("serve s3", "Proxy mode is not supported for %s provider", f.Name()) + return fs.ErrorNotImplemented + } + if Opt.hashName == "auto" { Opt.hashType = f.Hashes().GetOne() } else if Opt.hashName != "" { diff --git a/cmd/serve/s3/server.go b/cmd/serve/s3/server.go index ec4584ec34334..efb399835c0fb 100644 --- a/cmd/serve/s3/server.go +++ b/cmd/serve/s3/server.go @@ -24,7 +24,7 @@ type Options struct { hashType hash.Type authPair []string noCleanup bool - asProxy bool + proxyMode bool HTTP httplib.Config }