Dominik Schmidt 0b373817a8 feat(graph): add MS Graph colon-syntax path lookup middleware
Adds a chi middleware that detects MS Graph colon-syntax URLs and rewrites
them to the canonical /items/{itemID}/... form before chi performs route
matching. Existing handlers, routes, and GetDriveAndItemIDParam stay
unchanged.

Two URL shapes are recognized at both /v1.0 and /v1beta1:

  /drives/{driveID}/root:/<path>[:/<suffix>][:]
  /drives/{driveID}/items/{itemID}:/<relativePath>[:/<suffix>][:]

Path resolution runs as the request user via CS3 Stat. Both NOT_FOUND and
PERMISSION_DENIED collapse to a 404 response so existence isn't disclosed
to unauthorized callers. URLs without colon syntax fast-path through with
a single substring check. The original URL is stashed in request context
under OriginalPathContextKey for downstream tracing/logging.

The middleware is registered as a top-level mux.Use so it runs before any
route matching: chi middleware on a sub-router runs after the prefix is
matched but cannot redirect to a different leaf route. Top-level
middleware lets URL rewriting actually re-route the request.

Tests cover regex matching across versions, all rewrite variants
(root/items anchored, with/without suffix, with/without trailing colon,
deep paths), NOT_FOUND -> 404, PERMISSION_DENIED -> 404 (security: no
existence disclosure), and original-URL preservation in request context.
2026-07-01 17:44:31 +02:00
2026-06-11 09:28:37 +02:00
2026-06-19 11:29:45 +02:00
2026-01-07 15:04:34 +01:00
2025-01-28 18:03:12 +01:00
2026-01-09 11:42:43 +01:00
2025-12-06 17:13:07 +01:00
2026-05-14 16:39:17 +02:00
2025-08-15 12:41:36 +02:00
2026-06-11 09:28:37 +02:00
2025-03-13 14:04:14 +01:00
2026-06-17 12:54:38 +02:00
2026-06-02 10:01:41 +00:00
2026-01-09 11:42:43 +01:00
2026-06-17 15:42:47 +02:00
2025-02-04 11:29:46 +01:00
2026-02-09 14:31:58 +01:00
2025-01-17 17:21:23 +01:00
2025-01-27 16:29:43 +01:00

OpenCloud logo

status-badge Matrix License

Server Backend

Tip

For general information about OpenCloud and how to install please visit OpenCloud on Github and OpenCloud GmbH.

This is the main repository of the OpenCloud server. It contains the golang codebase for the backend services.

Getting Involved

The OpenCloud server is released under Apache 2.0. The project is thrilled to receive contributions in all forms. Start hacking now, there are many ways to get involved such as:

Every contribution is meaningful and appreciated! Please refer to our Contribution Guidelines if you want to get started.

Build OpenCloud

To build the backend, follow these instructions:

Generate the assets needed by e.g., the web UI and the builtin IDP

make generate

Then compile the opencloud binary

make -C opencloud build

That will produce the binary opencloud/bin/opencloud. It can be started as a local test instance right away with a two step command:

opencloud/bin/opencloud init && opencloud/bin/opencloud server

This creates a server configuration (by default in $HOME/.opencloud) and starts the server.

For more setup- and installation options consult the Development Documentation.

Technology

Important information for contributors about the technology in use.

Authentication

The OpenCloud backend authenticates users via OpenID Connect using either an external IdP like Keycloak or the embedded LibreGraph Connect identity provider.

Database

The OpenCloud backend does not use a database. It stores all data in the filesystem. By default, the root directory of the backend is $HOME/.opencloud/.

Security

If you find a security-related issue, please contact security@opencloud.eu immediately.

Description
No description provided
Readme Apache-2.0 372 MiB
Languages
Go 48.9%
Gherkin 36.2%
PHP 12.3%
JavaScript 1.2%
Makefile 0.6%
Other 0.6%