Commit Graph
4962 Commits
Author SHA1 Message Date
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
Alex Ababii 2866cc7ee4 fix PatchMe method to prevent password change 2026-09-16 11:08:59 +02:00
zerox80andRalf Haferkamp e6699f31f1 Update services/proxy/README.md
Co-authored-by: Ralf Haferkamp <ralf@h4kamp.de>
2026-09-16 10:15:56 +02:00
zerox80 2d22a2cf07 fix(oidc): reject invalid audience settings during client setup 2026-09-16 10:15:56 +02:00
zerox80 0bcbb61339 docs(proxy): clarify IDP audience setup [docs-only] 2026-09-16 10:15:56 +02:00
zerox80 012d73c48e docs(proxy): document OIDC access token audience validation 2026-09-16 10:15:56 +02:00
zerox80 86d71dcdc3 feat(proxy): configure and enforce OIDC access token audiences 2026-09-16 10:15:56 +02:00
André Duffeck fe5fd66cb6 Remove the timeout when reindexing spaces
This was supposed to be removed with #3213 but was either missed or lost
in a rebase.
2026-09-16 10:14:52 +02:00
Alex Ababii 9374a6ba79 not auto accepting shares created by guest users 2026-09-15 13:53:28 +02:00
Viktor Scharf bf56a57f90 [full-ci] chore: bump web to v8.0.0. set introduction version v.8.0.0 (#3528)
* [full-ci] chore: bump web to v8.0.0

* Update Apache Tika image version to 4.1.0-SNAPSHOT
2026-09-15 10:06:52 +02:00
Florian Schade de37922513 Merge pull request #3510 from opencloud-eu/fix/bleve-path-performance
fix(search): hierarchy tokenizer for bleve path fields
2026-09-11 11:55:04 +02:00
Ralf Haferkamp a256da502b fix(proxy): suppress auth challenges for failed signed URLs
Do not set WWW-Authenticate headers when an active signed URL
authentication attempt fails. Signed URL clients cannot respond to Basic
or Bearer challenges, and advertising them may trigger unintended
authentication prompts.

Keep returning 401 Unauthorized while preserving the existing challenge
behavior for unsigned requests and disabled signed URL mechanisms.
2026-09-11 11:51:01 +02:00
Sigurd Aaknes 7016020dbf fix: oidcHTTPClient now use proxy from environment 2026-09-11 11:50:49 +02:00
Dominik Schmidt 9cc7757221 feat(search): hierarchy tokenizer for bleve path fields
Path was a keyword, so the descendant lookup behind delete/move/restore/purge, the scoped search and the KQL path predicate expanded into one term searcher per descendant and OOM-killed the server on large folders (#1269, #3469).

Path is now analyzed into its ancestor prefixes, like path_hierarchy in OpenSearch: ./a/b.txt becomes ., ./a, ./a/b.txt. A folder's descendants are every document carrying the folder's path as a term, so all three call sites are a single term query. Schema 4 -> 5, v4 never shipped.

The same tokenizer with tag_depth is registered as the geohash analyzer, so #3272 can add its geohash field without another schema change.
2026-09-10 18:42:31 +00:00
Viktor Scharf e503c2c5eb add insecure to search reindex (#3505) 2026-09-10 16:29:37 +02:00
Dominik Schmidt b18618ab4a Merge pull request #3484 from opencloud-eu/fix/tika-embedded-facet-leak
fix(search): extract facets from the main tika document only
2026-09-08 15:52:21 +02:00
Dominik Schmidt 65f19b5d71 fix(thumbnails): close rejected vips ref, map oversized convert error to forbidden 2026-09-08 15:28:37 +02:00
Dominik Schmidt 7f687ea288 fix(thumbnails): bound declared image dimensions before decoding
The imaging build decodes the full pixel buffer from the header-declared
dimensions before the existing MaxInputWidth/MaxInputHeight guard runs, so a
tiny crafted file whose header declares huge dimensions forces a multi-GB
allocation and can OOM the worker. Read the header with DecodeConfig and reject
oversized sources before the decode allocates, in both the imaging and vips
builds, and thread the limit through the audio cover-art and geogebra decoders
that decode a second attacker-controlled image.
2026-09-08 15:28:37 +02:00
Dominik Schmidt be83ed19e3 fix(search): take extraction facets from the main document only
The recursive tika response lists the file first, then its embedded
resources (cover art, thumbnails, the clip appended to a motion photo).
The loop applied getImage/getPhoto/getLocation/getAudio/getLivePhoto to
every part, so an mp3's embedded cover art leaked a 200x200 image facet
onto the track (and an embedded EXIF image would leak photo/location).
Read those facets from metas[0] only, like the video facet already does;
the loop now only concatenates title/content and detects the motion
photo clip.
2026-09-08 14:52:35 +02:00
zerox80 9797ee903f fix(config): correct pending version annotations
Use the supported %%NEXT%% marker for seven graph and policies settings so the environment annotation check passes.
2026-09-08 14:40:40 +02:00
Jörn Friedrich Dreyer 973dbbdf1a Merge pull request #3241 from opencloud-eu/activitylog-event-handler-split
Activitylog event handler split
2026-09-08 14:13:28 +02:00
Alex Ababii 8875d062b0 upd tests for auth requests middelware 2026-09-08 09:37:51 +02:00
Alex Ababii d1d20edbd2 log jwt expired on debug level instead of error 2026-09-08 09:37:51 +02:00
opencloudeu c2a34e8c45 [tx] updated from transifex 2026-09-07 23:17:03 +00:00