OCDAV Service Configuration
Introduction
The ocDAV service is responsible for translating ownCloud-flavored WebDAV into CS3 API calls. Note that previews (thumbnails) are provided by the WebDAV service. For more details on CS3 see the REVA and CS3 description in the Architecture and Concepts section.
Sequence Diagram
General View
A PROPFIND finds its way to a storage provider like in the image shown below. While this is a simplification to get an understanding of what needs to go where, there are several places where sharding (splitting and distributing) can happen.
Proxy-based User Routing
The Infinite Scale proxy authenticates requests and can forward requests to different backends, depending on the logged-in user or cookies. For example, multiple ocdav services can be configured to shard users, based on username or affiliation.
Gateway-based Path or Storage Provider ID-based Routing
The CS3 gateway acts as a facade to multiple storage providers that can be configured with the storage registry.
PROPFIND Request Against Old Webdav Endpoints
This is how the old endpoint with username and a path relative to the user’s home looks like: /dav/files/{username}
To route a PROPFIND request against the old webdav endpoints like /dav/files/username, ocdav first has to build a CS3 namespace prefix, e.g. /users/{{.Id.OpaqueId}} to the user’s home.
Handling Legacy Global Namespace Webdav Endpoints
The reason Infinite Scale uses a path-based lookup instead of looking up the current user’s home using the user ID and a space type filter is, because there are deployments that use a global namespace at the legacy /webdav endpoint. To support these use cases, the gateway allows looking up spaces using their mount path.
Configuration
Environment Variables
The ocdav service is configured via the following environment variables. Read the Environment Variable Types documentation for important details. Column IV shows with which release the environment variable has been introduced.
404: Not Found
YAML Example
-
Note the file shown below must be renamed and placed in the correct folder according to the Configuration File Naming conventions to be effective.
-
See the Notes for Environment Variables if you want to use environment variables in the yaml file.