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.

Default Values

  • OCDAV listens on port 9163 by default.

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.

mermaid ocdav 1

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.

mermaid ocdav 2

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.

mermaid ocdav 3

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.

mermaid ocdav 4

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.

mermaid ocdav 5

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

  • 8.1.0

404: Not Found

YAML Example

  • 8.1.0

404: Not Found