Releases: cs3org/reva
v3.0.1
Changelog for reva 3.0.1 (2025-07-04)
The following sections list the changes in reva 3.0.1 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #5213: Home creation
- Fix #5190: List file versions
- Fix #5189: Shares parent reference
- Fix #5204: Restore trashbin
- Fix #5219: Reva v3
- Fix #5198: Let sharees list versions
- Fix #5216: Download / restore versions in spaces
- Enh #5220: Clean up obosolete OCIS tests
- Enh #4864: Add HTTP header to disable versioning on EOS
- Enh #5201: EOS gRPC cleanup
- Enh #4883: Use newfind command in EOS
- Enh #5211: Add error code to DAV responses
- Enh #5210: Libregraph permission support
- Enh #5205: Ignore unknown routes
- Enh #5197: Pprof improvements
- Enh #5217: Spaces improvements
Details
-
Bugfix #5213: Home creation
-
Bugfix #5190: List file versions
- moved versions-related functions to utils package - new
spaceHref
function for listing
file versions - adapts code from #2855 for restoring and downloading file versions - add parent
info to propfind response - add space info to parent reference
- moved versions-related functions to utils package - new
-
Bugfix #5189: Shares parent reference
- change: replace
md.Id.SpaceID
with<storage-id>?<space-id>
- fix: parentReference -
add space info to id - removes double encoding of driveId - new function to return relative path
inside a space root - refactor space utils: - reorder functions (Encode > Decode > Parse) -
returnsSpaceID
instead ofpath
inDecodeResourceID
- new comments
- change: replace
-
Bugfix #5204: Restore trashbin
-
Bugfix #5219: Reva v3
Made reva module v3, to align with the github release
-
Bugfix #5198: Let sharees list versions
-
Bugfix #5216: Download / restore versions in spaces
- Some extra logging * Fixed a bug in IsVersionFolder * Fixed a bug in handling GET requests on the
VersionsHandler
- Some extra logging * Fixed a bug in IsVersionFolder * Fixed a bug in handling GET requests on the
-
Enhancement #5220: Clean up obosolete OCIS tests
-
Enhancement #4864: Add HTTP header to disable versioning on EOS
#4864
This
enhancement
introduces
a
new
header,
%60X-Disable-Versioning%60,
on
PUT
requests.
EOS
will
not
version
this
file
save
whenever
this
header
is
set
with
a
truthy
value.
See
also: -
Enhancement #5201: EOS gRPC cleanup
Remove reliance on binary client for some operations, split up EOS gRPC driver into several
files -
Enhancement #4883: Use newfind command in EOS
The EOS binary storage driver was still using EOS's oldfind command, which is deprecated. We
now moved to the new find command, for which an extra flag (--skip-version-dirs) is needed. -
Enhancement #5211: Add error code to DAV responses
-
Enhancement #5210: Libregraph permission support
Extension of the libregraph API to fix the following issues: * Creating links / shares now gets a
proper response * Support for updating links / shares * Support for deleting links / shares *
Removal of unsupported roles from /roleDefinitions endpoint -
Enhancement #5205: Ignore unknown routes
Currently, the gateway crashes with a fatal error if it encounters any unknown routes in the
routing table. Instead, we log the error and ignore the routes, which should make upgrades in
the routing table easier. -
Enhancement #5197: Pprof improvements
-
Enhancement #5217: Spaces improvements
Extended libregraph API, fixed restoring / downloading revisions in spaces
v3.0.0
Changelog for reva 3.0.0 (2025-06-03)
The following sections list the changes in reva 3.0.0 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #5082: Wrong quota total reported
- Fix #5120: Allow folders to be un-favorited
- Fix #5123: Use binary client for Attrs
- Fix #5119: Stop sending non-UTF8 strings over gRPC
- Fix #5124: Apps: fixed UserAgent matching
- Fix #5122: Use the correct eos app header
- Fix #5143: Eosgrpc: fixed panic with ACLs handling
- Fix #5156: Handlenew failed to handle spaces id
- Fix #5150: GetSpace with spaceID from URL
- Fix #5153: Ocdav/put response compatible with spaces
- Fix #5133: Fix broken handling of range requests
- Fix #5149: ListMyOfficeFiles
- Fix #5148: ListMyOfficeFiles
- Fix #5064: Impersonate owner on ListRevisions
- Fix #5166: Check for spaces in listshares
- Fix #5084: Use logicalbytes instead of bytes
- Fix #5044: Return an error when EOS List errors
- Fix #5072: Impersonate owner on Revisions
- Fix #5151: Spaces + apps broken
- Fix #5142: Renamed mock APIs
- Fix #5152: Revisions in spaces
- Chg #5155: ListMyOfficeFiles only lists projects, not home
- Chg #5105: Move publicshare sql driver
- Enh #5113: Log simplified user agent in apps
- Enh #5107: Add file extension in the returning app URL log message
- Enh #5085: Extend app /notify endpoint to allow reporting errors
- Enh #5110: Log acl payload on AddACL on EOS over gRPC
- Enh #5186: Clean up EOS driver
- Enh #5132: Add expiration dates reinforcement
- Enh #5158: Add expire date to capabilities
- Enh #5080: Log viewmode in the returning app URL message
- Enh #5160: Upgrade to go1.24
- Enh #4940: Refactoring of /home
- Enh #5174: Upgrade jwt library
- Enh #5134: Libregraph API expansion
- Enh #5127: ListMyOfficeFiles
- Enh #5129: Add makefile option for local plugins
- Enh #5076: Implement OCM 1.2
- Enh #5029: Pseudo-transactionalize sharing
- Enh #5109: Extra logging in publicshares
- Enh #5167: Improved logging of rhttp router
- Enh #4404: Add support for Spaces
Details
-
Bugfix #5082: Wrong quota total reported
The EOS
QuotaInfo
struct had fields forAvailableBytes
andAvailableInodes
, but these
were used to mean the total. This is fixed now. -
Bugfix #5120: Allow folders to be un-favorited
Currently, removing a folder from your favorites is broken, if you are the only one who has
favorited it. This is because the UnsetAttr call to EOS over gRPC is failing. As a temporary
workaround, we now always set it to empty. -
Bugfix #5123: Use binary client for Attrs
EOS < 5.3 has a couple of bugs related to attributes: * Attributes can only be removed as root or
the owner, but over gRPC we cannot become root * The recursive property is ignored on set
attributesFor these two issues, we circumvent them by calling the binary client until we have deployed EOS
5.3 -
Bugfix #5119: Stop sending non-UTF8 strings over gRPC
EOS supports having non-UTF8 attributes, which get returned in a Stat. This is problematic for
us, as we pass these attributes in the ArbitraryMetadata, which gets sent over gRPC. However,
the protobuf language specification states:A string must always contain UTF-8 encoded or 7-bit ASCII text, and cannot be longer than 2^32.
An example of such an attribute is:
User.$KERNEL.PURGE.SEC.FILEHASH="S��ϫ]�� 8000 �z��#1}��uU�v��8�L0R�9j�j��e?�2K�T<sJ�*�l���Dǭ��_[�>η�...��w�w[��Yg"
We fix this by stripping non-UTF8 metadata entries before sending the ResourceInfo over gRPC
-
Bugfix #5124: Apps: fixed UserAgent matching
-
Bugfix #5122: Use the correct eos app header
-
Bugfix #5143: Eosgrpc: fixed panic with ACLs handling
Fixes a panic that happens when listing a folder where files have no SysACLs, parent == nil and
versionFolder has ACLs. -
Bugfix #5156: Handlenew failed to handle spaces id
HandleNew, which creates new office files etc., tried to parse the parent container ref via
spaces, and had no fallback for non-spaces. This is now fixed. -
Bugfix #5150: GetSpace with spaceID from URL
getSpace
was getting the first element of path as the ID. This fix adds a new function
GetIdFromPath
, which uses the last element of the path as the ID. -
Bugfix #5153: Ocdav/put response compatible with spaces
Checks if
spaces
is enabled before returning thefileid
after a PUT request. -
Bugfix #5133: Fix broken handling of range requests
Currently, the video preview in public links is broken, because the browser sends a "Range:
bytes=0-" request. Since EOS over gRPC returns a ReadCloser on the file, which is not seekable,
Reva currently returns a 416 RequestedRangeNotSatisfiable response, breaking the video
preview.This PR modifies this behaviour to ignore the Range request in such cases.
Additionally, some errors where removed. For example, when the request does not contain
bytes=, Reva currently returns an error. However, RFC 7233 states:An origin server MUST ignore a Range header field that contains a range unit it does not
understandThus, we now ignore these requests instead of returning a 416.
-
Bugfix #5149: ListMyOfficeFiles
Regex was simplified, and a cache was created to keep version folder fileinfo, to make sure we
don't need a stat for every result -
Bugfix #5148: ListMyOfficeFiles
There was a bug in the regex for excel files: "(.*?)(.xls|.XLS|)[x|X]?$" contains an extra "|"
-
Bugfix #5064: Impersonate owner on ListRevisions
ListRevisions is currently broken for projects, because this happens on behalf of the user,
instead of the owner of the file. This behaviour is changed to do the call on behalf of the owner
(if we are in a non-home space). -
Bugfix #5166: Check for spaces in listshares
Opening files in their app from the "Shared with me" view was broken, because we returned spaces
ids even on old clients. -
Bugfix #5084: Use logicalbytes instead of bytes
EOS gRPC used
usedbytes
instead ofusedlogicalbytes
for calculating quota, resulting in
a wrong view -
Bugfix #5044: Return an error when EOS List errors
If we get an error while reading items, we now return the error to the user and break off the List
operation We do not want to return a partial list, because then a sync client may delete local
files that are missing on the server -
Bugfix #5072: Impersonate owner on Revisions
The current implementation of Download / Restore Revisions is not consistent with
ListRevisions, where we impersonate the owner in projects. We now also impersonate in the case
of Download and Restore. -
Bugfix #5151: Spaces + apps broken
There were still some places where Reva assumed that we are running spaces; while not verifying
this. This caused non-spaces WebUIs to break. This is fixed now. -
Bugfix #5142: Renamed mock APIs
The once called "mock" space APIs have been renamed as they provide static content to the web
frontend -
Bugfix #5152: Revisions in spaces
The PR that merged spaces compatibility broke listing revisions. This is now fixed.
-
Change #5155: ListMyOfficeFiles only lists projects, not home
ListMyOfficeFiles now shows only one project or the user's home, not both at the same time
-
Change #5105: Move publicshare sql driver
The publicshare sql driver has been moved to reva-plugins, to be consistent with the usershare
sql driver. -
Enhancement #5113: Log simplified user agent in apps
-
Enhancement #5107: Add file extension in the returning app URL log message
-
Enhancement #5085: Extend app /notify endpoint to allow reporting errors
-
Enhancement #5110: Log acl payload on AddACL on EOS over gRPC
-
Enhancement #5186: Clean up EOS driver
- removed unused eos drivers (home, grpc, grpchome) * removed dependency on wrapper
-
Enhancement #5132: Add expiration dates reinforcement
Public links of folders with RW permissions now have a configurable expiration date.
-
Enhancement #5158: Add expire date to capabilities
-
Enhancement #5080: Log viewmode in the returning app URL message
-
Enhancement #5160: Upgrade to go1.24
Upgrade to go1.24
-
Enhancement #4940: Refactoring of /home
-
Enhancement #5174: Upgrade jwt library
Update the golang-jwt library to v5
-
Enhancement #5134: Libregraph API expa...
v2.27.7
Changelog for reva 2.27.7 (2025-02-28)
The following sections list the changes in reva 2.27.7 relevant to
reva users. The changes are ordered by importance.
Summary
Details
- Bugfix #5100: Fix the OCM role editor
Fix the OCM role editor permission set. The redundant permissions have been removed.
- Enhancement #5101: Fix ocm auth manager
OCM auth manager had the Gatewayselector caching issue
v2.27.6
Changelog for reva 2.27.6 (2025-02-25)
The following sections list the changes in reva 2.27.6 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #5096: Fix update grants for the OCM share
Details
- Bugfix #5096: Fix update grants for the OCM share
Fix update grants for the OCM share
v2.27.5
Changelog for reva 2.27.5 (2025-02-24)
The following sections list the changes in reva 2.27.5 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #5093: Fix OCM create share
- Fix #5077: Deny Users invite themselves to their own federated connection
- Fix #5071: Role conversion
- Enh #5075: Add the ocm notification handler
- Enh #5083: Add the ocm notification ShareChangePermission
- Enh #5063: Add roles
Details
- Bugfix #5093: Fix OCM create share
We fixed the OCM share fails on share creating if the federated instance is not reachable.
- Bugfix #5077: Deny Users invite themselves to their own federated connection
Deny Users invite themselves to their own federated connection
- Bugfix #5071: Role conversion
Fix role from resource permission conversion
- Enhancement #5075: Add the ocm notification handler
Added the ocm notification handler that allows receiving a notification from a remote party
about changes to a previously known entity.
- Enhancement #5083: Add the ocm notification ShareChangePermission
Added the ocm notification ShareChangePermission that allows to synchronize the
permissions of a share between the federated instances.
- Enhancement #5063: Add roles
Add EditorListGrantsWithVersions and FileEditorListGrantsWithVersions roles.
v2.27.4
Changelog for reva 2.27.4 (2025-02-03)
The following sections list the changes in reva 2.27.4 relevant to
reva users. The changes are ordered by importance.
Summary
Details
- Bugfix #5061: OCM Wildcards
Fix using ocm wildcards. Do not overwrite cached provider with actual value
- Bugfix #5055: Fix view&download permission issue
When opening files with view&download permission (aka read), the appprovider would falsely
issue a secureview token. This is fixed now.
v2.27.3
Changelog for reva 2.27.3 (2025-01-27)
The following sections list the changes in reva 2.27.3 relevant to
reva users. The changes are ordered by importance.
Summary
Details
- Bugfix #5042: Fix ocis dependency
Fix the ocm gateway connection pool. Fix ocis dependency in the reva go.mod file. Bump the ocis
version accordingly to the major version.
owncloud/ocis#10846
owncloud/ocis#10878
#5042
- Enhancement #5051: Emit SpaceMembershipExpired event
v2.27.2
Changelog for reva 2.27.2 (2025-01-17)
The following sections list the changes in reva 2.27.2 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #5043: Fix SpaceMembershipExpired unmarshal
Details
- Bugfix #5043: Fix SpaceMembershipExpired unmarshal
SpaceMembershipExpired events can now be unmarshalled correctly
v2.27.1
Changelog for reva 2.27.1 (2025-01-09)
The following sections list the changes in reva 2.27.1 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #5033: Fix ocm wildcards
- Fix #5031: Allow to accepted invite after it was once deleted
- Fix #5026: Delete Blobs when Space is deleted
- Enh #5025: Allow wildcards in OCM domains
- Enh #5023: Notification feature toggle
- Enh #4990: Allow locking via ocm
- Enh #5032: Add SendEmailsEvent
Details
- Bugfix #5033: Fix ocm wildcards
Ocm wildcards were not working properly. We now overwrite the wildcard values with the actual
domain.
- Bugfix #5031: Allow to accepted invite after it was once deleted
Allowed to accepted invite even after it was once deleted on the invite receiver or invite
creation side.
- Bugfix #5026: Delete Blobs when Space is deleted
Delete all blobs of a space when the space is deleted.
- Enhancement #5025: Allow wildcards in OCM domains
When verifiying domains, allow wildcards in the domain name. This will not work when using
verify-request-hostname
- Enhancement #5023: Notification feature toggle
Adds a feature toggle for the notification settings.
- Enhancement #4990: Allow locking via ocm
Implement locking endpoints so files can be locked and unlocked via ocm.
- Enhancement #5032: Add SendEmailsEvent
Adds SendEmailsEvent that is used to trigger the sending of group emails.
v1.29.0
Changelog for reva 1.29.0 (2025-01-07)
The following sections list the changes in reva 1.29.0 relevant to
reva users. The changes are ordered by importance.
Summary
- Fix #4898: Make ACL operations work over gRPC
- Fix #4667: Fixed permission mapping to EOS ACLs
- Fix #4520: Do not use version folders for xattrs in EOS
- Fix #4599: Auth: increase verbosity of oidc parsing errors
- Fix #5006: Blocking reva on listSharedWithMe
- Fix #4557: Fix ceph build
- Fix #5017: No empty favs attr
- Fix #4620: Fix ulimits for EOS container deployment
- Fix #5015: Fixed error reporting in the EOS gRPC client
- Fix #4931: Fixed tree metadata following fix in EOS
- Fix #4930: Make removal of favourites work
- Fix #4574: Fix notifications
- Fix #4790: Ocm: fixed domain not having a protocol scheme
- Fix #4849: Drop assumptions about user types when dealing with shares
- Fix #4894: No certs in EOS HTTP client
- Fix #4810: Simplified error handling
- Fix #4973: Handle parsing of favs over gRPC
- Fix #4901: Broken PROPFIND perms on gRPC
- Fix #4907: Public links: return error when owner could not be resolved
- Fix #4591: Eos: fixed error reporting for too large recycle bin listing
- Fix #4896: Fix nilpointer error in RollbackToVersion
- Fix #4905: PurgeDate in ListDeletedEntries was ignored
- Fix #4939: Revert 'make home layout configurable'
- Enh #5028: Handle empty EOS traces
- Enh #4911: Cephfs refactoring + make home layout configurable
- Enh #4937: @labkode steps down as project owner
- Enh #4579: Remove domain-specific code to other repos
- Enh #4824: Refactor Ceph code
- Enh #4797: Refactor CI jobs and bump to latest deps
- Enh #4934: Access to EOS via tokens over gRPC
- Enh #4870: Only load X509 on https
- Enh #5014: Log app when creating EOS gRPC requests
- Enh #4892: Do not read eos user ACLs any longer
- Enh #4720: Differentiate quota for user types in EOS
- Enh #4863: Favourites for eos/grpc
- Enh #5013: Updated dependencies + moved to go 1.22
- Enh #4514: Pass lock holder metadata on uploads
- Enh #4970: Improved logging on createHome
- Enh #4984: Drop shadow namespaces
- Enh #4670: Ocm: support bearer token access
- Enh #4977: Do not use root on EOS
Details
-
Bugfix #4898: Make ACL operations work over gRPC
This change solves two issues: * AddACL would fail, because the current implementation of
AddACL in the EOS gRPC client always sets msg.Recursive = true. This causes issues on the EOS
side, because it will try running a recursive find on a file, which fails. * RemoveACL would
fail, because it tried matching ACL rules with a uid to ACL rules with a username. This PR changes
this approach to use an approach similar to what is used in the binary client: just set the rule
that you want to have deleted with no permissions. -
Bugfix #4667: Fixed permission mapping to EOS ACLs
This is to remove "m" and "q" flags in EOS ACLs for regular write shares (no re-sharing).
-
Bugfix #4520: Do not use version folders for xattrs in EOS
This was a workaround needed some time ago. We revert now to the standard behavior, xattrs are
stored on the files. -
Bugfix #4599: Auth: increase verbosity of oidc parsing errors
This is to help further debugging of auth issues. An unrelated error reporting was also fixed.
-
Bugfix #5006: Blocking reva on listSharedWithMe
listSharesWithMe
blocked a reva thread in the case that one of the shares was not resolvable.
This has now been fixed -
Bugfix #4557: Fix ceph build
-
Bugfix #5017: No empty favs attr
See issue #5016: we now unset the favs attr if no more favs are set
-
Bugfix #4620: Fix ulimits for EOS container deployment
-
Bugfix #5015: Fixed error reporting in the EOS gRPC client
This in particular fixes the lock-related errors
-
Bugfix #4931: Fixed tree metadata following fix in EOS
The treecount is now populated from the EOS response.
-
Bugfix #4930: Make removal of favourites work
Currently, removing a folder from your favourites is broken, because the handleFavAttr
method is only called in SetAttr, not in UnsetAttr. This change fixes this. -
Bugfix #4574: Fix notifications
-
Bugfix #4790: Ocm: fixed domain not having a protocol scheme
This PR fixes a bug in the OCM open driver that causes it to be unable to probe OCM services at the
remote server due to the domain having an unsupported protocol scheme. in this case domain
doesn't have a scheme and the changes in this PR add a scheme to the domain before doing the probe. -
Bugfix #4849: Drop assumptions about user types when dealing with shares
We may have external accounts with regular usernames (and with null uid), therefore the
current logic to heuristically infer the user type from a grantee's username is broken. This PR
removes those heuristics and requires the upper level to resolve the user type. -
Bugfix #4894: No certs in EOS HTTP client
Omit HTTPS cert in EOS HTTP Client, as this causes authentication issues on EOS < 5.2.28. When
EOS receives a certificate, it will look for this cert in the gridmap file. If it is not found
there, the whole authn flow is aborted and the user is mapped to nobody. -
Bugfix #4810: Simplified error handling
Minor rewording and simplification, following cs3org/OCM-API#90 and cs3org/OCM-API#91
-
Bugfix #4973: Handle parsing of favs over gRPC
To store user favorites, the key
user.http://owncloud.org/ns/favorite
maps to a list of
users, in the formatu:username=1
. Right now, extracting the "correct" user doesn't happen
in gRPC, while it is implemented in the EOS binary client. This feature has now been moved to the
higher-level call in eosfs. -
Bugfix #4901: Broken PROPFIND perms on gRPC
When using the EOS gRPC stack, the permissions returned by PROPFIND on a folder in a project were
erroneous because ACL permissions were being ignored. This stems from a bug in
grpcMDResponseToFileInfo, where the SysACL attribute of the FileInfo struct was not being
populated.#4901
see: -
Bugfix #4907: Public links: return error when owner could not be resolved
-
Bugfix #4591: Eos: fixed error reporting for too large recycle bin listing
EOS returns E2BIG, which internally gets converted to PermissionDenied and has to be properly
handled in this case. -
Bugfix #4896: Fix nilpointer error in RollbackToVersion
-
Bugfix #4905: PurgeDate in ListDeletedEntries was ignored
The date range that can be passed to ListDeletedEntries was not taken into account due to a bug in
reva: the Purgedate argument was set, which only works for PURGE requests, and not for LIST
requests. Instead, the Listflag argument must be used. Additionally, there was a bug in the
loop that is used to iterate over all days in the date range. -
Bugfix #4939: Revert 'make home layout configurable'
Partial revert of #4911, to be re-added after more testing and configuration validation. The
eoshome vs eos storage drivers are to be adapted. -
Enhancement #5028: Handle empty EOS traces
-
Enhancement #4911: Cephfs refactoring + make home layout configurable
-
Enhancement #4937: @labkode steps down as project owner
Hugo (@labkode) steps down as project owner of Reva.
-
Enhancement #4579: Remove domain-specific code to other repos
-
Enhancement #4824: Refactor Ceph code
-
Enhancement #4797: Refactor CI jobs and bump to latest deps
-
Enhancement #4934: Access to EOS via tokens over gRPC
As a guest account, accessing a file shared with you relies on a token that is generated on behalf
of the resource owner. This method, GenerateToken, has now been implemented in the EOS gRPC
client. Additionally, the HTTP client now takes tokens into account. -
Enhancement #4870: Only load X509 on https
Currently, the EOS HTTP Client always tries to read an X509 key pair from the file system (by
default, from /etc/grid-security/host{key,cert}.pem). This makes it harder to write unit
tests, as these fail when this key pair is not on the file system (which is the case for the test
pipeline as well).This PR introduces a fix for this problem, by only loading the X509 key pair if the scheme of the
EOS endpoint is https. Unit tests can then create a mock HTTP endpoint, which will not trigger
the loading of the key pair. -
Enhancement #5014: Log app when creating EOS gRPC requests
-
Enhancement #4892: Do not read eos user ACLs any...