diff --git a/services/frontend/pkg/config/config.go b/services/frontend/pkg/config/config.go index 283b22a3c..70c367681 100644 --- a/services/frontend/pkg/config/config.go +++ b/services/frontend/pkg/config/config.go @@ -34,6 +34,7 @@ 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 `yaml:"edition" env:"OC_EDITION;FRONTEND_EDITION" 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"` 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"` diff --git a/services/frontend/pkg/config/defaults/defaultconfig.go b/services/frontend/pkg/config/defaults/defaultconfig.go index 49fada438..b5b5eff42 100644 --- a/services/frontend/pkg/config/defaults/defaultconfig.go +++ b/services/frontend/pkg/config/defaults/defaultconfig.go @@ -87,6 +87,7 @@ func DefaultConfig() *config.Config { DefaultUploadProtocol: "tus", DefaultLinkPermissions: 1, SearchMinLength: 3, + Edition: "", Checksums: config.Checksums{ SupportedTypes: []string{"sha1", "md5", "adler32"}, PreferredUploadType: "sha1", diff --git a/services/frontend/pkg/revaconfig/config.go b/services/frontend/pkg/revaconfig/config.go index 939948f86..f87a99cee 100644 --- a/services/frontend/pkg/revaconfig/config.go +++ b/services/frontend/pkg/revaconfig/config.go @@ -208,6 +208,7 @@ func FrontendConfigFromStruct(cfg *config.Config, logger log.Logger) (map[string "needsDbUpgrade": false, "version": version.Legacy, "versionstring": version.LegacyString, + "edition": cfg.Edition, "productname": "OpenCloud", "product": "OpenCloud", "productversion": version.GetString(), diff --git a/services/ocdav/pkg/command/server.go b/services/ocdav/pkg/command/server.go index aac83cf99..00608a609 100644 --- a/services/ocdav/pkg/command/server.go +++ b/services/ocdav/pkg/command/server.go @@ -77,6 +77,7 @@ func Server(cfg *config.Config) *cli.Command { ocdav.Product(cfg.Status.Product), ocdav.Version(cfg.Status.Version), ocdav.VersionString(cfg.Status.VersionString), + ocdav.Edition(cfg.Status.Edition), ocdav.MachineAuthAPIKey(cfg.MachineAuthAPIKey), ocdav.Broker(broker.NoOp{}), // ocdav.FavoriteManager() // FIXME needs a proper persistence implementation https://github.com/owncloud/ocis/issues/1228 diff --git a/services/ocdav/pkg/config/config.go b/services/ocdav/pkg/config/config.go index 89b432e7d..627a6530d 100644 --- a/services/ocdav/pkg/config/config.go +++ b/services/ocdav/pkg/config/config.go @@ -81,4 +81,5 @@ type Status struct { 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"` } diff --git a/services/ocdav/pkg/config/defaults/defaultconfig.go b/services/ocdav/pkg/config/defaults/defaultconfig.go index 5a73f009f..a2eca1c8c 100644 --- a/services/ocdav/pkg/config/defaults/defaultconfig.go +++ b/services/ocdav/pkg/config/defaults/defaultconfig.go @@ -92,6 +92,7 @@ func DefaultConfig() *config.Config { ProductVersion: version.GetString(), Product: "OpenCloud", ProductName: "OpenCloud", + Edition: "", }, } } diff --git a/tests/acceptance/bootstrap/CapabilitiesContext.php b/tests/acceptance/bootstrap/CapabilitiesContext.php index b2bbb0c31..e296b9a33 100644 --- a/tests/acceptance/bootstrap/CapabilitiesContext.php +++ b/tests/acceptance/bootstrap/CapabilitiesContext.php @@ -214,6 +214,17 @@ class CapabilitiesContext implements Context { $this->featureContext->theHTTPStatusCodeShouldBe(200, '', $response); $responseXmlObject = HttpRequestHelper::getResponseXml($response, __METHOD__)->data->capabilities; + $edition = $this->getParameterValueFromXml( + $responseXmlObject, + 'core', + 'status@@@edition' + ); + + if (!\strlen($edition)) { + Assert::fail( + "Cannot get edition from core capabilities" + ); + } $product = $this->getParameterValueFromXml( $responseXmlObject, @@ -238,6 +249,7 @@ class CapabilitiesContext implements Context { ); } + $jsonExpectedDecoded['edition'] = $edition; $jsonExpectedDecoded['product'] = $product; $jsonExpectedDecoded['productname'] = $productName; diff --git a/tests/acceptance/bootstrap/FeatureContext.php b/tests/acceptance/bootstrap/FeatureContext.php index ce7018aa6..91dc6be86 100644 --- a/tests/acceptance/bootstrap/FeatureContext.php +++ b/tests/acceptance/bootstrap/FeatureContext.php @@ -2042,6 +2042,17 @@ class FeatureContext extends BehatVariablesContext { ); } + /** + * @return string + */ + public function getEditionFromStatus(): string { + $decodedResponse = $this->getJsonDecodedStatusPhp(); + if (isset($decodedResponse['edition'])) { + return $decodedResponse['edition']; + } + return ''; + } + /** * @return string|null */ @@ -2271,6 +2282,14 @@ class FeatureContext extends BehatVariablesContext { ], "parameter" => [] ], + [ + "code" => "%edition%", + "function" => [ + $this, + "getEditionFromStatus" + ], + "parameter" => [] + ], [ "code" => "%version%", "function" => [ diff --git a/tests/acceptance/features/coreApiCapabilities/capabilities.feature b/tests/acceptance/features/coreApiCapabilities/capabilities.feature index caae6b50d..f4731872b 100644 --- a/tests/acceptance/features/coreApiCapabilities/capabilities.feature +++ b/tests/acceptance/features/coreApiCapabilities/capabilities.feature @@ -193,12 +193,17 @@ Feature: capabilities "status": { "type": "object", "required": [ + "edition", "product", "productname", "version", "versionstring" ], "properties": { + "edition": { + "type": "string", + "enum": ["%edition%"] + }, "product": { "type": "string", "enum": ["%productname%"] @@ -225,6 +230,7 @@ Feature: capabilities "type": "object", "required": [ "string", + "edition", "product" ], "properties": { @@ -232,6 +238,10 @@ Feature: capabilities "type": "string", "enum": ["%versionstring%"] }, + "edition": { + "type": "string", + "enum": ["%edition%"] + }, "product": { "type": "string", "enum": ["%productname%"] diff --git a/tests/acceptance/features/coreApiCapabilities/capabilitiesWithNormalUser.feature b/tests/acceptance/features/coreApiCapabilities/capabilitiesWithNormalUser.feature index d3704d32d..56db3e44a 100644 --- a/tests/acceptance/features/coreApiCapabilities/capabilitiesWithNormalUser.feature +++ b/tests/acceptance/features/coreApiCapabilities/capabilitiesWithNormalUser.feature @@ -47,6 +47,7 @@ Feature: default capabilities for normal user "required": [ "version", "versionstring", + "edition", "productname" ], "properties": { @@ -56,6 +57,9 @@ Feature: default capabilities for normal user "versionstring": { "const": "%versionstring%" }, + "edition": { + "const": "%edition%" + }, "productname": { "const": "%productname%" } diff --git a/tests/acceptance/features/coreApiMain/status.feature b/tests/acceptance/features/coreApiMain/status.feature index c37195878..77b3043d7 100644 --- a/tests/acceptance/features/coreApiMain/status.feature +++ b/tests/acceptance/features/coreApiMain/status.feature @@ -8,5 +8,5 @@ Feature: Status When the administrator requests status.php Then the status.php response should include """ - {"installed":true,"maintenance":false,"needsDbUpgrade":false,"version":"$CURRENT_VERSION","versionstring":"$CURRENT_VERSION_STRING","productname":"$PRODUCTNAME","product":"$PRODUCT"} + {"installed":true,"maintenance":false,"needsDbUpgrade":false,"version":"$CURRENT_VERSION","versionstring":"$CURRENT_VERSION_STRING","edition":"$EDITION","productname":"$PRODUCTNAME","product":"$PRODUCT"} """