From 32306dc6b49947ca0c6a47e264ffaf4630df1f08 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Fri, 29 May 2020 16:00:34 +0200 Subject: [PATCH] Add flag for disabling TUS in capabilities --- pkg/command/frontend.go | 37 ++++++++++++++++++++++--------------- pkg/config/config.go | 3 ++- pkg/flagset/frontend.go | 9 ++++++++- 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/pkg/command/frontend.go b/pkg/command/frontend.go index 0cc77fce4..15789286a 100644 --- a/pkg/command/frontend.go +++ b/pkg/command/frontend.go @@ -78,6 +78,24 @@ func Frontend(cfg *config.Config) *cli.Command { desktopRedirectURIs[port] = fmt.Sprintf("http://localhost:%d", (port + 1024)) } + filesCfg := map[string]interface{}{ + "private_links": false, + "bigfilechunking": false, + "blacklisted_files": []string{}, + "undelete": true, + "versioning": true, + } + + if !cfg.Reva.UploadDisableTus { + filesCfg["tus_support"] = map[string]interface{}{ + "version": "1.0.0", + "resumable": "1.0.0", + "extension": "creation,creation-with-upload", + "http_method_override": cfg.Reva.UploadHTTPMethodOverride, + "max_chunk_size": int(cfg.Reva.UploadMaxChunkSize), + } + } + rcfg := map[string]interface{}{ "core": map[string]interface{}{ "max_cpus": cfg.Reva.Users.MaxCPUs, @@ -108,6 +126,7 @@ func Frontend(cfg *config.Config) *cli.Command { "chunk_folder": "/var/tmp/reva/chunks", "files_namespace": cfg.Reva.OCDav.DavFilesNamespace, "webdav_namespace": cfg.Reva.OCDav.WebdavNamespace, + "disable_tus": cfg.Reva.UploadDisableTus, }, "ocs": map[string]interface{}{ "config": map[string]interface{}{ @@ -117,6 +136,7 @@ func Frontend(cfg *config.Config) *cli.Command { "contact": "admin@localhost", "ssl": "false", }, + "disable_tus": cfg.Reva.UploadDisableTus, "capabilities": map[string]interface{}{ "capabilities": map[string]interface{}{ "core": map[string]interface{}{ @@ -137,21 +157,8 @@ func Frontend(cfg *config.Config) *cli.Command { "supported_types": []string{"SHA256"}, "preferred_upload_type": "SHA256", }, - "files": map[string]interface{}{ - "private_links": false, - "bigfilechunking": false, - "blacklisted_files": []string{}, - "undelete": true, - "versioning": true, - "tus_support": map[string]interface{}{ - "version": "1.0.0", - "resumable": "1.0.0", - "extension": "creation,creation-with-upload", - "http_method_override": cfg.Reva.UploadHttpMethodOverride, - "max_chunk_size": int(cfg.Reva.UploadMaxChunkSize), - }, - }, - "dav": map[string]interface{}{}, + "files": filesCfg, + "dav": map[string]interface{}{}, "files_sharing": map[string]interface{}{ "api_enabled": true, "resharing": true, diff --git a/pkg/config/config.go b/pkg/config/config.go index 671d04601..66ac115d9 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -255,7 +255,8 @@ type Reva struct { Configs map[string]interface{} // chunking and resumable upload config (TUS) UploadMaxChunkSize int - UploadHttpMethodOverride string + UploadHTTPMethodOverride string + UploadDisableTus bool } // Tracing defines the available tracing configuration. diff --git a/pkg/flagset/frontend.go b/pkg/flagset/frontend.go index 974a083e3..a53370fc4 100644 --- a/pkg/flagset/frontend.go +++ b/pkg/flagset/frontend.go @@ -159,6 +159,13 @@ func FrontendWithConfig(cfg *config.Config) []cli.Flag { }, // Chunking + &cli.BoolFlag{ + Name: "upload-disable-tus", + Value: false, + Usage: "Tells clients to not use TUS by disabling the capability (this doesn't disable the endpoints)", + EnvVars: []string{"REVA_FRONTEND_UPLOAD_DISABLE_TUS"}, + Destination: &cfg.Reva.UploadDisableTus, + }, &cli.IntFlag{ Name: "upload-max-chunk-size", Value: 0, @@ -171,7 +178,7 @@ func FrontendWithConfig(cfg *config.Config) []cli.Flag { Value: "", Usage: "Specify an HTTP method (ex: POST) to use when uploading in case OPTIONS and PATCH are not available", EnvVars: []string{"REVA_FRONTEND_UPLOAD_HTTP_METHOD_OVERRIDE"}, - Destination: &cfg.Reva.UploadHttpMethodOverride, + Destination: &cfg.Reva.UploadHTTPMethodOverride, }, } }