Commit Graph
4987 Commits
Author SHA1 Message Date
Dominik Schmidt 91dbb31a3f feat(search): metric aggregations
sum/min/max/avg over a numeric field, carried as the proto
MetricDefinition/Metric message pair end to end: the engines emit a
Metric result (avg as sum/count accumulators), the service layer
reduces metrics across spaces, the graph layer maps them from and to
the libregraph metricDefinition/searchMetric objects.
2026-10-02 14:39:47 +02:00
Dominik Schmidt 0fbd21ae4c feat(search): range aggregations
Numeric and date ranges on both engines: bleve numeric and date-time range facets, OpenSearch range and date_range aggregations, a bound that is neither number nor date is rejected. A terms aggregation on a numeric field now points to ranges as the alternative. AGG-04, 05 and 07 to 09 in the parity suite.
2026-10-02 14:39:25 +02:00
Dominik Schmidt 80abee9b85 feat(search): terms aggregations
Term buckets on both engines: bleve facets, OpenSearch terms aggregations, buckets merged across spaces and post-processed per BucketDefinition (minimum count, sort, size). Terms aggregations on numeric fields are rejected at the graph endpoint. Pinned in the parity suite as AGG-01 to AGG-03. Ranges, metrics and sub-aggregations are declined until the engines evaluate them.
2026-10-02 14:39:25 +02:00
Dominik Schmidt db9027efc3 feat(graph): POST /search/query
MS Graph style search endpoint: searchRequest with KQL queryString,
from/size pagination (clamped to the spec's bounds), entityTypes
validated to driveItem, hits as driveItems with webUrl. The proto
carries metric aggregations as a MetricDefinition/Metric message pair
so an unset definition is distinguishable from any kind.
2026-10-02 14:39:25 +02:00
Florian Schade c10b106f1b Merge pull request #3633 from fschade/fix-collaboration-extension-handling
feat(collaboration): let admins disable wopi extensions
2026-10-02 13:37:02 +02:00
Dominik Schmidt 3b37e292bd Merge pull request #3643 from opencloud-eu/fix/parity-matrix-runes
fix(search): ellipsize parity matrix labels by runes, not bytes
2026-10-02 13:36:57 +02:00
Dominik Schmidt b2039f6abe fix(search): ellipsize parity matrix labels by runes, not bytes
The byte-based truncation cut through the two-byte UTF-8 sequence of
Motörhead's ö, committing invalid UTF-8 into the parity README. Shared
rune-based ellipsize helper; matrix regenerated.
2026-10-02 12:48:51 +02:00
Florian Schade 938687d1d5 fix(collaboration): send LastModifiedTime and the EuroOffice file size 2026-10-02 12:20:04 +02:00
Florian Schade ec88020c1e feat(collaboration): let admins disable wopi extensions 2026-10-02 12:19:54 +02:00
Florian Schade e848d469d5 fix(collaboration): mint the mobile view test token with the token manager secret (#3647) 2026-10-02 12:18:17 +02:00
Florian Schade 94448630e3 Merge pull request #3635 from fschade/feat-collaboration-eurooffice-mobile-view
feat(collaboration): mobile web view for EuroOffice
2026-10-02 10:16:08 +02:00
Florian Schade 8edd60296a feat(collaboration): mobile web view for EuroOffice 2026-10-01 16:13:42 +02:00
Florian Schade 24545be7ad fix(collaboration): harden wopi token handling 2026-09-30 16:40:44 +02:00
Viktor Scharf c8dd8ce1ca fix translation update pipeline (#3613) 2026-09-30 09:33:12 +02:00
Andre Duffeck eb32a80e01 Merge pull request #3602 from aduffeck/fix/search-trashed-path-collision
fix(search): keep trashed and live folders at the same path apart
2026-09-28 13:45:09 +02:00
André Duffeck b1efb8c616 Pass the query into the bleve descendant walk
Instead of deleted/onlyDeleted bool parameters, the caller now builds
the query and forEachMatch only does the paging.
2026-09-28 11:49:47 +02:00
Jörn Friedrich Dreyer 7fbecd06f1 Merge pull request #3603 from opencloud-eu/fix/uploads-cli-no-async-consumer
Fix/uploads cli no async consumer
2026-09-28 08:59:48 +02:00
Jörn Friedrich Dreyer 04ad5b84bb fix(storage-users): keep uploads sessions CLI out of the dcfs event queue
The uploads sessions command builds a posix driver with async file
uploads enabled, which makes it join the "dcfs" JetStream queue group.
Clean/restart/resume events published by the command itself can then be
routed to the CLI's own short-lived consumer; the nats client auto-acks
them and they are lost when the process exits, leaving stale upload
sessions behind.

Disable asyncfileuploads for the CLI driver instance so it only lists
sessions and publishes events. Also emit [] instead of null when the
session list is empty so the JSON output stays parseable.
2026-09-25 15:47:47 +02:00
André Duffeck ad4c8ad112 fix(search): keep trashed and live folders at the same path apart
A trashed folder keeps its path in the index, so a new folder can take
the same one. The descendant lookup behind move, delete, restore and
purge matched on space and path only: purging the trashed folder took
the live folder and its descendants out of the index, and moving the
live folder carried the trashed tree along.

Both engines now also match the root's trash state; purge with
onlyDeleted keeps matching the trashed ones only.
2026-09-25 15:31:31 +02:00
Andre Duffeck 74462d32d7 Merge pull request #3495 from opencloud-eu/feat/search-hierarchy-tokenizer
refactor(search): stream bleve descendants
2026-09-25 15:19:52 +02:00
Andre Duffeck cf1737babe Merge pull request #3493 from opencloud-eu/cleanup-split-changes
align the handler verifier, update docs
2026-09-25 14:27:03 +02:00
Jörn Friedrich Dreyer 27c42ad135 fix(storage-users): publish CleanUpload event instead of purging directly
Ported from owncloud/ocis#11693. The uploads clean command now emits an events.CleanUpload event via the event stream rather than calling Purge directly. Requires the corresponding reva bump (vendor changes pulled in separately).
2026-09-24 11:21:28 +02:00
Michal Klos f090b32c9a feat: postprocessing logs
cleanup and fix the upload id

tweak error messages

(cherry picked from commit f7e53bb94698875efd092abaa6f38b6608dad4d4)
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-09-23 17:05:01 +02:00
Alex Ababii b69142157c fix(collaboration): restricted endpoints for collaboration service 2026-09-22 17:11:56 +02:00
Pascal Bleser b8234f81d9 Merge pull request #3521 from pbleser-oc/feat/add-service-to-proxy-metrics
feat(proxy): add per-service metrics to the proxy service
2026-09-22 14:44:04 +02:00
Andre Duffeck 65741f00bf Merge pull request #3556 from aduffeck/index-space-auth-session
Use an auth.Session for indexing spaces
2026-09-21 10:27:21 +02:00
Nick Walters bbebdf95ec fix(collaboration): match WOPI app extensions without case
The WOPI discovery response lists its extensions in lower case, and
OpenInApp looks them up with the extension of the file as it is on disk.
So a "report.DOCX" found no app url while a "report.docx" opened, and
the web UI reported that it could not contact the application, which
reads like the editor is down.

The extensions now go into the map in lower case and the lookup folds
the case as well, so both ends match whatever the app publishes. The log
line and the error also name the extension, because neither said which
file type had no app.

Fixes opencloud-eu/opencloud#3449
2026-09-21 00:55:31 +08:00
André Duffeck be3c7b674e Fix test 2026-09-18 12:01:48 +02:00
André Duffeck 8600cddb8f Switch to jwt v5 2026-09-18 12:01:32 +02:00
Pascal Bleser 36747cfbdc feat(proxy): add the service to the proxy metrics: re-add legacy metrics for compatibility
* re-add the metrics that were existing prior to this PR, to keep them
   for compatibility reasons with existing Grafana panels:
   - opencloud_proxy_requests_total
   - opencloud_proxy_errors_total
   - opencloud_proxy_duration_seconds

 * renamed new metric opencloud_proxy_request_total (that contains the
   service label) to opencloud_proxy_service_request_total

 * renamed new metric opencloud_proxy_duration_seconds (that contains
   the service label) to opencloud_proxy_service_duration_seconds
2026-09-18 09:52:33 +02:00
Pascal Bleser d768a9b0f9 feat(proxy): add the service to the proxy metrics
Improve the metrics for the proxy service.

 * extend the instrumenter middleware to add a label with the name of
   the service the request is being dispatched to

 * add a native Prometheus histogram that tracks the durations and also
   includes a label for the name of the service the request is being
   dispatched to, as well as a 'result' label ('success',
   'client-error', 'server-error') based on the HTTP status code of the
   response

 * add per-service gauge functions to count the number of in-flight
   requests

 * add a counter for routing failures, for when an inbound request
   cannot be mapped to a route

 * extend the route.RoutingInfo struct with a service attribute, and a
   Service() getter

 * remove the 'routing_failure_count' metric, as it is redundant
2026-09-18 09:52:33 +02:00
Alex Ababii e0bfca4a38 fix(graph): upd helper 2026-09-17 16:29:27 +02:00
Alex Ababii 1a06cf7bdf fix(graph): upd invite for guest links 2026-09-17 16:29:27 +02:00
Alex Ababii ee47a015f0 upd graph api drive recipient validation 2026-09-17 16:29:27 +02:00
Alex Ababii 89c7b13638 feat(graph): add guest mail invite permission 2026-09-17 16:29:27 +02:00
Alex Ababii 588c61cdb1 bumped libre graph api version, using recipient email check instead of recipient type in invite creation 2026-09-17 16:29:27 +02:00
Alex Ababii f28bc9dbc0 chore(graph): add config knob to disable/enable guest invites 2026-09-17 16:29:27 +02:00
Ralf Haferkamp f0416d9ff8 chore(graph): use existing constants for user type 2026-09-17 16:29:27 +02:00
André Duffeck 0bf63ac6fd feat(graph): Add support creating guest(mail) permissions 2026-09-17 16:29:27 +02:00
André Duffeck f6104a8dc5 Use an auth.Session for indexing spaces
This makes sure that the token does not expire if the indexing process
takes longer than the token lifetime.

This commit also makes sure that the authenticated context is reused
instead of generating a new context for each resource which is much more
efficient.
2026-09-17 09:57:30 +02:00
Benedikt Kulmann 071d8594c4 Merge pull request #3503 from opencloud-eu/fix-audit-log-docu
[SKIP CI] fix: add file_read documentation to audit log docu
2026-09-17 07:39:59 +02:00
Alex Ababii a419485391 upd trash bin cli commands flags 2026-09-16 16:44:51 +02:00
Alex Ababii 43385ba6dc document params for thrash bin cli commands 2026-09-16 16:44:51 +02:00
Pascal Wengerter 002a2e43fb chore: regenerate mockery outputs 2026-09-16 14:57:41 +02:00
Pascal Bleser 9f6ea88db5 chore(graph): use chi HTTP response wrapper instead of a homegrown one
* in the graph service's metrics, we use a homegrown response writer
   struct implementation to capture the status of the next handler's
   response: instead, use chi's implementation which is more
   sophisticated and battle tested
2026-09-16 13:57:42 +02:00
Thomas Schweiger 5efded002a fix: add file_read documentation to audit log docu 2026-09-16 13:34:06 +02:00
Andre Duffeck ed488f9647 Merge pull request #3543 from aduffeck/do-not-timeout
Remove the timeout when reindexing spaces
2026-09-16 12:36:16 +02:00
Alex Ababii cb6ba6d536 Merge pull request #3533 from maki5/fix/auto_accept_shares
fix(shares): not auto accepting shares created by guest users
2026-09-16 11:53:14 +02:00
Alex Ababii b6072317c9 fix tests 2026-09-16 11:08:59 +02:00
Alex Ababii 9267286f49 upd reponse status for patchMe method on not allowed changes 2026-09-16 11:08:59 +02:00