Releases: cs3org/reva
v1.17.0
Changelog for reva 1.17.0 (2021-12-09)
The following sections list the changes in reva 1.17.0 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #2305: Make sure /app/new takes
target
as absolute path - Fix #2303: Fix content disposition header for public links files
- Fix #2316: Fix the share types in propfinds
- Fix #2803: Fix app provider for editor public links
- Fix #2298: Remove share refs from trashbin
- Fix #2309: Remove early finish for zero byte file uploads
- Fix #1941: Fix TUS uploads with transfer token only
- Chg #2210: Fix app provider new file creation and improved error codes
- Enh #2217: OIDC auth driver for ESCAPE IAM
- Enh #2256: Return user type in the response of the ocs GET user call
- Enh #2315: Add new attributes to public link propfinds
- Enh #2740: Implement space membership endpoints
- Enh #2252: Add the xattr sys.acl to SysACL (eosgrpc)
- Enh #2314: OIDC: fallback if IDP doesn't provide "preferred_username" claim
Details
-
Bugfix #2305: Make sure /app/new takes
target
as absolute pathA mini-PR to make the
target
parameter absolute (by prepending/
if missing). -
Bugfix #2303: Fix content disposition header for public links files
-
Bugfix #2316: Fix the share types in propfinds
The share types for public links were not correctly added to propfinds.
-
Bugfix #2803: Fix app provider for editor public links
Fixed opening the app provider in public links with the editor permission. The app provider
failed to open the file in read write mode. -
Bugfix #2298: Remove share refs from trashbin
-
Bugfix #2309: Remove early finish for zero byte file uploads
We've fixed the upload of zero byte files by removing the early upload finishing mechanism.
-
Bugfix #1941: Fix TUS uploads with transfer token only
TUS uploads had been stopped when the user JWT token expired, even if only the transfer token
should be validated. Now uploads will continue as intended. -
Change #2210: Fix app provider new file creation and improved error codes
We've fixed the behavior for the app provider when creating new files. Previously the app
provider would overwrite already existing files when creating a new file, this is now handled
and prevented. The new file endpoint accepted a path to a file, but this does not work for spaces.
Therefore we now use the resource id of the folder where the file should be created and a filename
to create the new file. Also the app provider returns more useful error codes in a lot of cases. -
Enhancement #2217: OIDC auth driver for ESCAPE IAM
This enhancement allows for oidc token authentication via the ESCAPE IAM service.
Authentication relies on mappings of ESCAPE IAM groups to REVA users. For a valid token, if at
the most one group from the groups claim is mapped to one REVA user, authentication can take
place. -
Enhancement #2256: Return user type in the response of the ocs GET user call
-
Enhancement #2315: Add new attributes to public link propfinds
Added a new property "oc:signature-auth" to public link propfinds. This is a necessary change
to be able to support archive downloads in password protected public links. -
Enhancement #2740: Implement space membership endpoints
Implemented endpoints to add and remove members to spaces.
-
Enhancement #2252: Add the xattr sys.acl to SysACL (eosgrpc)
-
Enhancement #2314: OIDC: fallback if IDP doesn't provide "preferred_username" claim
Some IDPs don't support the "preferred_username" claim. Fallback to the "email" claim in that
case.
v1.16.0
Changelog for reva 1.16.0 (2021-11-19)
The following sections list the changes in reva 1.16.0 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #2245: Don't announce search-files capability
- Fix #2247: Merge user ACLs from EOS to sys ACLs
- Fix #2279: Return the inode of the version folder for files when listing in EOS
- Fix #2294: Fix HTTP return code when path is invalid
- Fix #2231: Fix share permission on a single file in sql share driver (cbox pkg)
- Fix #2230: Fix open by default app and expose default app
- Fix #2265: Fix nil pointer exception when resolving members of a group (rest driver)
- Fix #1214: Fix restoring versions
- Fix #2254: Fix spaces propfind
- Fix #2260: Fix unset quota xattr on darwin
- Fix #5776: Enforce permissions in public share apps
- Fix #2767: Fix status code for WebDAV mkcol requests where an ancestor is missing
- Fix #2287: Add public link access via mount-ID:token/relative-path to the scope
- Fix #2244: Fix the permissions response for shared files in the cbox sql driver
- Enh #2219: Add virtual view tests
- Enh #2230: Add priority to app providers
- Enh #2258: Improved error messages from the AppProviders
- Enh #2119: Add authprovider owncloudsql
- Enh #2211: Enhance the cbox share sql driver to store accepted group shares
- Enh #2212: Filter root path according to the agent that makes the request
- Enh #2237: Skip get user call in eosfs in case previous ones also failed
- Enh #2266: Callback for the EOS UID cache to retry fetch for failed keys
- Enh #2215: Aggregrate resource info properties for virtual views
- Enh #2271: Revamp the favorite manager and add the cbox sql driver
- Enh #2248: Cache whether a user home was created or not
- Enh #2282: Return a proper NOT_FOUND error when a user or group is not found
- Enh #2268: Add the reverseproxy http service
- Enh #2207: Enable users to list all spaces
- Enh #2286: Add trace ID to middleware loggers
- Enh #2251: Mentix service inference
- Enh #2218: Allow filtering of mime types supported by app providers
- Enh #2213: Add public link share type to propfind response
- Enh #2253: Support the file editor role for public links
- Enh #2208: Reduce redundant stat calls when statting by resource ID
- Enh #2235: Specify a list of allowed folders/files to be archived
- Enh #2267: Restrict the paths where share creation is allowed
- Enh #2252: Add the xattr sys.acl to SysACL (eosgrpc)
- Enh #2239: Update toml configs
Details
-
Bugfix #2245: Don't announce search-files capability
The
dav.reports
capability contained asearch-files
report which is currently not
implemented. We removed it from the defaults. -
Bugfix #2247: Merge user ACLs from EOS to sys ACLs
-
Bugfix #2279: Return the inode of the version folder for files when listing in EOS
-
Bugfix #2294: Fix HTTP return code when path is invalid
Before when a path was invalid, the archiver returned a 500 error code. Now this is fixed and
returns a 404 code. -
Bugfix #2231: Fix share permission on a single file in sql share driver (cbox pkg)
-
Bugfix #2230: Fix open by default app and expose default app
We've fixed the open by default app name behaviour which previously only worked, if the default
app was configured by the provider address. We also now expose the default app on the
/app/list
endpoint to clients. -
Bugfix #2265: Fix nil pointer exception when resolving members of a group (rest driver)
-
Bugfix #1214: Fix restoring versions
Restoring a version would not remove that version from the version list. Now the behavior is
compatible to ownCloud 10. -
Bugfix #2254: Fix spaces propfind
Fixed the deep listing of spaces.
-
Bugfix #2260: Fix unset quota xattr on darwin
Unset quota attributes were creating errors in the logfile on darwin.
-
Bugfix #5776: Enforce permissions in public share apps
A receiver of a read-only public share could still edit files via apps like Collabora. These
changes enforce the share permissions in apps used on publicly shared resources.owncloud/web#5776
owncloud/ocis#2479
https://github.com/cs3org/reva/pull/22142214 -
Bugfix #2767: Fix status code for WebDAV mkcol requests where an ancestor is missing
We've fixed the status code to 409 according to the WebDAV standard for MKCOL requests where an
ancestor is missing. Previously these requests would fail with an different error code (eg.
500) because of storage driver limitations (eg. oCIS FS cannot handle recursive creation of
directories). -
Bugfix #2287: Add public link access via mount-ID:token/relative-path to the scope
-
Bugfix #2244: Fix the permissions response for shared files in the cbox sql driver
-
Enhancement #2219: Add virtual view tests
-
Enhancement #2230: Add priority to app providers
Before the order of the list returned by the method FindProviders of app providers depended
from the order in which the app provider registered themselves. Now, it is possible to specify a
priority for each app provider, and even if an app provider re-register itself (for example
after a restart), the order is kept. -
Enhancement #2258: Improved error messages from the AppProviders
Some rather cryptic messages are now hidden to users, and some others are made more
user-friendly. Support for multiple locales is still missing and out of scope for now. -
Enhancement #2119: Add authprovider owncloudsql
We added an authprovider that can be configured to authenticate against an owncloud classic
mysql database. It verifies the password from the oc_users table. -
Enhancement #2211: Enhance the cbox share sql driver to store accepted group shares
-
Enhancement #2212: Filter root path according to the agent that makes the request
-
Enhancement #2237: Skip get user call in eosfs in case previous ones also failed
-
Enhancement #2266: Callback for the EOS UID cache to retry fetch for failed keys
-
Enhancement #2215: Aggregrate resource info properties for virtual views
-
Enhancement #2271: Revamp the favorite manager and add the cbox sql driver
-
Enhancement #2248: Cache whether a user home was created or not
Previously, on every call, we used to stat the user home to make sure that it existed. Now we cache
it for a given amount of time so as to avoid repeated calls. -
Enhancement #2282: Return a proper NOT_FOUND error when a user or group is not found
-
Enhancement #2268: Add the reverseproxy http service
This PR adds an HTTP service which does the job of authenticating incoming requests via the reva
middleware before forwarding them to the respective backends. This is useful for extensions
which do not have the auth mechanisms. -
Enhancement #2207: Enable users to list all spaces
Added a permission check if the user has the
list-all-spaces
permission. This enables users
to list all spaces, even those which they are not members of. -
Enhancement #2286: Add trace ID to middleware loggers
-
Enhancement #2251: Mentix service inference
Previously, 4 different services per site had to be created in the GOCDB. This PR removes this
redundancy by infering all endpoints from a single service entity, making site
administration a lot easier. -
Enhancement #2218: Allow filtering of mime types supported by app providers
-
Enhancement #2213: Add public link share type to propfind response
Added share type for public links to propfind responses.
-
Enhancement #2253: Support the file editor role for public links
-
Enhancement #2208: Reduce redundant stat calls when statting by resource ID
-
Enhancement #2235: Specify a list of allowed folders/files to be archived
Adds a configuration to the archiver service in order to specify a list of folders (as regex)
that can be archived. -
Enhancement #2267: Restrict the paths where share creation is allowed
This PR limits share creation to certain specified paths. These can be useful when users have
access to global spac...
v1.15.0
Changelog for reva 1.15.0 (2021-10-26)
The following sections list the changes in reva 1.15.0 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #2168: Override provider if was previously registered
- Fix #2173: Fix archiver max size reached error
- Fix #2167: Handle nil quota in decomposedfs
- Fix #2153: Restrict EOS project spaces sharing permissions to admins and writers
- Fix #2179: Fix the returned permissions for webdav uploads
- Fix #2177: Retrieve the full path of a share when setting as
- Chg #2479: Make apps able to work with public shares
- Enh #2203: Add alerting webhook to SiteAcc service
- Enh #2190: Update CODEOWNERS
- Enh #2174: Inherit ACLs for files from parent directories
- Enh #2152: Add a reference parameter to the getQuota request
- Enh #2171: Add optional claim parameter to machine auth
- Enh #2163: Nextcloud-based share manager for pkg/ocm/share
- Enh #2135: Nextcloud test improvements
- Enh #2180: Remove OCDAV options namespace parameter
- Enh #2117: Add ocs cache warmup strategy for first request from the user
- Enh #2170: Handle propfind requests for existing files
- Enh #2165: Allow access to recycle bin for arbitrary paths outside homes
- Enh #2193: Filter root paths according to user agent
- Enh #2162: Implement the UpdateStorageSpace method
- Enh #2189: Add user setting capability
Details
-
Bugfix #2168: Override provider if was previously registered
Previously if an AppProvider registered himself two times, for example after a failure, the
mime types supported by the provider contained multiple times the same provider. Now this has
been fixed, overriding the previous one. -
Bugfix #2173: Fix archiver max size reached error
Previously in the total size count of the files being archived, the folders were taken into
account, and this could cause a false max size reached error because the size of a directory is
recursive-computed, causing the archive to be truncated. Now in the size count, the
directories are skipped. -
Bugfix #2167: Handle nil quota in decomposedfs
Do not nil pointer derefenrence when sending nil quota to decomposedfs
-
Bugfix #2153: Restrict EOS project spaces sharing permissions to admins and writers
-
Bugfix #2179: Fix the returned permissions for webdav uploads
We've fixed the returned permissions for webdav uploads. It did not consider shares and public
links for the permission calculation, but does so now. -
Bugfix #2177: Retrieve the full path of a share when setting as
Accepted or on shared by me
-
Change #2479: Make apps able to work with public shares
Public share receivers were not possible to use apps in public shares because the apps couldn't
load the files in the public shares. This has now been made possible by changing the scope checks
for public shares. -
Enhancement #2203: Add alerting webhook to SiteAcc service
To integrate email alerting with the monitoring pipeline, a Prometheus webhook has been added
to the SiteAcc service. Furthermore account settings have been extended/modified
accordingly. -
Enhancement #2190: Update CODEOWNERS
-
Enhancement #2174: Inherit ACLs for files from parent directories
-
Enhancement #2152: Add a reference parameter to the getQuota request
Implementation of cs3org/cs3apis#147
Make the cs3apis accept a Reference in the getQuota Request to limit the call to a specific
storage space. -
Enhancement #2171: Add optional claim parameter to machine auth
-
Enhancement #2163: Nextcloud-based share manager for pkg/ocm/share
Note that pkg/ocm/share is very similar to pkg/share, but it deals with cs3/sharing/ocm
whereas pkg/share deals with cs3/sharing/collaboration -
Enhancement #2135: Nextcloud test improvements
-
Enhancement #2180: Remove OCDAV options namespace parameter
We dropped the namespace parameter, as it is not used in the options handler.
-
Enhancement #2117: Add ocs cache warmup strategy for first request from the user
-
Enhancement #2170: Handle propfind requests for existing files
-
Enhancement #2165: Allow access to recycle bin for arbitrary paths outside homes
-
Enhancement #2193: Filter root paths according to user agent
Adds a new rule setting in the storage registry ("allowed_user_agents"), that allows a user to
specify which storage provider shows according to the user agent that made the request. -
Enhancement #2162: Implement the UpdateStorageSpace method
Added the UpdateStorageSpace method to the decomposedfs.
-
Enhancement #2189: Add user setting capability
We've added a capability to communicate the existance of a user settings service to clients.
v1.14.0
Changelog for reva 1.14.0 (2021-10-12)
The following sections list the changes in reva 1.14.0 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #2103: AppProvider: propagate back errors reported by WOPI
- Fix #2149: Remove excess info from the http list app providers endpoint
- Fix #2114: Add as default app while registering and skip unset mimetypes
- Fix #2095: Fix app open when multiple app providers are present
- Fix #2135: Make TUS capabilities configurable
- Fix #2076: Fix chi routing
- Fix #2077: Fix concurrent registration of mimetypes
- Fix #2154: Return OK when trying to delete a non existing reference
- Fix #2078: Fix nil pointer exception in stat
- Fix #2073: Fix opening a readonly filetype with WOPI
- Fix #2140: Map GRPC error codes to REVA errors
- Fix #2147: Follow up of #2138: this is the new expected format
- Fix #2116: Differentiate share types when retrieving received shares in sql driver
- Fix #2074: Fix Stat() for EOS storage provider
- Fix #2151: Fix return code for webdav uploads when the token expired
- Chg #2121: Sharemanager API change
- Enh #2090: Return space name during list storage spaces
- Enh #2138: Default AppProvider on top of the providers list
- Enh #2137: Revamp app registry and add parameter to control file creation
- Enh #145: UI improvements for the AppProviders
- Enh #2088: Add archiver and app provider to ocs capabilities
- Enh #2537: Add maximum files and size to archiver capabilities
- Enh #2100: Add support for resource id to the archiver
- Enh #2158: Augment the Id of new spaces
- Enh #2085: Make encoding user groups in access tokens configurable
- Enh #146: Filter the denial shares (permission = 0) out of
- Enh #2141: Use golang v1.17
- Enh #2053: Safer defaults for TLS verification on LDAP connections
- Enh #2115: Reduce code duplication in LDAP related drivers
- Enh #1989: Add redirects from OC10 URL formats
- Enh #2479: Limit publicshare and resourceinfo scope content
- Enh #2071: Implement listing favorites via the dav report API
- Enh #2091: Nextcloud share managers
- Enh #2070: More unit tests for the Nextcloud storage provider
- Enh #2087: More unit tests for the Nextcloud auth and user managers
- Enh #2075: Make owncloudsql leverage existing filecache index
- Enh #2050: Add a share types filter to the OCS API
- Enh #2134: Use space Type from request
- Enh #2132: Align local tests with drone setup
- Enh #2095: Whitelisting for apps
- Enh #2155: Pass an extra query parameter to WOPI /openinapp with a
Details
-
Bugfix #2103: AppProvider: propagate back errors reported by WOPI
On /app/open and return base64-encoded fileids on /app/new
-
Bugfix #2149: Remove excess info from the http list app providers endpoint
We've removed excess info from the http list app providers endpoint. The app provider section
contained all mime types supported by a certain app provider, which led to a very big JSON
payload and since they are not used they have been removed again. Mime types not on the mime type
configuration list always hadapplication/octet-stream
as a file extension and
APPLICATION/OCTET-STREAM file
as name and description. Now these information are just
omitted. -
Bugfix #2114: Add as default app while registering and skip unset mimetypes
We fixed that app providers will be set as default app while registering if configured. Also we
changed the behaviour that listing supported mimetypes only displays allowed / configured
mimetypes. -
Bugfix #2095: Fix app open when multiple app providers are present
We've fixed the gateway behavior, that when multiple app providers are present, it always
returned that we have duplicate names for app providers. This was due the call to
GetAllProviders() without any subsequent filtering by name. Now this filter mechanism is in
place and the duplicate app providers error will only appear if a real duplicate is found. -
Bugfix #2135: Make TUS capabilities configurable
We've fixed the configuration for the TUS capabilities, which will now take the given
configuration instead of always using hardcoded defaults. -
Bugfix #2076: Fix chi routing
Chi routes based on the URL.RawPath, which is not updated by the shiftPath based routing used in
reva. By setting the RawPath to an empty string chi will fall pack to URL.Path, allowing it to
match percent encoded path segments, e.g. when trying to match emails or multibyte
characters. -
Bugfix #2077: Fix concurrent registration of mimetypes
We fixed registering mimetypes in the mime package when starting multiple storage providers
in the same process. -
Bugfix #2154: Return OK when trying to delete a non existing reference
When the gateway declines a share we can ignore a non existing reference.
-
Bugfix #2078: Fix nil pointer exception in stat
-
Bugfix #2073: Fix opening a readonly filetype with WOPI
This change fixes the opening of filetypes that are only supported to be viewed and not to be
edited by some WOPI compliant office suites. -
Bugfix #2140: Map GRPC error codes to REVA errors
We've fixed the error return behaviour in the gateway which would return GRPC error codes from
the auth middleware. Now it returns REVA errors which other parts of REVA are also able to
understand. -
Bugfix #2147: Follow up of #2138: this is the new expected format
For the mime types configuration for the AppRegistry.
-
Bugfix #2116: Differentiate share types when retrieving received shares in sql driver
-
Bugfix #2074: Fix Stat() for EOS storage provider
This change fixes the convertion between the eosclient.FileInfo to ResourceInfo, in which
the field ArbitraryMetadata was missing. Moreover, to be consistent with
SetArbitraryMetadata() EOS implementation, all the "user." prefix are stripped out from the
xattrs. -
Bugfix #2151: Fix return code for webdav uploads when the token expired
We've fixed the behavior webdav uploads when the token expired before the final stat.
Previously clients would receive a http 500 error which is wrong, because the file was
successfully uploaded and only the stat couldn't be performed. Now we return a http 200 ok and
the clients will fetch the file info in a separate propfind request.Also we introduced the upload expires header on the webdav/TUS and datagateway endpoints, to
signal clients how long an upload can be performed. -
Change #2121: Sharemanager API change
This PR updates reva to reflect the share manager CS3 API changes.
-
Enhancement #2090: Return space name during list storage spaces
In the decomposedfs we return now the space name in the response which is stored in the extended
attributes. -
Enhancement #2138: Default AppProvider on top of the providers list
For each mime type
Now for each mime type, when asking for the list of mime types, the default AppProvider, set both
using the config and the SetDefaultProviderForMimeType method, is always in the top of the
list of AppProviders. The config for the Providers and Mime Types for the AppRegistry changed,
using a list instead of a map. In fact the list of mime types returned by ListSupportedMimeTypes
is now ordered according the config. -
Enhancement #2137: Revamp app registry and add parameter to control file creation
-
Enhancement #145: UI improvements for the AppProviders
Mime types and their friendly names are now handled in the /app/list HTTP endpoint, and an
additional /app/new endpoint is made available to create new files for apps. -
Enhancement #2088: Add archiver and app provider to ocs capabilities
The archiver and app provider has been added to the ocs capabilities.
-
Enhancement #2537: Add maximum files and size to archiver capabilities
We added the maximum files count and maximum archive size of the archiver to the capabilities
endpoint. Clients can use this to generate warnings before the actual archive creation fails. -
Enhancement #2100: Add support for resource id to the archiver
Before the archiver only supported resources provided by a path. Now also the resources ID are
supported in order to specify the content of the archive to download. The parameters accepted
by the archiver are two: an optional list ofpath
(containing the paths of the resources) and
an optional list ofid
(containing the resources IDs of the resources).
v1.13.0
Changelog for reva 1.13.0 (2021-09-14)
The following sections list the changes in reva 1.13.0 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #2024: Fixes for http appprovider endpoints
- Fix #2054: Fix the response after deleting a share
- Fix #2026: Fix moving of a shared file
- Fix #2047: Do not truncate logs on restart
- Fix #1605: Allow to expose full paths in OCS API
- Fix #2033: Fix the storage id of shares
- Fix #2059: Remove "Got registration for user manager" print statements
- Fix #2051: Remove malformed parameters from WOPI discovery URLs
- Fix #2055: Fix uploads of empty files
- Fix #1991: Remove share references when declining shares
- Fix #2030: Fix superfluous WriteHeader on file upload
- Enh #2034: Fail initialization of a WOPI AppProvider if
- Enh #1968: Use a URL object in OpenInAppResponse
- Enh #1698: Implement folder download as archive
- Enh #2042: Escape ldap filters
- Enh #2028: Machine auth provider
- Enh #2043: Nextcloud user backend
- Enh #2006: Move ocs API to go-chi/chi based URL routing
- Enh #1994: Add owncloudsql driver for the userprovider
- Enh #1971: Add documentation for runtime-plugins
- Enh #2044: Add utility methods for creating share filters
- Enh #2065: New sharing role Manager
- Enh #2015: Add spaces to the list of capabilities
- Enh #2041: Create operations for Spaces
- Enh #2029: Tracing agent configuration
Details
-
Bugfix #2024: Fixes for http appprovider endpoints
-
Bugfix #2054: Fix the response after deleting a share
Added the deleted share to the response after deleting it.
-
Bugfix #2026: Fix moving of a shared file
As the share receiver, moving a shared file to another share was not possible.
-
Bugfix #2047: Do not truncate logs on restart
This change fixes the way log files were opened. Before they were truncated and now the log file
will be open in append mode and created it if it does not exist. -
Bugfix #1605: Allow to expose full paths in OCS API
Before this fix a share file_target was always harcoded to use a base path. This fix provides the
possiblity to expose full paths in the OCIS API and asymptotically in OCIS web. -
Bugfix #2033: Fix the storage id of shares
The storageid in the share object contained an incorrect value.
-
Bugfix #2059: Remove "Got registration for user manager" print statements
Removed the "Got registration for user manager" print statements which spams the log output
without respecting any log level. -
Bugfix #2051: Remove malformed parameters from WOPI discovery URLs
This change fixes the parsing of WOPI discovery URLs for MSOffice /hosting/discovery
endpoint. This endpoint is known to contain malformed query paramters and therefore this fix
removes them. -
Bugfix #2055: Fix uploads of empty files
This change fixes upload of empty files. Previously this was broken and only worked for the
owncloud filesystem as it bypasses the semantics of the InitiateFileUpload call to touch a
local file. -
Bugfix #1991: Remove share references when declining shares
Implemented the removal of share references when a share gets declined. Now when a user
declines a share it will no longer be listed in theirShares
directory. -
Bugfix #2030: Fix superfluous WriteHeader on file upload
Removes superfluous Writeheader on file upload and therefore removes the error message
"http: superfluous response.WriteHeader call from
github.com/cs3org/reva/internal/http/interceptors/log.(*responseLogger).WriteHeader
(log.go:154)" -
Enhancement #2034: Fail initialization of a WOPI AppProvider if
The underlying app is not WOPI-compliant nor it is supported by the WOPI bridge extensions
-
Enhancement #1968: Use a URL object in OpenInAppResponse
-
Enhancement #1698: Implement folder download as archive
Adds a new http service which will create an archive (platform dependent, zip in windows and tar
in linux) given a list of file. -
Enhancement #2042: Escape ldap filters
Added ldap filter escaping to increase the security of reva.
-
Enhancement #2028: Machine auth provider
Adds a new authentication method used to impersonate users, using a shared secret, called
api-key. -
Enhancement #2043: Nextcloud user backend
Adds Nextcloud as a user backend (Nextcloud drivers for 'auth' and 'user'). Also adds back the
Nextcloud storage integration tests. -
Enhancement #2006: Move ocs API to go-chi/chi based URL routing
-
Enhancement #1994: Add owncloudsql driver for the userprovider
We added a new backend for the userprovider that is backed by an owncloud 10 database. By default
theuser_id
column is used as the reva user username and reva user opaque id. When setting
join_username=true
the reva user username is joined from theoc_preferences
table
(appid='core' AND configkey='username'
) instead. When setting
join_ownclouduuid=true
the reva user opaqueid is joined from theoc_preferences
table
(appid='core' AND configkey='ownclouduuid'
) instead. This allows more flexible
migration strategies. It also supports aenable_medial_search
config option when
searching users that will enclose the query with%
. -
Enhancement #1971: Add documentation for runtime-plugins
-
Enhancement #2044: Add utility methods for creating share filters
Updated the CS3 API to include the new share grantee filter and added utility methods for
creating share filters. This will help making the code more concise. -
Enhancement #2065: New sharing role Manager
The new Manager role is equivalent to a Co-Owner with the difference that a Manager can create
grants on the root of the Space. This means inviting a user to a space will not require an action
from them, as the Manager assigns the grants. -
Enhancement #2015: Add spaces to the list of capabilities
In order for clients to be aware of the new spaces feature we need to enable the
spaces
flag on
the capabilities' endpoint. -
Enhancement #2041: Create operations for Spaces
DecomposedFS is aware now of the concept of Spaces, and supports for creating them.
-
Enhancement #2029: Tracing agent configuration
Earlier we could only use the collector URL directly, but since an agent can be deployed as a
sidecar process it makes much more sense to use it instead of the collector directly.
v1.12.0
Changelog for reva 1.12.0 (2021-08-24)
The following sections list the changes in reva 1.12.0 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #1819: Disable notifications
- Fix #2000: Fix dependency on tests
- Fix #1957: Fix etag propagation on deletes
- Fix #1960: Return the updated share after updating
- Fix #1993: Fix owncloudsql GetMD
- Fix #1954: Fix response format of the sharees API
- Fix #1965: Fix the file target of user and group shares
- Fix #1956: Fix trashbin listing with depth 0
- Fix #1987: Fix windows build
- Fix #1990: Increase oc10 compatibility of owncloudsql
- Fix #1978: Owner type is optional
- Fix #1980: Propagate the etag after restoring a file version
- Fix #1985: Add quota stubs
- Fix #1992: Check if symlink exists instead of spamming the console
- Fix #1913: Logic to restore files to readonly nodes
- Chg #1982: Move user context methods into a separate
userctx
package - Enh #1946: Add share manager that connects to oc10 databases
- Enh #1983: Add Codacy unit test coverage
- Enh #1803: Introduce new webdav spaces endpoint
- Enh #1998: Initial version of the Nextcloud storage driver
- Enh #1984: Replace OpenCensus with OpenTelemetry
- Enh #1861: Add support for runtime plugins
- Enh #2008: Site account extensions
Details
-
Bugfix #1819: Disable notifications
The presence of the key
notifications
in the capabilities' response would cause clients to
attempt to poll the notifications endpoint, which is not yet supported. To prevent the
unnecessary bandwidth we are disabling this altogether. -
Bugfix #2000: Fix dependency on tests
The Nextcloud storage driver depended on a mock http client from the tests/ folder This broke
the Docker build The dependency was removed A check was added to test the Docker build on each PR -
Bugfix #1957: Fix etag propagation on deletes
When deleting a file the etag propagation would skip the parent of the deleted file.
-
Bugfix #1960: Return the updated share after updating
When updating the state of a share in the in-memory share manager the old share state was
returned instead of the updated state. -
Bugfix #1993: Fix owncloudsql GetMD
The GetMD call internally was not prefixing the path when looking up resources by id.
-
Bugfix #1954: Fix response format of the sharees API
The sharees API wasn't returning the users and groups arrays correctly.
-
Bugfix #1965: Fix the file target of user and group shares
In some cases the file target of user and group shares was not properly prefixed.
-
Bugfix #1956: Fix trashbin listing with depth 0
The trashbin API handled requests with depth 0 the same as request with a depth of 1.
-
Bugfix #1987: Fix windows build
Add the necessary
golang.org/x/sys/windows
package import toowncloud
and
owncloudsql
storage drivers. -
Bugfix #1990: Increase oc10 compatibility of owncloudsql
We added a few changes to the owncloudsql storage driver to behave more like oc10.
-
Bugfix #1978: Owner type is optional
When reading the user from the extended attributes the user type might not be set, in this case we
now return a user with an invalid type, which correctly reflects the state on disk. -
Bugfix #1980: Propagate the etag after restoring a file version
The decomposedfs didn't propagate after restoring a file version.
-
Bugfix #1985: Add quota stubs
The
owncloud
andowncloudsql
drivers now read the available quota from disk to no longer
always return 0, which causes the web UI to disable uploads. -
Bugfix #1992: Check if symlink exists instead of spamming the console
The logs have been spammed with messages like
could not create symlink for ...
when using the
decomposedfs, eg. with the oCIS storage. We now check if the link exists before trying to create
it. -
Bugfix #1913: Logic to restore files to readonly nodes
This impacts solely the DecomposedFS. Prior to these changes there was no validation when a
user tried to restore a file from the trashbin to a share location (i.e any folder under
/Shares
).With this patch if the user restoring the resource has write permissions on the share, restore
is possible. -
Change #1982: Move user context methods into a separate
userctx
package -
Enhancement #1946: Add share manager that connects to oc10 databases
-
Enhancement #1983: Add Codacy unit test coverage
This PR adds unit test coverage upload to Codacy.
-
Enhancement #1803: Introduce new webdav spaces endpoint
Clients can now use a new webdav endpoint
/dav/spaces/<storagespaceid>/relative/path/to/file
to directly access storage
spaces.The
<storagespaceid>
can be retrieved using the ListStorageSpaces CS3 api call. -
Enhancement #1998: Initial version of the Nextcloud storage driver
This is not usable yet in isolation, but it's a first component of
https://github.com/pondersource/sciencemesh-nextcloud -
Enhancement #1984: Replace OpenCensus with OpenTelemetry
OpenTelemetry](https://opentelemetry.io/docs/concepts/what-is-opentelemetry/) is
an open standard a
sandbox CNCF project and it was formed through a merger of the OpenTracing and OpenCensus.OpenCensus and OpenTracing have merged to form OpenTelemetry, which serves as the next major
version of OpenCensus and OpenTracing. OpenTelemetry will offer backwards compatibility
with existing OpenCensus integrations, and we will continue to make security patches to
existing OpenCensus libraries for two years.There is a lot of outdated documentation as a result of this merger, and we will be better off
adopting the latest standard and libraries. -
Enhancement #1861: Add support for runtime plugins
This PR introduces a new plugin package, that allows loading external plugins into Reva at
runtime. The hashicorp go-plugin framework was used to facilitate the plugin loading and
communication. -
Enhancement #2008: Site account extensions
This PR heavily extends the site accounts service: * Extended the accounts information (not
just email and name) * Accounts now have a password * Users can now "log in" to their accounts and
edit it * Ability to grant access to the GOCDBFurthermore, these accounts can now be used to authenticate for logging in to our customized
GOCDB. More use cases for these accounts are also planned.
v1.11.0
Changelog for reva 1.11.0 (2021-08-03)
The following sections list the changes in reva 1.11.0 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #1899: Fix chunked uploads for new versions
- Fix #1906: Fix copy over existing resource
- Fix #1891: Delete Shared Resources as Receiver
- Fix #1907: Error when creating folder with existing name
- Fix #1937: Do not overwrite more specific matches when finding storage providers
- Fix #1939: Fix the share jail permissions in the decomposedfs
- Fix #1932: Numerous fixes to the owncloudsql storage driver
- Fix #1912: Fix response when listing versions of another user
- Fix #1910: Get user groups recursively in the cbox rest user driver
- Fix #1904: Set Content-Length to 0 when swallowing body in the datagateway
- Fix #1911: Fix version order in propfind responses
- Fix #1926: Trash Bin in oCIS Storage Operations
- Fix #1901: Fix response code when folder doesnt exist on upload
- Enh #1785: Extend app registry with AddProvider method and mimetype filters
- Enh #1938: Add methods to get and put context values
- Enh #1798: Add support for a deny-all permission on references
- Enh #1916: Generate updated protobuf bindings for EOS GRPC
- Enh #1887: Add "a" and "l" filter for grappa queries
- Enh #1919: Run gofmt before building
- Enh #1927: Implement RollbackToVersion for eosgrpc (needs a newer EOS MGM)
- Enh #1944: Implement listing supported mime types in app registry
- Enh #1870: Be defensive about wrongly quoted etags
- Enh #1940: Reduce memory usage when uploading with S3ng storage
- Enh #1888: Refactoring of the webdav code
- Enh #1900: Check for illegal names while uploading or moving files
- Enh #1925: Refactor listing and statting across providers for virtual views
Details
-
Bugfix #1899: Fix chunked uploads for new versions
Chunked uploads didn't create a new version, when the file to upload already existed.
-
Bugfix #1906: Fix copy over existing resource
When the target of a copy already exists, the existing resource will be moved to the trashbin
before executing the copy. -
Bugfix #1891: Delete Shared Resources as Receiver
It is now possible to delete a shared resource as a receiver and not having the data ending up in
the receiver's trash bin, causing a possible leak. -
Bugfix #1907: Error when creating folder with existing name
When a user tried to create a folder with the name of an existing file or folder the service didn't
return a response body containing the error. -
Bugfix #1937: Do not overwrite more specific matches when finding storage providers
Depending on the order of rules in the registry it could happend that more specific matches
(e.g. /home/Shares) were overwritten by more general ones (e.g. /home). This PR makes sure
that the registry always returns the most specific match. -
Bugfix #1939: Fix the share jail permissions in the decomposedfs
The share jail should be not writable
-
Bugfix #1932: Numerous fixes to the owncloudsql storage driver
The owncloudsql storage driver received numerous bugfixes and cleanups.
-
Bugfix #1912: Fix response when listing versions of another user
The OCS API returned the wrong response when a user tried to list the versions of another user's
file. -
Bugfix #1910: Get user groups recursively in the cbox rest user driver
-
Bugfix #1904: Set Content-Length to 0 when swallowing body in the datagateway
When swallowing the body the Content-Lenght needs to be set to 0 to prevent proxies from reading
the body. -
Bugfix #1911: Fix version order in propfind responses
The order of the file versions in propfind responses was incorrect.
-
Bugfix #1926: Trash Bin in oCIS Storage Operations
Support for restoring a target folder nested deep inside the trash bin in oCIS storage. The use
case is:MOVE -H 'Destination: https://localhost:9200/remote.php/dav/files/einstein/destination' ``` The previous command creates the `destination` folder and moves the contents of `/trash-bin/einstein/f1/f2` onto it. Retro-compatibility in the response code with ownCloud 10. Restoring a collection to a non-existent nested target is not supported and MUST return `409`. The use case is: ```console curl 'https://localhost:9200/remote.php/dav/trash-bin/einstein/f1/f2' -X MOVE -H 'Destination: https://localhost:9200/remote.php/dav/files/einstein/this/does/not/exist' ``` The previous command used to return `404` instead of the expected `409` by the clients. https://github.com/cs3org/reva/pull/1926
-
Bugfix #1901: Fix response code when folder doesnt exist on upload
When a new file was uploaded to a non existent folder the response code was incorrect.
-
Enhancement #1785: Extend app registry with AddProvider method and mimetype filters
-
Enhancement #1938: Add methods to get and put context values
Added
GetKeyValues
andPutKeyValues
methods to fetch/put values from/to context. -
Enhancement #1798: Add support for a deny-all permission on references
And implement it on the EOS storage
-
Enhancement #1916: Generate updated protobuf bindings for EOS GRPC
-
Enhancement #1887: Add "a" and "l" filter for grappa queries
This PR adds the namespace filters "a" and "l" for grappa queries. With no filter will look into
primary and e-groups, with "a" will look into primary/secondary/service/e-groups and with
"l" will look into lightweight accounts. -
Enhancement #1919: Run gofmt before building
-
Enhancement #1927: Implement RollbackToVersion for eosgrpc (needs a newer EOS MGM)
-
Enhancement #1944: Implement listing supported mime types in app registry
-
Enhancement #1870: Be defensive about wrongly quoted etags
When ocdav renders etags it will now try to correct them to the definition as quoted strings
which do not contain"
. This prevents double or triple quoted etags on the webdav api. -
Enhancement #1940: Reduce memory usage when uploading with S3ng storage
The memory usage could be high when uploading files using the S3ng storage. By providing the
actual file size when triggeringPutObject
, the overall memory usage is reduced. -
Enhancement #1888: Refactoring of the webdav code
Refactored the webdav code to make it reusable.
-
Enhancement #1900: Check for illegal names while uploading or moving files
The code was not checking for invalid file names during uploads and moves.
-
Enhancement #1925: Refactor listing and statting across providers for virtual views
v1.10.0
Changelog for reva 1.10.0 (2021-07-13)
The following sections list the changes in reva 1.10.0 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #1883: Pass directories with trailing slashes to eosclient.GenerateToken
- Fix #1878: Improve the webdav error handling in the trashbin
- Fix #1884: Do not send body on failed range request
- Enh #1744: Add support for lightweight user types
Details
-
Bugfix #1883: Pass directories with trailing slashes to eosclient.GenerateToken
-
Bugfix #1878: Improve the webdav error handling in the trashbin
The trashbin handles errors better now on the webdav endpoint.
-
Bugfix #1884: Do not send body on failed range request
Instead of send the error in the body of a 416 response we log it. This prevents the go reverse
proxy from choking on it and turning it into a 502 Bad Gateway response. -
Enhancement #1744: Add support for lightweight user types
This PR adds support for assigning and consuming user type when setting/reading users. On top
of that, support for lightweight users is added. These users have to be restricted to accessing
only shares received by them, which is accomplished by expanding the existing RBAC scope.
v1.9.1
Changelog for reva 1.9.1 (2021-07-09)
The following sections list the changes in reva 1.9.1 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #1843: Correct Dockerfile path for the reva CLI and alpine3.13 as builder
- Fix #1835: Cleanup owncloudsql driver
- Fix #1868: Minor fixes to the grpc/http plugin: checksum, url escaping
- Fix #1885: Fix template in eoshomewrapper to use context user rather than resource
- Fix #1833: Properly handle name collisions for deletes in the owncloud driver
- Fix #1874: Use the original file mtime during upload
- Fix #1854: Add the uid/gid to the url for eos
- Fix #1848: Fill in missing gid/uid number with nobody
- Fix #1831: Make the ocm-provider endpoint in the ocmd service unprotected
- Fix #1808: Use empty array in OCS Notifications endpoints
- Fix #1825: Raise max grpc message size
- Fix #1828: Send a proper XML header with error messages
- Chg #1828: Remove the oidc provider in order to upgrad mattn/go-sqlite3 to v1.14.7
- Enh #1834: Add API key to Mentix GOCDB connector
- Enh #1855: Minor optimization in parsing EOS ACLs
- Enh #1873: Update the EOS image tag to be for revad-eos image
- Enh #1802: Introduce list spaces
- Enh #1849: Add readonly interceptor
- Enh #1875: Simplify resource comparison
- Enh #1827: Support trashbin sub paths in the recycle API
Details
-
Bugfix #1843: Correct Dockerfile path for the reva CLI and alpine3.13 as builder
This was introduced on 117adad while porting the
configuration on .drone.yml to starlark.Force golang:alpine3.13 as base image to prevent errors from Make when running on Docker
<20.10 as it happens on Drone
ref.https://gitlab.alpinelinux.org/alpine/aports/-/issues/12396 -
Bugfix #1835: Cleanup owncloudsql driver
Use
owncloudsql
string when returning errors and removed copyMD as it does not need to copy
metadata from files. -
Bugfix #1868: Minor fixes to the grpc/http plugin: checksum, url escaping
-
Bugfix #1885: Fix template in eoshomewrapper to use context user rather than resource
-
Bugfix #1833: Properly handle name collisions for deletes in the owncloud driver
In the owncloud storage driver when we delete a file we append the deletion time to the file name.
If two fast consecutive deletes happened, the deletion time would be the same and if the two
files had the same name we ended up with only one file in the trashbin. -
Bugfix #1874: Use the original file mtime during upload
The decomposedfs was not using the original file mtime during uploads.
-
Bugfix #1854: Add the uid/gid to the url for eos
-
Bugfix #1848: Fill in missing gid/uid number with nobody
When an LDAP server does not provide numeric uid or gid properties for a user we now fall back to a
configurablenobody
id (default 99). -
Bugfix #1831: Make the ocm-provider endpoint in the ocmd service unprotected
-
Bugfix #1808: Use empty array in OCS Notifications endpoints
-
Bugfix #1825: Raise max grpc message size
As a workaround for listing larger folder we raised the
MaxCallRecvMsgSize
to 10MB. This
should be enough for ~15k files. The proper fix is implementing ListContainerStream in the
gateway, but we needed a way to test the web ui with larger collections. -
Bugfix #1828: Send a proper XML header with error messages
-
Change #1828: Remove the oidc provider in order to upgrad mattn/go-sqlite3 to v1.14.7
In order to upgrade mattn/go-sqlite3 to v1.14.7, the odic provider service is removed, which
is possible because it is not used anymore -
Enhancement #1834: Add API key to Mentix GOCDB connector
The PI (programmatic interface) of the GOCDB will soon require an API key; this PR adds the
ability to configure this key in Mentix. -
Enhancement #1855: Minor optimization in parsing EOS ACLs
-
Enhancement #1873: Update the EOS image tag to be for revad-eos image
-
Enhancement #1802: Introduce list spaces
The ListStorageSpaces call now allows listing all user homes and shared resources using a
storage space id. The gateway will forward requests to a specific storage provider when a
filter by id is given. Otherwise it will query all storage providers. Results will be
deduplicated. Currently, only the decomposed fs storage driver implements the necessary
logic to demonstrate the implmentation. A new/dav/spaces
WebDAV endpoint to directly
access a storage space is introduced in a separate PR. -
Enhancement #1849: Add readonly interceptor
The readonly interceptor could be used to configure a storageprovider in readonly mode. This
could be handy in some migration scenarios. -
Enhancement #1875: Simplify resource comparison
We replaced ResourceEqual with ResourceIDEqual where possible.
-
Enhancement #1827: Support trashbin sub paths in the recycle API
The recycle API could only act on the root items of the trashbin. Meaning if you delete a deep
tree, you couldn't restore just one file from that tree but you had to restore the whole tree. Now
listing, restoring and purging work also for sub paths in the trashbin.
v1.9.0
Changelog for reva 1.9.0 (2021-06-23)
The following sections list the changes in reva 1.9.0 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #1815: Drone CI - patch the 'store-dev-release' job to fix malformed requests
- Fix #1765: 'golang:alpine' as base image & CGO_ENABLED just for the CLI
- Chg #1721: Absolute and relative references
- Enh #1810: Add arbitrary metadata support to EOS
- Enh #1774: Add user ID cache warmup to EOS storage driver
- Enh #1471: EOEGrpc progress. Logging discipline and error handling
- Enh #1811: Harden public shares signing
- Enh #1793: Remove the user id from the trashbin key
- Enh #1795: Increase trashbin restore API compatibility
- Enh #1516: Use UidNumber and GidNumber fields in User objects
- Enh #1820: Tag v1.9.0
Details
-
Bugfix #1815: Drone CI - patch the 'store-dev-release' job to fix malformed requests
Replace the backquotes that were used for the date component of the URL with the
POSIX-confirmant command substitution '$()'. -
Bugfix #1765: 'golang:alpine' as base image & CGO_ENABLED just for the CLI
Some of the dependencies used by revad need CGO to be enabled in order to work. We also need to
install the 'mime-types' in alpine to correctly detect them on the storage-providers.The CGO_ENABLED=0 flag was added to the docker build flags so that it will produce a static
build. This allows usage of the 'scratch' image for reduction of the docker image size (e.g. the
reva cli). -
Change #1721: Absolute and relative references
We unified the
Reference_Id
endReference_Path
types to a combinedReference
that
contains both: - aresource_id
property that can identify a node using astorage_id
and an
opaque_id
- apath
property that can be used to represent absolute paths as well as paths
relative to the id based properties. While this is a breaking change it allows passing both:
absolute as well as relative references. -
Enhancement #1810: Add arbitrary metadata support to EOS
-
Enhancement #1774: Add user ID cache warmup to EOS storage driver
-
Enhancement #1471: EOEGrpc progress. Logging discipline and error handling
-
Enhancement #1811: Harden public shares signing
Makes golangci-lint happy as well
-
Enhancement #1793: Remove the user id from the trashbin key
We don't want to use the users uuid outside of the backend so I removed the id from the trashbin
file key. -
Enhancement #1795: Increase trashbin restore API compatibility
- The precondition were not checked before doing a trashbin restore in the ownCloud dav API.
Without the checks the API would behave differently compared to the oC10 API. * The restore
response was missing HTTP headers likeETag
* Update the name when restoring the file from
trashbin to a new target name
- The precondition were not checked before doing a trashbin restore in the ownCloud dav API.
-
Enhancement #1516: Use UidNumber and GidNumber fields in User objects
Update instances where CS3API's
User
objects are created and used to useGidNumber
, and
UidNumber
fields instead of storing them inOpaque
map. -
Enhancement #1820: Tag v1.9.0
Bump release number to v1.9.0 as it contains breaking changes related to changing the
reference type.