diff --git a/opencloud/pkg/command/services.go b/opencloud/pkg/command/services.go index d84f7dac4c..8c6c3a926a 100644 --- a/opencloud/pkg/command/services.go +++ b/opencloud/pkg/command/services.go @@ -48,7 +48,6 @@ import ( web "github.com/opencloud-eu/opencloud/services/web/pkg/command" webdav "github.com/opencloud-eu/opencloud/services/webdav/pkg/command" webfinger "github.com/opencloud-eu/opencloud/services/webfinger/pkg/command" - "github.com/urfave/cli/v2" "github.com/spf13/cobra" ) @@ -164,7 +163,7 @@ var serviceCommands = []register.Command{ cfg.Notifications.Commons = cfg.Commons }) }, - func(cfg *config.Config) *cli.Command { + func(cfg *config.Config) *cobra.Command { return ServiceCommand(cfg, cfg.OCM.Service.Name, ocm.GetCommands(cfg.OCM), func(c *config.Config) { cfg.OCM.Commons = cfg.Commons }) diff --git a/services/frontend/pkg/config/config.go b/services/frontend/pkg/config/config.go index aa9ff57981..3b4a0445cd 100644 --- a/services/frontend/pkg/config/config.go +++ b/services/frontend/pkg/config/config.go @@ -33,7 +33,6 @@ type Config struct { EnableFederatedSharingIncoming bool `yaml:"enable_federated_sharing_incoming" env:"OC_ENABLE_OCM;FRONTEND_ENABLE_FEDERATED_SHARING_INCOMING" desc:"Changing this value is NOT supported. Enables support for incoming federated sharing for clients. The backend behaviour is not changed." introductionVersion:"1.0.0"` EnableFederatedSharingOutgoing bool `yaml:"enable_federated_sharing_outgoing" env:"OC_ENABLE_OCM;FRONTEND_ENABLE_FEDERATED_SHARING_OUTGOING" desc:"Changing this value is NOT supported. Enables support for outgoing federated sharing for clients. The backend behaviour is not changed." introductionVersion:"1.0.0"` SearchMinLength int `yaml:"search_min_length" env:"FRONTEND_SEARCH_MIN_LENGTH" desc:"Minimum number of characters to enter before a client should start a search for Share receivers. This setting can be used to customize the user experience if e.g too many results are displayed." introductionVersion:"1.0.0"` - Edition string `desc:"Edition of OpenCloud. Used for branding purposes." introductionVersion:"1.0.0"` DisableSSE bool `yaml:"disable_sse" env:"OC_DISABLE_SSE;FRONTEND_DISABLE_SSE" desc:"When set to true, clients are informed that the Server-Sent Events endpoint is not accessible." introductionVersion:"1.0.0"` DisableRadicale bool `yaml:"disable_radicale" env:"FRONTEND_DISABLE_RADICALE" desc:"When set to true, clients are informed that the Radicale (CalDAV/CardDAV) is not accessible." introductionVersion:"4.0.0"` DefaultLinkPermissions int `yaml:"default_link_permissions" env:"FRONTEND_DEFAULT_LINK_PERMISSIONS" desc:"Defines the default permissions a link is being created with. Possible values are 0 (= internal link, for instance members only) and 1 (= public link with viewer permissions). Defaults to 1." introductionVersion:"1.0.0"` @@ -173,19 +172,14 @@ type OCDav struct { MachineAuthAPIKey string `yaml:"machine_auth_api_key" env:"OC_MACHINE_AUTH_API_KEY;OCDAV_MACHINE_AUTH_API_KEY" desc:"Machine auth API key used to validate internal requests necessary for the access to resources from other services." introductionVersion:"1.0.0"` - Status Status `yaml:"-"` - AllowPropfindDepthInfinity bool `yaml:"allow_propfind_depth_infinity" env:"OCDAV_ALLOW_PROPFIND_DEPTH_INFINITY" desc:"Allow the use of depth infinity in PROPFINDS. When enabled, a propfind will traverse through all subfolders. If many subfolders are expected, depth infinity can cause heavy server load and/or delayed response times." introductionVersion:"1.0.0"` + + NameValidation NameValidation `yaml:"name_validation"` } -// Status holds the configurable values for the status.php -type Status struct { - Version string - VersionString string - Product string - ProductName string - ProductVersion string - Edition string `yaml:"edition" env:"OC_EDITION;OCDAV_EDITION" desc:"Edition of OpenCloud. Used for branding purposes." introductionVersion:"1.0.0"` +type NameValidation struct { + InvalidChars []string `yaml:"invalid_chars" env:"OCDAV_NAME_VALIDATION_INVALID_CHARS" desc:"List of characters that are not allowed in file or folder names." introductionVersion:"%%NEXT%%"` + MaxLength int `yaml:"max_length" env:"OCDAV_NAME_VALIDATION_MAX_LENGTH" desc:"Max lenght og file or folder names." introductionVersion:"%%NEXT%%"` } type CacheWarmupDrivers struct { diff --git a/services/frontend/pkg/config/defaults/defaultconfig.go b/services/frontend/pkg/config/defaults/defaultconfig.go index f83bfdb334..5faef3bc2f 100644 --- a/services/frontend/pkg/config/defaults/defaultconfig.go +++ b/services/frontend/pkg/config/defaults/defaultconfig.go @@ -5,7 +5,6 @@ import ( "github.com/opencloud-eu/opencloud/pkg/shared" "github.com/opencloud-eu/opencloud/pkg/structs" - "github.com/opencloud-eu/opencloud/pkg/version" "github.com/opencloud-eu/opencloud/services/frontend/pkg/config" ) @@ -88,7 +87,6 @@ func DefaultConfig() *config.Config { DefaultUploadProtocol: "tus", DefaultLinkPermissions: 1, SearchMinLength: 3, - Edition: version.Edition, CheckForUpdates: true, Checksums: config.Checksums{ SupportedTypes: []string{"sha1", "md5", "adler32"}, @@ -124,23 +122,19 @@ func DefaultConfig() *config.Config { Prefix: "", SkipUserGroupsInToken: false, - WebdavNamespace: "/users/{{.Id.OpaqueId}}", - FilesNamespace: "/users/{{.Id.OpaqueId}}", - SharesNamespace: "/Shares", - OCMNamespace: "/public", - PublicURL: "https://localhost:9200", - Insecure: false, - EnableHTTPTPC: false, - Timeout: 84300, - Status: config.Status{ - Version: version.Legacy, - VersionString: version.LegacyString, - ProductVersion: version.GetString(), - Product: "OpenCloud", - ProductName: "OpenCloud", - Edition: "", - }, + WebdavNamespace: "/users/{{.Id.OpaqueId}}", + FilesNamespace: "/users/{{.Id.OpaqueId}}", + SharesNamespace: "/Shares", + OCMNamespace: "/public", + PublicURL: "https://localhost:9200", + Insecure: false, + EnableHTTPTPC: false, + Timeout: 84300, AllowPropfindDepthInfinity: false, + NameValidation: config.NameValidation{ + InvalidChars: []string{"\f", "\r", "\n", "\\"}, + MaxLength: 255, + }, }, Middleware: config.Middleware{ Auth: config.Auth{ diff --git a/services/frontend/pkg/revaconfig/config.go b/services/frontend/pkg/revaconfig/config.go index 4c8e03f8ef..62d0cca733 100644 --- a/services/frontend/pkg/revaconfig/config.go +++ b/services/frontend/pkg/revaconfig/config.go @@ -209,7 +209,7 @@ func FrontendConfigFromStruct(cfg *config.Config, logger log.Logger) (map[string "needsDbUpgrade": false, "version": version.Legacy, "versionstring": version.LegacyString, - "edition": cfg.Edition, + "edition": version.Edition, "productname": "OpenCloud", "product": "OpenCloud", "productversion": version.GetString(), @@ -371,16 +371,16 @@ func FrontendConfigFromStruct(cfg *config.Config, logger log.Logger) (map[string // still not supported //"favorite_storage_driver": unused, //"favorite_storage_drivers": unused, - "version": cfg.OCDav.Status.Version, - "version_string": cfg.OCDav.Status.VersionString, - "edition": cfg.OCDav.Status.Edition, - "product": cfg.OCDav.Status.Product, - "product_name": cfg.OCDav.Status.ProductName, - "product_version": cfg.OCDav.Status.ProductVersion, + "version": version.Legacy, + "version_string": version.LegacyString, + "edition": version.Edition, + "product": "OpenCloud", + "product_name": "OpenCloud", + "product_version": version.GetString(), "allow_depth_infinity": cfg.OCDav.AllowPropfindDepthInfinity, - "validation": map[string]interface{}{ - // "invalid_chars": aka ItemNameInvalidChars option ... unused - // "max_length": aka ItemNameMaxLength option ... unused + "validation": map[string]interface{}{ + "invalid_chars": cfg.OCDav.NameValidation.InvalidChars, + "max_length": cfg.OCDav.NameValidation.MaxLength, }, "url_signing_shared_secret": cfg.Commons.URLSigningSecret, "machine_auth_apikey": cfg.MachineAuthAPIKey,