diff --git a/.bingo/bingo.mod b/.bingo/bingo.mod index a40810276c..1bb8dad206 100644 --- a/.bingo/bingo.mod +++ b/.bingo/bingo.mod @@ -1,5 +1,5 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.16 +go 1.17 require github.com/bwplotka/bingo v0.5.1 diff --git a/.bingo/buf.mod b/.bingo/buf.mod index 6bcedc262a..e275bb85fa 100644 --- a/.bingo/buf.mod +++ b/.bingo/buf.mod @@ -1,5 +1,5 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.16 +go 1.17 require github.com/bufbuild/buf v0.56.0 // cmd/buf diff --git a/.bingo/buildifier.mod b/.bingo/buildifier.mod index 31bd3ef89a..f1f05fae96 100644 --- a/.bingo/buildifier.mod +++ b/.bingo/buildifier.mod @@ -1,5 +1,5 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.16 +go 1.17 require github.com/bazelbuild/buildtools v0.0.0-20210920153738-d6daef01a1a2 // buildifier diff --git a/.bingo/calens.mod b/.bingo/calens.mod index 747cf21039..1016f15bb0 100644 --- a/.bingo/calens.mod +++ b/.bingo/calens.mod @@ -1,5 +1,5 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.16 +go 1.17 require github.com/restic/calens v0.2.0 diff --git a/.bingo/fileb0x.mod b/.bingo/fileb0x.mod index 0e37513bbb..0f628e1fbd 100644 --- a/.bingo/fileb0x.mod +++ b/.bingo/fileb0x.mod @@ -1,5 +1,5 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.16 +go 1.17 require github.com/UnnoTed/fileb0x v1.1.4 diff --git a/.bingo/flaex.mod b/.bingo/flaex.mod index 8bb486c4ef..2b3f2d4817 100644 --- a/.bingo/flaex.mod +++ b/.bingo/flaex.mod @@ -1,5 +1,5 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.16 +go 1.17 require github.com/owncloud/flaex v0.2.1-0.20210701123229-9d7dceed124f diff --git a/.bingo/golangci-lint.mod b/.bingo/golangci-lint.mod index b8c188d7c8..00fae5647a 100644 --- a/.bingo/golangci-lint.mod +++ b/.bingo/golangci-lint.mod @@ -1,5 +1,5 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.16 +go 1.17 require github.com/golangci/golangci-lint v1.42.1 // cmd/golangci-lint diff --git a/.bingo/gox.mod b/.bingo/gox.mod index ca2894387b..c48c4a9fa3 100644 --- a/.bingo/gox.mod +++ b/.bingo/gox.mod @@ -1,5 +1,5 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.16 +go 1.17 require github.com/mitchellh/gox v1.0.1 diff --git a/.bingo/hugo.mod b/.bingo/hugo.mod index d6723b3672..ed6f3ba493 100644 --- a/.bingo/hugo.mod +++ b/.bingo/hugo.mod @@ -1,6 +1,6 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.16 +go 1.17 replace github.com/markbates/inflect => github.com/markbates/inflect v0.0.0-20171215194931-a12c3aec81a6 diff --git a/.bingo/mutagen.mod b/.bingo/mutagen.mod index c7e746318a..caef7e6a47 100644 --- a/.bingo/mutagen.mod +++ b/.bingo/mutagen.mod @@ -1,5 +1,5 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.16 +go 1.17 require github.com/mutagen-io/mutagen v0.11.8 // cmd/mutagen diff --git a/.bingo/protoc-gen-doc.mod b/.bingo/protoc-gen-doc.mod index 71ce1ab065..37f9686ab8 100644 --- a/.bingo/protoc-gen-doc.mod +++ b/.bingo/protoc-gen-doc.mod @@ -1,5 +1,5 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.16 +go 1.17 require github.com/pseudomuto/protoc-gen-doc v1.5.0 // cmd/protoc-gen-doc diff --git a/.bingo/protoc-gen-go.mod b/.bingo/protoc-gen-go.mod index f03a949a78..b6d0aeefaa 100644 --- a/.bingo/protoc-gen-go.mod +++ b/.bingo/protoc-gen-go.mod @@ -1,5 +1,5 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.16 +go 1.17 require google.golang.org/protobuf v1.27.1 // cmd/protoc-gen-go diff --git a/.bingo/protoc-gen-micro.mod b/.bingo/protoc-gen-micro.mod index 3e2dd99e2f..0d6cb3d4d6 100644 --- a/.bingo/protoc-gen-micro.mod +++ b/.bingo/protoc-gen-micro.mod @@ -1,5 +1,5 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.16 +go 1.17 require github.com/asim/go-micro/cmd/protoc-gen-micro/v3 v3.0.0-20210924081004-8c39b1e1204d diff --git a/.bingo/protoc-gen-microweb.mod b/.bingo/protoc-gen-microweb.mod index d8dc729482..34ca83bbf5 100644 --- a/.bingo/protoc-gen-microweb.mod +++ b/.bingo/protoc-gen-microweb.mod @@ -1,5 +1,5 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.16 +go 1.17 require github.com/owncloud/protoc-gen-microweb v0.0.0-20210824101557-828409dbfbf9 diff --git a/.bingo/protoc-gen-openapiv2.mod b/.bingo/protoc-gen-openapiv2.mod index 884e921720..67fe3ee875 100644 --- a/.bingo/protoc-gen-openapiv2.mod +++ b/.bingo/protoc-gen-openapiv2.mod @@ -1,5 +1,5 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.16 +go 1.17 require github.com/grpc-ecosystem/grpc-gateway/v2 v2.6.0 // protoc-gen-openapiv2 diff --git a/.bingo/reflex.mod b/.bingo/reflex.mod index 928b66a8df..a75c28b44b 100644 --- a/.bingo/reflex.mod +++ b/.bingo/reflex.mod @@ -1,5 +1,5 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.16 +go 1.17 require github.com/cespare/reflex v0.3.1 diff --git a/.drone.env b/.drone.env index 37d9ec34e5..563ca1abc2 100644 --- a/.drone.env +++ b/.drone.env @@ -1,5 +1,5 @@ # The test runner source for API tests -CORE_COMMITID=28fb541fcd334e17157013e6ab594b4e18c3b156 +CORE_COMMITID=dce242592aea29271e99dd5e23e038815fcd0f9c CORE_BRANCH=master # The test runner source for UI tests diff --git a/.drone.star b/.drone.star index 44432c8737..d01ac47c42 100644 --- a/.drone.star +++ b/.drone.star @@ -260,7 +260,7 @@ def testOcisModule(ctx, module): steps = makeGenerate(module) + [ { "name": "golangci-lint", - "image": "owncloudci/golang:1.16", + "image": "owncloudci/golang:1.17", "pull": "always", "commands": [ "mkdir -p cache/checkstyle", @@ -271,7 +271,7 @@ def testOcisModule(ctx, module): }, { "name": "test", - "image": "owncloudci/golang:1.16", + "image": "owncloudci/golang:1.17", "pull": "always", "commands": [ "mkdir -p cache/coverage", @@ -915,7 +915,7 @@ def dockerRelease(ctx, arch): "steps": makeGenerate("") + [ { "name": "build", - "image": "owncloudci/golang:1.16", + "image": "owncloudci/golang:1.17", "pull": "always", "commands": [ "make -C ocis release-linux-docker", @@ -988,15 +988,22 @@ def dockerEos(ctx): "os": "linux", "arch": "amd64", }, - "steps": makeGenerate("ocis") + - build() + [ + "steps": makeGenerate("") + [ + { + "name": "build", + "image": "owncloudci/golang:1.17", + "pull": "always", + "commands": [ + "make -C ocis release-linux-docker", + ], + }, { "name": "dryrun-eos-ocis", "image": "plugins/docker:latest", "pull": "always", "settings": { "dry_run": True, - "context": "ocis/docker/eos-ocis", + "context": "ocis", "tags": "linux-eos-ocis", "dockerfile": "ocis/docker/eos-ocis/Dockerfile", "repo": "owncloud/eos-ocis", @@ -1021,7 +1028,7 @@ def dockerEos(ctx): "from_secret": "docker_password", }, "auto_tag": True, - "context": "ocis/docker/eos-ocis", + "context": "ocis", "dockerfile": "ocis/docker/eos-ocis/Dockerfile", "repo": "owncloud/eos-ocis", }, @@ -1089,7 +1096,7 @@ def binaryRelease(ctx, name): "steps": makeGenerate("") + [ { "name": "build", - "image": "owncloudci/golang:1.16", + "image": "owncloudci/golang:1.17", "pull": "always", "commands": [ "make -C ocis release-%s" % (name), @@ -1097,7 +1104,7 @@ def binaryRelease(ctx, name): }, { "name": "finish", - "image": "owncloudci/golang:1.16", + "image": "owncloudci/golang:1.17", "pull": "always", "commands": [ "make -C ocis release-finish", @@ -1123,7 +1130,7 @@ def binaryRelease(ctx, name): }, { "name": "changelog", - "image": "owncloudci/golang:1.16", + "image": "owncloudci/golang:1.17", "pull": "always", "commands": [ "make changelog CHANGELOG_VERSION=%s" % ctx.build.ref.replace("refs/tags/v", "").split("-")[0], @@ -1259,7 +1266,7 @@ def changelog(ctx): "steps": [ { "name": "generate", - "image": "owncloudci/golang:1.16", + "image": "owncloudci/golang:1.17", "pull": "always", "commands": [ "make -C ocis changelog", @@ -1366,19 +1373,19 @@ def docs(ctx): "steps": [ { "name": "docs-generate", - "image": "owncloudci/golang:1.16", + "image": "owncloudci/golang:1.17", "commands": ["make -C %s docs-generate" % (module) for module in config["modules"]], }, { "name": "prepare", - "image": "owncloudci/golang:1.16", + "image": "owncloudci/golang:1.17", "commands": [ "make -C docs docs-copy", ], }, { "name": "test", - "image": "owncloudci/golang:1.16", + "image": "owncloudci/golang:1.17", "commands": [ "make -C docs test", ], @@ -1459,7 +1466,7 @@ def makeGenerate(module): }, { "name": "generate go", - "image": "owncloudci/golang:1.16", + "image": "owncloudci/golang:1.17", "pull": "always", "commands": [ "%s ci-go-generate" % (make), @@ -1598,7 +1605,7 @@ def build(): return [ { "name": "build", - "image": "owncloudci/golang:1.16", + "image": "owncloudci/golang:1.17", "pull": "always", "commands": [ "make -C ocis build", diff --git a/CHANGELOG.md b/CHANGELOG.md index 577504e477..64497acb19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,10 +17,13 @@ The following sections list the changes for unreleased. * Change - Make the drives create method odata compliant: [#2531](https://github.com/owncloud/ocis/pull/2531) * Change - Unify Envvar names configuring REVA gateway address: [#2587](https://github.com/owncloud/ocis/pull/2587) * Change - Update ownCloud Web to v4.3.0: [#2589](https://github.com/owncloud/ocis/pull/2589) +* Enhancement - Updated MimeTypes configuration for AppRegistry: [#2603](https://github.com/owncloud/ocis/pull/2603) * Enhancement - Add maximum files and size to archiver capabilities: [#2544](https://github.com/owncloud/ocis/pull/2544) * Enhancement - Reduced repository size: [#2579](https://github.com/owncloud/ocis/pull/2579) +* Enhancement - Return the newly created space: [#2610](https://github.com/owncloud/ocis/pull/2610) * Enhancement - Expose the reva archiver in OCIS: [#2509](https://github.com/owncloud/ocis/pull/2509) * Enhancement - Favorites capability: [#2599](https://github.com/owncloud/ocis/pull/2599) +* Enhancement - Upgrade to GO 1.17: [#2605](https://github.com/owncloud/ocis/pull/2605) * Enhancement - Make mimetype allow list configurable for app provider: [#2553](https://github.com/owncloud/ocis/pull/2553) * Enhancement - Add allow_creation parameter to mime type config: [#2591](https://github.com/owncloud/ocis/pull/2591) * Enhancement - Add option to skip generation of demo users and groups: [#2495](https://github.com/owncloud/ocis/pull/2495) @@ -29,8 +32,7 @@ The following sections list the changes for unreleased. * Enhancement - Use reva's Authenticate method instead of spawning token managers: [#2528](https://github.com/owncloud/ocis/pull/2528) * Enhancement - TLS config options for ldap in reva: [#2492](https://github.com/owncloud/ocis/pull/2492) * Enhancement - Set reva JWT token expiration time to 24 hours by default: [#2527](https://github.com/owncloud/ocis/pull/2527) -* Enhancement - Update reva to v1.13.1-0.20211001063718-477bb18843a9: [#2566](https://github.com/owncloud/ocis/pull/2566) -* Enhancement - Update reva to v1.13.1-0.20210917065320-df33e69a6bdc: [#2520](https://github.com/owncloud/ocis/pull/2520) +* Enhancement - Update reva to v1.14.0: [#2615](https://github.com/owncloud/ocis/pull/2615) ## Details @@ -122,6 +124,13 @@ The following sections list the changes for unreleased. https://github.com/owncloud/ocis/pull/2589 https://github.com/owncloud/web/releases/tag/v4.3.0 +* Enhancement - Updated MimeTypes configuration for AppRegistry: [#2603](https://github.com/owncloud/ocis/pull/2603) + + We updated the type of the mime types config to a list, to keep the order of mime types from the + config. + + https://github.com/owncloud/ocis/pull/2603 + * Enhancement - Add maximum files and size to archiver capabilities: [#2544](https://github.com/owncloud/ocis/pull/2544) We added the maximum files count and maximum archive size of the archiver to the capabilities @@ -137,6 +146,13 @@ The following sections list the changes for unreleased. https://github.com/owncloud/ocis/pull/2579 +* Enhancement - Return the newly created space: [#2610](https://github.com/owncloud/ocis/pull/2610) + + Changed the response of the CreateSpace method to include the newly created space. + + https://github.com/owncloud/ocis/pull/2610 + https://github.com/cs3org/reva/pull/2158 + * Enhancement - Expose the reva archiver in OCIS: [#2509](https://github.com/owncloud/ocis/pull/2509) The reva archiver can now be accessed through the storage frontend service @@ -151,6 +167,12 @@ The following sections list the changes for unreleased. https://github.com/owncloud/ocis/pull/2599 +* Enhancement - Upgrade to GO 1.17: [#2605](https://github.com/owncloud/ocis/pull/2605) + + We've upgraded the used GO version from 1.16 to 1.17. + + https://github.com/owncloud/ocis/pull/2605 + * Enhancement - Make mimetype allow list configurable for app provider: [#2553](https://github.com/owncloud/ocis/pull/2553) We've added a configuration option to configure the mimetype allow list introduced in @@ -216,39 +238,54 @@ The following sections list the changes for unreleased. https://github.com/owncloud/ocis/pull/2527 -* Enhancement - Update reva to v1.13.1-0.20211001063718-477bb18843a9: [#2566](https://github.com/owncloud/ocis/pull/2566) +* Enhancement - Update reva to v1.14.0: [#2615](https://github.com/owncloud/ocis/pull/2615) This update includes: + * Bugfix [cs3org/reva#2103](https://github.com/cs3org/reva/pull/2103): AppProvider: propagate back errors reported by WOPI + * Bugfix [cs3org/reva#2149](https://github.com/cs3org/reva/pull/2149): Remove excess info from the http list app providers endpoint + * Bugfix [cs3org/reva#2114](https://github.com/cs3org/reva/pull/2114): Add as default app while registering and skip unset mimetypes + * Bugfix [cs3org/reva#2095](https://github.com/cs3org/reva/pull/2095): Fix app open when multiple app providers are present + * Bugfix [cs3org/reva#2135](https://github.com/cs3org/reva/pull/2135): Make TUS capabilities configurable * Bugfix [cs3org/reva#2076](https://github.com/cs3org/reva/pull/2076): Fix chi routing * Bugfix [cs3org/reva#2077](https://github.com/cs3org/reva/pull/2077): Fix concurrent registration of mimetypes - * Bugfix [cs3org/reva#2074](https://github.com/cs3org/reva/pull/2074): Fix Stat() for eos storage provider - * Bugfix [cs3org/reva#2072](https://github.com/cs3org/reva/pull/2072): Fix denial shares being visible on Shared-with-me page + * Bugfix [cs3org/reva#2154](https://github.com/cs3org/reva/pull/2154): Return OK when trying to delete a non existing reference + * Bugfix [cs3org/reva#2078](https://github.com/cs3org/reva/pull/2078): Fix nil pointer exception in stat * Bugfix [cs3org/reva#2073](https://github.com/cs3org/reva/pull/2073): Fix opening a readonly filetype with WOPI - * Bugfix [cs3org/reva#2114](https://github.com/cs3org/reva/pull/2114): Fix apps as default while registering and skip unset mimetypes - * Security [cs3org/reva#2093](https://github.com/cs3org/reva/pull/2093): Limit the data exposed to resourceinfo and publicshare scopes - * Security [cs3org/reva#2053](https://github.com/cs3org/reva/pull/2053): Use safer defaults for TLS verification on LDAP connections - * Enhancement [cs3org/reva#1989](https://github.com/cs3org/reva/pull/1989): Implement url translation for legacy urls - * Enhancement [cs3org/reva#2075](https://github.com/cs3org/reva/pull/2075): Make owncloudsql leverage existing filecache index - * Enhancement [cs3org/reva#2090](https://github.com/cs3org/reva/pull/2090): Add space name during listStorageSpaces on decomposedfs - * Enhancement [cs3org/reva#2088](https://github.com/cs3org/reva/pull/2088): Add archiver and app provider capabilities - * Enhancement [cs3org/reva#2106](https://github.com/cs3org/reva/pull/2106): Add max num files and max size to the archiver capabilities - * Enhancement [cs3org/reva#2067](https://github.com/cs3org/reva/pull/2067): Extend AppRegistry and AppProvider - * Enhancement [cs3org/reva#2095](https://github.com/cs3org/reva/pull/2095): Whitelist apps via AppRegistry and AppProvider + * Bugfix [cs3org/reva#2140](https://github.com/cs3org/reva/pull/2140): Map GRPC error codes to REVA errors + * Bugfix [cs3org/reva#2147](https://github.com/cs3org/reva/pull/2147): Follow up of #2138: this is the new expected format + * Bugfix [cs3org/reva#2116](https://github.com/cs3org/reva/pull/2116): Differentiate share types when retrieving received shares in sql driver + * Bugfix [cs3org/reva#2074](https://github.com/cs3org/reva/pull/2074): Fix Stat() for EOS storage provider + * Bugfix [cs3org/reva#2151](https://github.com/cs3org/reva/pull/2151): Fix return code for webdav uploads when the token expired + * Change [cs3org/reva#2121](https://github.com/cs3org/reva/pull/2121): Sharemanager API change + * Enhancement [cs3org/reva#2090](https://github.com/cs3org/reva/pull/2090): Return space name during list storage spaces + * Enhancement [cs3org/reva#2138](https://github.com/cs3org/reva/pull/2138): Default AppProvider on top of the providers list + * Enhancement [cs3org/reva#2137](https://github.com/cs3org/reva/pull/2137): Revamp app registry and add parameter to control file creation + * Enhancement [cs3org/reva#145](https://github.com/cs3org/reva/pull/2137): UI improvements for the AppProviders + * Enhancement [cs3org/reva#2088](https://github.com/cs3org/reva/pull/2088): Add archiver and app provider to ocs capabilities + * Enhancement [cs3org/reva#2537](https://github.com/cs3org/reva/pull/2537): Add maximum files and size to archiver capabilities + * Enhancement [cs3org/reva#2100](https://github.com/cs3org/reva/pull/2100): Add support for resource id to the archiver + * Enhancement [cs3org/reva#2158](https://github.com/cs3org/reva/pull/2158): Augment the Id of new spaces + * Enhancement [cs3org/reva#2085](https://github.com/cs3org/reva/pull/2085): Make encoding user groups in access tokens configurable + * Enhancement [cs3org/reva#146](https://github.com/cs3org/reva/pull/146): Filter the denial shares (permission = 0) out of + * Enhancement [cs3org/reva#2141](https://github.com/cs3org/reva/pull/2141): Use golang v1.17 + * Enhancement [cs3org/reva#2053](https://github.com/cs3org/reva/pull/2053): Safer defaults for TLS verification on LDAP connections * Enhancement [cs3org/reva#2115](https://github.com/cs3org/reva/pull/2115): Reduce code duplication in LDAP related drivers - * Enhancement [cs3org/reva#2100](https://github.com/cs3org/reva/pull/2100): Resource id based archiver for zip/tar downloads + * Enhancement [cs3org/reva#1989](https://github.com/cs3org/reva/pull/1989): Add redirects from OC10 URL formats + * Enhancement [cs3org/reva#2479](https://github.com/cs3org/reva/pull/2479): Limit publicshare and resourceinfo scope content + * Enhancement [cs3org/reva#2071](https://github.com/cs3org/reva/pull/2071): Implement listing favorites via the dav report API + * Enhancement [cs3org/reva#2091](https://github.com/cs3org/reva/pull/2091): Nextcloud share managers + * Enhancement [cs3org/reva#2070](https://github.com/cs3org/reva/pull/2070): More unit tests for the Nextcloud storage provider + * Enhancement [cs3org/reva#2087](https://github.com/cs3org/reva/pull/2087): More unit tests for the Nextcloud auth and user managers + * Enhancement [cs3org/reva#2075](https://github.com/cs3org/reva/pull/2075): Make owncloudsql leverage existing filecache index + * Enhancement [cs3org/reva#2050](https://github.com/cs3org/reva/pull/2050): Add a share types filter to the OCS API + * Enhancement [cs3org/reva#2134](https://github.com/cs3org/reva/pull/2134): Use space Type from request + * Enhancement [cs3org/reva#2132](https://github.com/cs3org/reva/pull/2132): Align local tests with drone setup + * Enhancement [cs3org/reva#2095](https://github.com/cs3org/reva/pull/2095): Whitelisting for apps + * Enhancement [cs3org/reva#2155](https://github.com/cs3org/reva/pull/2155): Pass an extra query parameter to WOPI /openinapp with a + https://github.com/owncloud/ocis/pull/2615 https://github.com/owncloud/ocis/pull/2566 - -* Enhancement - Update reva to v1.13.1-0.20210917065320-df33e69a6bdc: [#2520](https://github.com/owncloud/ocis/pull/2520) - - Updated reva to version v1.13.1-0.20210917065320-df33e69a6bdc This update includes: - - Enhancement [cs3org#reva#2071](https://github.com/cs3org/reva/pull/2071): - Implement listing favorites via the dav report API Enhancement - [cs3org#reva#2053](https://github.com/cs3org/reva/pull/2053): Use safer defaults for - TLS verification on LDAP connections - https://github.com/owncloud/ocis/pull/2520 # Changelog for [1.12.0] (2021-09-14) diff --git a/Dockerfile b/Dockerfile index 512d2aa3c1..5b3531133f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM owncloudci/golang:1.16 as build +FROM owncloudci/golang:1.17 as build COPY ./ /ocis/ diff --git a/changelog/unreleased/appregistry-config.md b/changelog/unreleased/appregistry-config.md new file mode 100644 index 0000000000..b234780945 --- /dev/null +++ b/changelog/unreleased/appregistry-config.md @@ -0,0 +1,6 @@ +Enhancement: Updated MimeTypes configuration for AppRegistry + +We updated the type of the mime types config to a list, to keep +the order of mime types from the config. + +https://github.com/owncloud/ocis/pull/2603 diff --git a/changelog/unreleased/create-space-response.md b/changelog/unreleased/create-space-response.md new file mode 100644 index 0000000000..1fbaa56d7a --- /dev/null +++ b/changelog/unreleased/create-space-response.md @@ -0,0 +1,6 @@ +Enhancement: Return the newly created space + +Changed the response of the CreateSpace method to include the newly created space. + +https://github.com/owncloud/ocis/pull/2610 +https://github.com/cs3org/reva/pull/2158 diff --git a/changelog/unreleased/go-1-17.md b/changelog/unreleased/go-1-17.md new file mode 100644 index 0000000000..0d2e6f53e4 --- /dev/null +++ b/changelog/unreleased/go-1-17.md @@ -0,0 +1,5 @@ +Enhancement: Upgrade to GO 1.17 + +We've upgraded the used GO version from 1.16 to 1.17. + +https://github.com/owncloud/ocis/pull/2605 diff --git a/changelog/unreleased/update-reva-to-477bb18843a97c6e392dd316e8735ccbe44f16ed.md b/changelog/unreleased/update-reva-to-477bb18843a97c6e392dd316e8735ccbe44f16ed.md index 3b720c229f..8023bdaf8d 100644 --- a/changelog/unreleased/update-reva-to-477bb18843a97c6e392dd316e8735ccbe44f16ed.md +++ b/changelog/unreleased/update-reva-to-477bb18843a97c6e392dd316e8735ccbe44f16ed.md @@ -1,23 +1,50 @@ -Enhancement: Update reva to v1.13.1-0.20211001063718-477bb18843a9 +Enhancement: Update reva to v1.14.0 This update includes: -* Bugfix [cs3org/reva#2076](https://github.com/cs3org/reva/pull/2076): Fix chi routing -* Bugfix [cs3org/reva#2077](https://github.com/cs3org/reva/pull/2077): Fix concurrent registration of mimetypes -* Bugfix [cs3org/reva#2074](https://github.com/cs3org/reva/pull/2074): Fix Stat() for eos storage provider -* Bugfix [cs3org/reva#2072](https://github.com/cs3org/reva/pull/2072): Fix denial shares being visible on Shared-with-me page -* Bugfix [cs3org/reva#2073](https://github.com/cs3org/reva/pull/2073): Fix opening a readonly filetype with WOPI -* Bugfix [cs3org/reva#2114](https://github.com/cs3org/reva/pull/2114): Fix apps as default while registering and skip unset mimetypes -* Security [cs3org/reva#2093](https://github.com/cs3org/reva/pull/2093): Limit the data exposed to resourceinfo and publicshare scopes -* Security [cs3org/reva#2053](https://github.com/cs3org/reva/pull/2053): Use safer defaults for TLS verification on LDAP connections -* Enhancement [cs3org/reva#1989](https://github.com/cs3org/reva/pull/1989): Implement url translation for legacy urls -* Enhancement [cs3org/reva#2075](https://github.com/cs3org/reva/pull/2075): Make owncloudsql leverage existing filecache index -* Enhancement [cs3org/reva#2090](https://github.com/cs3org/reva/pull/2090): Add space name during listStorageSpaces on decomposedfs -* Enhancement [cs3org/reva#2088](https://github.com/cs3org/reva/pull/2088): Add archiver and app provider capabilities -* Enhancement [cs3org/reva#2106](https://github.com/cs3org/reva/pull/2106): Add max num files and max size to the archiver capabilities -* Enhancement [cs3org/reva#2067](https://github.com/cs3org/reva/pull/2067): Extend AppRegistry and AppProvider -* Enhancement [cs3org/reva#2095](https://github.com/cs3org/reva/pull/2095): Whitelist apps via AppRegistry and AppProvider -* Enhancement [cs3org/reva#2115](https://github.com/cs3org/reva/pull/2115): Reduce code duplication in LDAP related drivers -* Enhancement [cs3org/reva#2100](https://github.com/cs3org/reva/pull/2100): Resource id based archiver for zip/tar downloads + * Bugfix [cs3org/reva#2103](https://github.com/cs3org/reva/pull/2103): AppProvider: propagate back errors reported by WOPI + * Bugfix [cs3org/reva#2149](https://github.com/cs3org/reva/pull/2149): Remove excess info from the http list app providers endpoint + * Bugfix [cs3org/reva#2114](https://github.com/cs3org/reva/pull/2114): Add as default app while registering and skip unset mimetypes + * Bugfix [cs3org/reva#2095](https://github.com/cs3org/reva/pull/2095): Fix app open when multiple app providers are present + * Bugfix [cs3org/reva#2135](https://github.com/cs3org/reva/pull/2135): Make TUS capabilities configurable + * Bugfix [cs3org/reva#2076](https://github.com/cs3org/reva/pull/2076): Fix chi routing + * Bugfix [cs3org/reva#2077](https://github.com/cs3org/reva/pull/2077): Fix concurrent registration of mimetypes + * Bugfix [cs3org/reva#2154](https://github.com/cs3org/reva/pull/2154): Return OK when trying to delete a non existing reference + * Bugfix [cs3org/reva#2078](https://github.com/cs3org/reva/pull/2078): Fix nil pointer exception in stat + * Bugfix [cs3org/reva#2073](https://github.com/cs3org/reva/pull/2073): Fix opening a readonly filetype with WOPI + * Bugfix [cs3org/reva#2140](https://github.com/cs3org/reva/pull/2140): Map GRPC error codes to REVA errors + * Bugfix [cs3org/reva#2147](https://github.com/cs3org/reva/pull/2147): Follow up of #2138: this is the new expected format + * Bugfix [cs3org/reva#2116](https://github.com/cs3org/reva/pull/2116): Differentiate share types when retrieving received shares in sql driver + * Bugfix [cs3org/reva#2074](https://github.com/cs3org/reva/pull/2074): Fix Stat() for EOS storage provider + * Bugfix [cs3org/reva#2151](https://github.com/cs3org/reva/pull/2151): Fix return code for webdav uploads when the token expired + * Change [cs3org/reva#2121](https://github.com/cs3org/reva/pull/2121): Sharemanager API change + * Enhancement [cs3org/reva#2090](https://github.com/cs3org/reva/pull/2090): Return space name during list storage spaces + * Enhancement [cs3org/reva#2138](https://github.com/cs3org/reva/pull/2138): Default AppProvider on top of the providers list + * Enhancement [cs3org/reva#2137](https://github.com/cs3org/reva/pull/2137): Revamp app registry and add parameter to control file creation + * Enhancement [cs3org/reva#145](https://github.com/cs3org/reva/pull/2137): UI improvements for the AppProviders + * Enhancement [cs3org/reva#2088](https://github.com/cs3org/reva/pull/2088): Add archiver and app provider to ocs capabilities + * Enhancement [cs3org/reva#2537](https://github.com/cs3org/reva/pull/2537): Add maximum files and size to archiver capabilities + * Enhancement [cs3org/reva#2100](https://github.com/cs3org/reva/pull/2100): Add support for resource id to the archiver + * Enhancement [cs3org/reva#2158](https://github.com/cs3org/reva/pull/2158): Augment the Id of new spaces + * Enhancement [cs3org/reva#2085](https://github.com/cs3org/reva/pull/2085): Make encoding user groups in access tokens configurable + * Enhancement [cs3org/reva#146](https://github.com/cs3org/reva/pull/146): Filter the denial shares (permission = 0) out of + * Enhancement [cs3org/reva#2141](https://github.com/cs3org/reva/pull/2141): Use golang v1.17 + * Enhancement [cs3org/reva#2053](https://github.com/cs3org/reva/pull/2053): Safer defaults for TLS verification on LDAP connections + * Enhancement [cs3org/reva#2115](https://github.com/cs3org/reva/pull/2115): Reduce code duplication in LDAP related drivers + * Enhancement [cs3org/reva#1989](https://github.com/cs3org/reva/pull/1989): Add redirects from OC10 URL formats + * Enhancement [cs3org/reva#2479](https://github.com/cs3org/reva/pull/2479): Limit publicshare and resourceinfo scope content + * Enhancement [cs3org/reva#2071](https://github.com/cs3org/reva/pull/2071): Implement listing favorites via the dav report API + * Enhancement [cs3org/reva#2091](https://github.com/cs3org/reva/pull/2091): Nextcloud share managers + * Enhancement [cs3org/reva#2070](https://github.com/cs3org/reva/pull/2070): More unit tests for the Nextcloud storage provider + * Enhancement [cs3org/reva#2087](https://github.com/cs3org/reva/pull/2087): More unit tests for the Nextcloud auth and user managers + * Enhancement [cs3org/reva#2075](https://github.com/cs3org/reva/pull/2075): Make owncloudsql leverage existing filecache index + * Enhancement [cs3org/reva#2050](https://github.com/cs3org/reva/pull/2050): Add a share types filter to the OCS API + * Enhancement [cs3org/reva#2134](https://github.com/cs3org/reva/pull/2134): Use space Type from request + * Enhancement [cs3org/reva#2132](https://github.com/cs3org/reva/pull/2132): Align local tests with drone setup + * Enhancement [cs3org/reva#2095](https://github.com/cs3org/reva/pull/2095): Whitelisting for apps + * Enhancement [cs3org/reva#2155](https://github.com/cs3org/reva/pull/2155): Pass an extra query parameter to WOPI /openinapp with a + +https://github.com/owncloud/ocis/pull/2615 https://github.com/owncloud/ocis/pull/2566 +https://github.com/owncloud/ocis/pull/2520 diff --git a/changelog/unreleased/update-reva.md b/changelog/unreleased/update-reva.md deleted file mode 100644 index d3e48d5bf5..0000000000 --- a/changelog/unreleased/update-reva.md +++ /dev/null @@ -1,9 +0,0 @@ -Enhancement: Update reva to v1.13.1-0.20210917065320-df33e69a6bdc - -Updated reva to version v1.13.1-0.20210917065320-df33e69a6bdc -This update includes: - -Enhancement [cs3org#reva#2071](https://github.com/cs3org/reva/pull/2071): Implement listing favorites via the dav report API -Enhancement [cs3org#reva#2053](https://github.com/cs3org/reva/pull/2053): Use safer defaults for TLS verification on LDAP connections - -https://github.com/owncloud/ocis/pull/2520 diff --git a/deployments/examples/ocis_hello/config/ocis/web-config.dist.json b/deployments/examples/ocis_hello/config/ocis/web-config.dist.json index f8dc0ab6f9..1a8b7f8b85 100644 --- a/deployments/examples/ocis_hello/config/ocis/web-config.dist.json +++ b/deployments/examples/ocis_hello/config/ocis/web-config.dist.json @@ -1,6 +1,6 @@ { "server": "https://ocis.owncloud.test", - "theme": "owncloud", + "theme": "https://ocis.owncloud.test/themes/owncloud/theme.json", "version": "0.1.0", "openIdConnect": { "metadata_url": "https://ocis.owncloud.test/.well-known/openid-configuration", diff --git a/deployments/examples/ocis_wopi/config/ocis/mimetypes.json b/deployments/examples/ocis_wopi/config/ocis/mimetypes.json index 3b6e5ccd15..9cd243ed3a 100644 --- a/deployments/examples/ocis_wopi/config/ocis/mimetypes.json +++ b/deployments/examples/ocis_wopi/config/ocis/mimetypes.json @@ -1,5 +1,6 @@ -{ - "application/pdf": { +[ + { + "mime_type": "application/pdf", "extension": "pdf", "name": "PDF", "description": "PDF document", @@ -7,7 +8,8 @@ "default_app": "", "allow_creation": false }, - "application/vnd.oasis.opendocument.text": { + { + "mime_type": "application/vnd.oasis.opendocument.text", "extension": "odt", "name": "OpenDocument", "description": "OpenDocument text document", @@ -15,7 +17,8 @@ "default_app": "Collabora", "allow_creation": true }, - "application/vnd.oasis.opendocument.spreadsheet": { + { + "mime_type": "application/vnd.oasis.opendocument.spreadsheet", "extension": "ods", "name": "OpenSpreadsheet", "description": "OpenDocument spreadsheet document", @@ -23,7 +26,8 @@ "default_app": "Collabora", "allow_creation": true }, - "application/vnd.oasis.opendocument.presentation": { + { + "mime_type": "application/vnd.oasis.opendocument.presentation", "extension": "odp", "name": "OpenPresentation", "description": "OpenDocument presentation document", @@ -31,7 +35,8 @@ "default_app": "Collabora", "allow_creation": true }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + { + "mime_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "extension": "docx", "name": "Microsoft Word", "description": "Microsoft Word document", @@ -39,7 +44,8 @@ "default_app": "OnlyOffice", "allow_creation": true }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + { + "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "extension": "xlsx", "name": "Microsoft Excel", "description": "Microsoft Excel document", @@ -47,7 +53,8 @@ "default_app": "OnlyOffice", "allow_creation": true }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + { + "mime_type": "application/vnd.openxmlformats-officedocument.presentationml.presentation", "extension": "pptx", "name": "Microsoft PowerPoint", "description": "Microsoft PowerPoint document", @@ -55,7 +62,8 @@ "default_app": "OnlyOffice", "allow_creation": true }, - "application/vnd.jupyter": { + { + "mime_type": "application/vnd.jupyter", "extension": "ipynb", "name": "Jupyter Notebook", "description": "Jupyter Notebook", @@ -63,7 +71,8 @@ "default_app": "", "allow_creation": true }, - "text/markdown": { + { + "mime_type": "text/markdown", "extension": "md", "name": "Markdown file", "description": "Markdown file", @@ -71,7 +80,8 @@ "default_app": "CodiMD", "allow_creation": true }, - "application/compressed-markdown": { + { + "mime_type": "application/compressed-markdown", "extension": "zmd", "name": "Compressed markdown file", "description": "Compressed markdown file", @@ -79,4 +89,4 @@ "default_app": "CodiMD", "allow_creation": false } -} +] diff --git a/docs/ocis/development/getting-started.md b/docs/ocis/development/getting-started.md index f7bff54147..8fa756efb6 100644 --- a/docs/ocis/development/getting-started.md +++ b/docs/ocis/development/getting-started.md @@ -16,7 +16,7 @@ So we are trying to reflect this in the tooling. It should be kept simple and qu Besides standard development tools like git and a text editor, you need the following software for development: -- Go >= v1.16 ([install instructions](https://golang.org/doc/install)) +- Go >= v1.17 ([install instructions](https://golang.org/doc/install)) - Yarn ([install instructions](https://classic.yarnpkg.com/en/docs/install)) - docker ([install instructions](https://docs.docker.com/get-docker/)) - docker-compose ([install instructions](https://docs.docker.com/compose/install/)) diff --git a/go.mod b/go.mod index 82e6381e82..d99359dc37 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/owncloud/ocis -go 1.16 +go 1.17 require ( github.com/CiscoM31/godata v1.0.4 @@ -58,7 +58,7 @@ require ( github.com/urfave/cli/v2 v2.3.0 github.com/yaegashi/msgraph.go v0.1.4 go.opencensus.io v0.23.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.24.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0 go.opentelemetry.io/otel v1.0.1 go.opentelemetry.io/otel/exporters/jaeger v1.0.1 go.opentelemetry.io/otel/sdk v1.0.1 @@ -75,6 +75,173 @@ require ( stash.kopano.io/kgol/rndm v1.1.1 ) +require ( + contrib.go.opencensus.io/exporter/prometheus v0.4.0 // indirect + github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c // indirect + github.com/Masterminds/goutils v1.1.1 // indirect + github.com/Masterminds/semver v1.5.0 // indirect + github.com/Masterminds/sprig v2.22.0+incompatible // indirect + github.com/Microsoft/go-winio v0.5.0 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect + github.com/ReneKroon/ttlcache/v2 v2.8.1 // indirect + github.com/RoaringBitmap/roaring v0.7.3 // indirect + github.com/acomagu/bufpipe v1.0.3 // indirect + github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect + github.com/aws/aws-sdk-go v1.40.46 // indirect + github.com/beevik/etree v1.1.0 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bitly/go-simplejson v0.5.0 // indirect + github.com/bits-and-blooms/bitset v1.2.0 // indirect + github.com/blevesearch/bleve_index_api v1.0.1 // indirect + github.com/blevesearch/go-porterstemmer v1.0.3 // indirect + github.com/blevesearch/mmap-go v1.0.2 // indirect + github.com/blevesearch/scorch_segment_api/v2 v2.0.1 // indirect + github.com/blevesearch/segment v0.9.0 // indirect + github.com/blevesearch/snowballstem v0.9.0 // indirect + github.com/blevesearch/upsidedown_store_api v1.0.1 // indirect + github.com/blevesearch/vellum v1.0.5 // indirect + github.com/blevesearch/zapx/v11 v11.2.2 // indirect + github.com/blevesearch/zapx/v12 v12.2.2 // indirect + github.com/blevesearch/zapx/v13 v13.2.2 // indirect + github.com/blevesearch/zapx/v14 v14.2.2 // indirect + github.com/blevesearch/zapx/v15 v15.2.2 // indirect + github.com/bluele/gcache v0.0.2 // indirect + github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40 // indirect + github.com/boombuler/barcode v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.1.1 // indirect + github.com/coreos/go-oidc v2.2.1+incompatible // indirect + github.com/coreos/go-semver v0.3.0 // indirect + github.com/coreos/go-systemd/v22 v22.3.2 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect + github.com/crewjam/httperr v0.2.0 // indirect + github.com/crewjam/saml v0.4.3 // indirect + github.com/cubewise-code/go-mime v0.0.0-20200519001935-8c5762b177d8 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/deckarep/golang-set v1.7.1 // indirect + github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect + github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect + github.com/dustin/go-humanize v1.0.0 // indirect + github.com/emirpasic/gods v1.12.0 // indirect + github.com/eternnoir/gncp v0.0.0-20170707042257-c70df2d0cd68 // indirect + github.com/fatih/color v1.9.0 // indirect + github.com/fsnotify/fsnotify v1.4.9 // indirect + github.com/gdexlab/go-render v1.0.1 // indirect + github.com/go-asn1-ber/asn1-ber v1.5.1 // indirect + github.com/go-git/gcfg v1.5.0 // indirect + github.com/go-git/go-billy/v5 v5.3.1 // indirect + github.com/go-git/go-git/v5 v5.4.2 // indirect + github.com/go-kit/log v0.1.0 // indirect + github.com/go-ldap/ldap/v3 v3.4.1 // indirect + github.com/go-logfmt/logfmt v0.5.0 // indirect + github.com/go-sql-driver/mysql v1.6.0 // indirect + github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang-jwt/jwt v3.2.2+incompatible // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/snappy v0.0.1 // indirect + github.com/gomodule/redigo v1.8.5 // indirect + github.com/google/go-cmp v0.5.6 // indirect + github.com/google/go-querystring v1.1.0 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/gorilla/schema v1.1.0 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/hashicorp/go-hclog v0.16.2 // indirect + github.com/hashicorp/go-plugin v1.4.3 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb // indirect + github.com/huandu/xstrings v1.3.2 // indirect + github.com/imdario/mergo v0.3.12 // indirect + github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/jonboulle/clockwork v0.2.1 // indirect + github.com/json-iterator/go v1.1.11 // indirect + github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect + github.com/klauspost/cpuid v1.3.1 // indirect + github.com/longsleep/go-metrics v0.0.0-20191013204616-cddea569b0ea // indirect + github.com/magiconair/properties v1.8.5 // indirect + github.com/mattermost/xml-roundtrip-validator v0.0.0-20201213122252-bcd7e1b9601e // indirect + github.com/mattn/go-colorable v0.1.8 // indirect + github.com/mattn/go-isatty v0.0.12 // indirect + github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/mattn/go-sqlite3 v1.14.8 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect + github.com/mendsley/gojwk v0.0.0-20141217222730-4d5ec6e58103 // indirect + github.com/miekg/dns v1.1.43 // indirect + github.com/mileusna/useragent v1.0.2 // indirect + github.com/minio/md5-simd v1.1.0 // indirect + github.com/minio/minio-go/v7 v7.0.14 // indirect + github.com/minio/sha256-simd v0.1.1 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/mitchellh/hashstructure v1.1.0 // indirect + github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.1 // indirect + github.com/mschoch/smat v0.2.0 // indirect + github.com/nats-io/jwt v1.1.0 // indirect + github.com/nats-io/nats.go v1.10.0 // indirect + github.com/nats-io/nkeys v0.1.4 // indirect + github.com/nats-io/nuid v1.0.1 // indirect + github.com/nxadm/tail v1.4.8 // indirect + github.com/orcaman/concurrent-map v0.0.0-20190826125027-8c72a8bb44f6 // indirect + github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c // indirect + github.com/patrickmn/go-cache v2.1.0+incompatible // indirect + github.com/pelletier/go-toml v1.9.3 // indirect + github.com/pkg/xattr v0.4.3 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pquerna/cachecontrol v0.1.0 // indirect + github.com/pquerna/otp v1.3.0 // indirect + github.com/prometheus/client_model v0.2.0 // indirect + github.com/prometheus/common v0.28.0 // indirect + github.com/prometheus/procfs v0.6.0 // indirect + github.com/prometheus/statsd_exporter v0.21.0 // indirect + github.com/rickb777/date v1.12.4 // indirect + github.com/rickb777/plural v1.2.0 // indirect + github.com/rs/cors v1.8.0 // indirect + github.com/rs/xid v1.3.0 // indirect + github.com/russellhaering/goxmldsig v1.1.0 // indirect + github.com/russross/blackfriday/v2 v2.0.1 // indirect + github.com/satori/go.uuid v1.2.0 // indirect + github.com/sciencemesh/meshdirectory-web v1.0.4 // indirect + github.com/sergi/go-diff v1.1.0 // indirect + github.com/sethvargo/go-password v0.2.0 // indirect + github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect + github.com/sony/gobreaker v0.4.1 // indirect + github.com/spf13/afero v1.6.0 // indirect + github.com/spf13/cast v1.3.1 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/steveyen/gtreap v0.1.0 // indirect + github.com/studio-b12/gowebdav v0.0.0-20210917133250-a3a86976a1df // indirect + github.com/subosito/gotenv v1.2.0 // indirect + github.com/tus/tusd v1.6.0 // indirect + github.com/wk8/go-ordered-map v0.2.0 // indirect + github.com/xanzy/ssh-agent v0.3.0 // indirect + go.etcd.io/bbolt v1.3.5 // indirect + go.etcd.io/etcd/api/v3 v3.5.0 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.0 // indirect + go.etcd.io/etcd/client/v3 v3.5.0 // indirect + go.uber.org/atomic v1.7.0 // indirect + go.uber.org/multierr v1.6.0 // indirect + go.uber.org/zap v1.17.0 // indirect + golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect + golang.org/x/sys v0.0.0-20210921065528-437939a70204 // indirect + golang.org/x/text v0.3.6 // indirect + golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba // indirect + golang.org/x/tools v0.1.5 // indirect + google.golang.org/appengine v1.6.7 // indirect + gopkg.in/ini.v1 v1.62.0 // indirect + gopkg.in/square/go-jose.v2 v2.6.0 // indirect + gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect + stash.kopano.io/kgol/kcc-go/v5 v5.0.1 // indirect + stash.kopano.io/kgol/oidc-go v0.3.1 // indirect +) + // this is a transitive replace. See https://github.com/libregraph/lico/blob/master/go.mod#L38 replace github.com/crewjam/saml => github.com/crewjam/saml v0.4.5 diff --git a/go.sum b/go.sum index 48a8f8c2ff..68ad437b31 100644 --- a/go.sum +++ b/go.sum @@ -1111,6 +1111,8 @@ github.com/vinyldns/go-vinyldns v0.0.0-20200917153823-148a5f6b8f14/go.mod h1:RWc github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= github.com/vultr/govultr/v2 v2.0.0/go.mod h1:2PsEeg+gs3p/Fo5Pw8F9mv+DUBEOlrNZ8GmCTGmhOhs= github.com/willf/bitset v1.1.10/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/wk8/go-ordered-map v0.2.0 h1:KlvGyHstD1kkGZkPtHCyCfRYS0cz84uk6rrW/Dnhdtk= +github.com/wk8/go-ordered-map v0.2.0/go.mod h1:9ZIbRunKbuvfPKyBP1SIKLcXNlv74YCOZ3t3VTS6gRk= github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= @@ -1157,16 +1159,14 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.24.0 h1:1hCzM7mwQbFQgk3Q4lAVEsGV6NB4Uj6Jt3EU+OiSBc8= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.24.0/go.mod h1:O0cG0vP6TP3c323kh70JmeG1jN69Sn9Z5HxgmeASFWY= -go.opentelemetry.io/otel v1.0.0/go.mod h1:AjRVh9A5/5DE7S+mZtTR6t8vpKKryam+0lREnfmS4cg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0 h1:Wx7nFnvCaissIUZxPkBqDz2963Z+Cl+PkYbDKzTxDqQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0/go.mod h1:E5NNboN0UqSAki0Atn9kVwaN7I+l25gGxDqBueo/74E= go.opentelemetry.io/otel v1.0.1 h1:4XKyXmfqJLOQ7feyV5DB6gsBFZ0ltB8vLtp6pj4JIcc= go.opentelemetry.io/otel v1.0.1/go.mod h1:OPEOD4jIT2SlZPMmwT6FqZz2C0ZNdQqiWcoK6M0SNFU= go.opentelemetry.io/otel/exporters/jaeger v1.0.1 h1:fg9udWIWWJMAT+Gq2ATFd/DFy3OZvKEZy9VK2amxvkw= go.opentelemetry.io/otel/exporters/jaeger v1.0.1/go.mod h1:85Ym3qknJdIdfRzYS9Ofy9NeLi9gKPFzFDBEHCKpfXI= go.opentelemetry.io/otel/sdk v1.0.1 h1:wXxFEWGo7XfXupPwVJvTBOaPBC9FEg0wB8hMNrKk+cA= go.opentelemetry.io/otel/sdk v1.0.1/go.mod h1:HrdXne+BiwsOHYYkBE5ysIcv2bvdZstxzmCQhxTcZkI= -go.opentelemetry.io/otel/trace v1.0.0/go.mod h1:PXTWqayeFUlJV1YDNhsJYB184+IvAH814St6o6ajzIs= go.opentelemetry.io/otel/trace v1.0.1 h1:StTeIH6Q3G4r0Fiw34LTokUFESZgIDUr0qIJ7mKmAfw= go.opentelemetry.io/otel/trace v1.0.1/go.mod h1:5g4i4fKLaX2BQpSBsxw8YYcgKpMMSW3x7ZTuYBr3sUk= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= diff --git a/graph/pkg/service/v0/drives.go b/graph/pkg/service/v0/drives.go index 4971e56585..0ed8202bc2 100644 --- a/graph/pkg/service/v0/drives.go +++ b/graph/pkg/service/v0/drives.go @@ -165,12 +165,12 @@ func (g Graph) CreateDrive(w http.ResponseWriter, r *http.Request) { } drive := msgraph.Drive{} if err := json.NewDecoder(r.Body).Decode(&drive); err != nil { - errorcode.GeneralException.Render(w, r, http.StatusBadRequest, fmt.Errorf("invalid schema definition").Error()) + errorcode.GeneralException.Render(w, r, http.StatusBadRequest, "invalid schema definition") return } spaceName := *drive.Name if spaceName == "" { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, fmt.Errorf("invalid name").Error()) + errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, "invalid name") return } @@ -182,7 +182,7 @@ func (g Graph) CreateDrive(w http.ResponseWriter, r *http.Request) { case "": driveType = "project" case "share": - errorcode.GeneralException.Render(w, r, http.StatusBadRequest, fmt.Errorf("drives of type share cannot be created via this api").Error()) + errorcode.GeneralException.Render(w, r, http.StatusBadRequest, "drives of type share cannot be created via this api") } var quota uint64 @@ -208,8 +208,24 @@ func (g Graph) CreateDrive(w http.ResponseWriter, r *http.Request) { } if resp.GetStatus().GetCode() != v1beta11.Code_CODE_OK { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, fmt.Errorf("").Error()) + errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, "") } + + wdu, err := url.Parse(g.config.Spaces.WebDavBase) + if err != nil { + g.logger.Error().Err(err).Msg("error parsing url") + errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) + return + } + + newDrive, err := cs3StorageSpaceToDrive(wdu, resp.StorageSpace) + if err != nil { + g.logger.Error().Err(err).Msg("error parsing url") + errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) + return + } + render.Status(r, http.StatusCreated) + render.JSON(w, r, newDrive) } func (g Graph) UpdateDrive(w http.ResponseWriter, r *http.Request) { @@ -227,19 +243,19 @@ func (g Graph) UpdateDrive(w http.ResponseWriter, r *http.Request) { } if req.FirstSegment.Identifier.Get() == "" { - errorcode.GeneralException.Render(w, r, http.StatusBadRequest, fmt.Errorf("identifier cannot be empty").Error()) + errorcode.GeneralException.Render(w, r, http.StatusBadRequest, "identifier cannot be empty") return } drive := msgraph.Drive{} if err = json.NewDecoder(r.Body).Decode(&drive); err != nil { - errorcode.GeneralException.Render(w, r, http.StatusBadRequest, fmt.Errorf("invalid request body: %v", r.Body).Error()) + errorcode.GeneralException.Render(w, r, http.StatusBadRequest, fmt.Sprintf("invalid request body: %v", r.Body)) return } identifierParts := strings.Split(req.FirstSegment.Identifier.Get(), "!") if len(identifierParts) != 2 { - errorcode.GeneralException.Render(w, r, http.StatusBadRequest, fmt.Errorf("invalid resource id: %v", req.FirstSegment.Identifier.Get()).Error()) + errorcode.GeneralException.Render(w, r, http.StatusBadRequest, fmt.Sprintf("invalid resource id: %v", req.FirstSegment.Identifier.Get())) w.WriteHeader(http.StatusInternalServerError) } @@ -263,13 +279,19 @@ func (g Graph) UpdateDrive(w http.ResponseWriter, r *http.Request) { }, } + if drive.Quota.HasTotal() { + updateSpaceRequest.StorageSpace.Quota = &storageprovider.Quota{ + QuotaMaxBytes: uint64(*drive.Quota.Total), + } + } + resp, err := client.UpdateStorageSpace(r.Context(), updateSpaceRequest) if err != nil { w.WriteHeader(http.StatusInternalServerError) } if resp.GetStatus().GetCode() != v1beta11.Code_CODE_OK { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, fmt.Errorf("").Error()) + errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, "") } w.WriteHeader(http.StatusNoContent) diff --git a/ocis/.dockerignore b/ocis/.dockerignore index 26258eb154..9efc252718 100644 --- a/ocis/.dockerignore +++ b/ocis/.dockerignore @@ -1,3 +1,4 @@ * !dist/ !bin/ +!docker diff --git a/ocis/docker/eos-ocis/Dockerfile b/ocis/docker/eos-ocis/Dockerfile index ea03b46142..29b559320d 100644 --- a/ocis/docker/eos-ocis/Dockerfile +++ b/ocis/docker/eos-ocis/Dockerfile @@ -1,37 +1,7 @@ -FROM centos:7 as build -ARG BRANCH=master - -ENV CGO_ENABLED=1 -ENV GOOS=linux -RUN rpm --rebuilddb && yum -y install \ - wget \ - time \ - make \ - gcc \ - git -RUN wget -q https://dl.google.com/go/go1.16.2.linux-amd64.tar.gz -RUN mkdir -p /usr/local/bin -RUN tar xf go1.16.2.linux-amd64.tar.gz -C /usr/local -RUN ln -s /usr/local/go/bin/* /usr/local/bin -RUN git clone https://github.com/owncloud/ocis.git -RUN cd ocis && git checkout ${BRANCH} -RUN cd ocis && git log -n 1 -RUN cd ocis/ocis && go build -v -o ../bin/ocis -toolexec '/usr/bin/time -v' ./cmd/ocis -# RUN cd ocis && make generate bin/ocis - -# build user lookup test program -RUN mkdir -p /build -COPY user.go /build/user.go -RUN cd /build && go build -o user user.go - - FROM owncloud/eos-base:4.8.26 RUN mkdir -p /usr/local/bin -COPY --from=build ocis/bin/ocis /usr/local/bin/ +COPY dist/binaries/ocis-linux-amd64 /usr/local/bin/ocis RUN chmod +x /usr/local/bin/ocis -COPY --from=build /build/user /usr/local/bin/user -RUN chmod +x /usr/local/bin/user - -COPY setup /setup -COPY entrypoint /entrypoint +COPY docker/eos-ocis/setup /setup +COPY docker/eos-ocis/entrypoint /entrypoint diff --git a/ocis/docker/eos-ocis/user.go b/ocis/docker/eos-ocis/user.go deleted file mode 100644 index 7b93190040..0000000000 --- a/ocis/docker/eos-ocis/user.go +++ /dev/null @@ -1,13 +0,0 @@ -package main - -import ( - "fmt" - "os" - gouser "os/user" -) - -func main() { - username := os.Args[1] - user, err := gouser.Lookup(username) - fmt.Printf("User %#v %#v %#v\n", username, user, err) -} diff --git a/storage/config/mimetypes.json b/storage/config/mimetypes.json index cd97efffc5..866ae9c51a 100644 --- a/storage/config/mimetypes.json +++ b/storage/config/mimetypes.json @@ -1,5 +1,6 @@ -{ - "application/pdf": { +[ + { + "mime_type": "application/pdf", "extension": "pdf", "name": "PDF", "description": "PDF document", @@ -7,7 +8,8 @@ "default_app": "", "allow_creation": false }, - "application/vnd.oasis.opendocument.text": { + { + "mime_type": "application/vnd.oasis.opendocument.text", "extension": "odt", "name": "OpenDocument", "description": "OpenDocument text document", @@ -15,7 +17,8 @@ "default_app": "", "allow_creation": true }, - "application/vnd.oasis.opendocument.spreadsheet": { + { + "mime_type": "application/vnd.oasis.opendocument.spreadsheet", "extension": "ods", "name": "OpenSpreadsheet", "description": "OpenDocument spreadsheet document", @@ -23,7 +26,8 @@ "default_app": "", "allow_creation": true }, - "application/vnd.oasis.opendocument.presentation": { + { + "mime_type": "application/vnd.oasis.opendocument.presentation", "extension": "odp", "name": "OpenPresentation", "description": "OpenDocument presentation document", @@ -31,7 +35,8 @@ "default_app": "", "allow_creation": true }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + { + "mime_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "extension": "docx", "name": "Microsoft Word", "description": "Microsoft Word document", @@ -39,7 +44,8 @@ "default_app": "", "allow_creation": true }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + { + "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "extension": "xlsx", "name": "Microsoft Excel", "description": "Microsoft Excel document", @@ -47,7 +53,8 @@ "default_app": "", "allow_creation": true }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + { + "mime_type": "application/vnd.openxmlformats-officedocument.presentationml.presentation", "extension": "pptx", "name": "Microsoft PowerPoint", "description": "Microsoft PowerPoint document", @@ -55,7 +62,8 @@ "default_app": "", "allow_creation": true }, - "application/vnd.jupyter": { + { + "mime_type": "application/vnd.jupyter", "extension": "ipynb", "name": "Jupyter Notebook", "description": "Jupyter Notebook", @@ -63,7 +71,8 @@ "default_app": "", "allow_creation": true }, - "text/markdown": { + { + "mime_type": "text/markdown", "extension": "md", "name": "Markdown file", "description": "Markdown file", @@ -71,7 +80,8 @@ "default_app": "", "allow_creation": true }, - "application/compressed-markdown": { + { + "mime_type": "application/compressed-markdown", "extension": "zmd", "name": "Compressed markdown file", "description": "Compressed markdown file", @@ -79,4 +89,4 @@ "default_app": "", "allow_creation": false } -} +] diff --git a/storage/pkg/command/gateway.go b/storage/pkg/command/gateway.go index a61df99297..7008fbbd1e 100644 --- a/storage/pkg/command/gateway.go +++ b/storage/pkg/command/gateway.go @@ -230,9 +230,10 @@ func rules(cfg *config.Config, logger log.Logger) map[string]map[string]interfac } } -func mimetypes(cfg *config.Config, logger log.Logger) map[string]map[string]interface{} { +func mimetypes(cfg *config.Config, logger log.Logger) []map[string]interface{} { type mimeTypeConfig struct { + MimeType string `json:"mime_type" mapstructure:"mime_type"` Extension string `json:"extension" mapstructure:"extension"` Name string `json:"name" mapstructure:"name"` Description string `json:"description" mapstructure:"description"` @@ -240,8 +241,8 @@ func mimetypes(cfg *config.Config, logger log.Logger) map[string]map[string]inte DefaultApp string `json:"default_app" mapstructure:"default_app"` AllowCreation bool `json:"allow_creation" mapstructure:"allow_creation"` } - var mimetypes map[string]mimeTypeConfig - var m map[string]map[string]interface{} + var mimetypes []mimeTypeConfig + var m []map[string]interface{} // load default app mimetypes from a json file if cfg.Reva.AppRegistry.MimetypesJSON != "" { @@ -263,60 +264,70 @@ func mimetypes(cfg *config.Config, logger log.Logger) map[string]map[string]inte logger.Info().Msg("No app registry mimetypes JSON file provided, loading default configuration") - mimetypes = map[string]mimeTypeConfig{ - "application/pdf": { + mimetypes = []mimeTypeConfig{ + { + MimeType: "application/pdf", Extension: "pdf", Name: "PDF", Description: "PDF document", }, - "application/vnd.oasis.opendocument.text": { + { + MimeType: "application/vnd.oasis.opendocument.text", Extension: "odt", Name: "OpenDocument", Description: "OpenDocument text document", AllowCreation: true, }, - "application/vnd.oasis.opendocument.spreadsheet": { + { + MimeType: "application/vnd.oasis.opendocument.spreadsheet", Extension: "ods", Name: "OpenSpreadsheet", Description: "OpenDocument spreadsheet document", AllowCreation: true, }, - "application/vnd.oasis.opendocument.presentation": { + { + MimeType: "application/vnd.oasis.opendocument.presentation", Extension: "odp", Name: "OpenPresentation", Description: "OpenDocument presentation document", AllowCreation: true, }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + { + MimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", Extension: "docx", Name: "Microsoft Word", Description: "Microsoft Word document", AllowCreation: true, }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + { + MimeType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", Extension: "xlsx", Name: "Microsoft Excel", Description: "Microsoft Excel document", AllowCreation: true, }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + { + MimeType: "application/vnd.openxmlformats-officedocument.presentationml.presentation", Extension: "pptx", Name: "Microsoft PowerPoint", Description: "Microsoft PowerPoint document", AllowCreation: true, }, - "application/vnd.jupyter": { + { + MimeType: "application/vnd.jupyter", Extension: "ipynb", Name: "Jupyter Notebook", Description: "Jupyter Notebook", }, - "text/markdown": { + { + MimeType: "text/markdown", Extension: "md", Name: "Markdown file", Description: "Markdown file", AllowCreation: true, }, - "application/compressed-markdown": { + { + MimeType: "application/compressed-markdown", Extension: "zmd", Name: "Compressed markdown file", Description: "Compressed markdown file", diff --git a/tests/config/drone/ocis-config.json b/tests/config/drone/ocis-config.json index a11c3b72fd..86a064b5c4 100644 --- a/tests/config/drone/ocis-config.json +++ b/tests/config/drone/ocis-config.json @@ -1,6 +1,6 @@ { "server": "https://ocis-server:9200", - "theme": "owncloud", + "theme": "https://ocis-server:9200/themes/owncloud/theme.json", "version": "0.1.0", "openIdConnect": { "metadata_url": "https://ocis-server:9200/.well-known/openid-configuration", diff --git a/web/pkg/config/config.go b/web/pkg/config/config.go index 4ea408ec2f..76a1c085a5 100644 --- a/web/pkg/config/config.go +++ b/web/pkg/config/config.go @@ -43,6 +43,8 @@ type Asset struct { // WebConfig defines the available web configuration for a dynamically rendered config.json. type WebConfig struct { Server string `json:"server,omitempty"` + ThemeServer string `json:"omit"` // only used to build Theme + ThemePath string `json:"omit"` // only used to build Theme Theme string `json:"theme,omitempty"` Version string `json:"version,omitempty"` // TODO what is version used for? OpenIDConnect OIDC `json:"openIdConnect,omitempty"` diff --git a/web/pkg/flagset/flagset.go b/web/pkg/flagset/flagset.go index 678e8dad84..b72ccd9546 100644 --- a/web/pkg/flagset/flagset.go +++ b/web/pkg/flagset/flagset.go @@ -164,16 +164,23 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag { &cli.StringFlag{ Name: "web-config-server", Value: flags.OverrideDefaultString(cfg.Web.Config.Server, "https://localhost:9200"), - Usage: "Server URL", + Usage: "Configuration server URL", EnvVars: []string{"WEB_UI_CONFIG_SERVER", "OCIS_URL"}, // WEB_UI_CONFIG_SERVER takes precedence over OCIS_URL Destination: &cfg.Web.Config.Server, }, + &cli.StringFlag{ + Name: "web-theme-server", + Value: flags.OverrideDefaultString(cfg.Web.Config.ThemeServer, "https://localhost:9200"), + Usage: "Theme server URL", + EnvVars: []string{"WEB_UI_THEME_SERVER", "OCIS_URL"}, // WEB_UI_THEME_SERVER takes precedence over OCIS_URL + Destination: &cfg.Web.Config.ThemeServer, + }, &cli.StringFlag{ Name: "web-config-theme", - Value: flags.OverrideDefaultString(cfg.Web.Config.Theme, "owncloud"), - Usage: "Theme", - EnvVars: []string{"WEB_UI_CONFIG_THEME"}, - Destination: &cfg.Web.Config.Theme, + Value: flags.OverrideDefaultString(cfg.Web.Config.ThemePath, "/themes/owncloud/theme.json"), + Usage: "Theme path on the theme server", + EnvVars: []string{"WEB_UI_THEME_PATH"}, + Destination: &cfg.Web.Config.ThemePath, }, &cli.StringFlag{ Name: "web-config-version", diff --git a/web/pkg/service/v0/service.go b/web/pkg/service/v0/service.go index 413e2ffcb2..7a8a32e530 100644 --- a/web/pkg/service/v0/service.go +++ b/web/pkg/service/v0/service.go @@ -4,6 +4,7 @@ import ( "encoding/json" "io/ioutil" "net/http" + "net/url" "os" "strings" "time" @@ -69,6 +70,13 @@ func (p Web) getPayload() (payload []byte, err error) { p.config.Web.Config.Options["hideSearchBar"] = true } + // build theme url + if themeServer, err := url.Parse(p.config.Web.Config.ThemeServer); err == nil { + p.config.Web.Config.Theme = themeServer.String() + p.config.Web.Config.ThemePath + } else { + p.config.Web.Config.Theme = p.config.Web.Config.ThemePath + } + if p.config.Web.Config.ExternalApps == nil { p.config.Web.Config.ExternalApps = []config.ExternalApp{ {