Commit Graph
23830 Commits
Author SHA1 Message Date
Dominik Schmidt cafd791fde feat(search): query open extension properties
KQL addresses an open extension property as extensions.<name>.<property>.
The literal picks the typed sibling: a number or date-time range asks the
number or date sibling, an equality asks every sibling the literal fits
(the lowercased string, and the number, boolean or date it also reads
as), = asks the string as written. Both compilers build the same plan.

The parity suite covers the queries and the lifecycle of extensions
through re-typing, removal, move and trash.
2026-09-16 09:20:40 +00:00
Dominik Schmidt 12f76239de feat(search): index open extensions as typed siblings
Every property of an open extension is indexed under the sibling of its
value's kind (ext.<name>.<property>.@keyword/@lower/@number/@bool/@date/
@geo), so a property can change its kind between writes without a
mapping change. bleve builds the fields directly and indexes them with
IndexAdvanced, the mapping stays as it is; OpenSearch types them through
dynamic templates under a dynamic ext object, which the reconciler
compares by rule instead of by concrete field. The stored values travel
with the document so Move, Delete and Restore keep the extensions.

The search service follows ArbitraryMetadataUpdated events that touch an
extension.
2026-09-16 09:20:39 +00:00
Dominik Schmidt 44b97637ba feat(graph): open extension endpoints on drive items
Adds the openTypeExtension collection of a driveItem under
/v1beta1/drives/{drive-id}/items/{item-id}/extensions: list, get, upsert
(merge, null removes) and delete, plus $expand=extensions on the item.
Every property is one arbitrary metadata key, so an upsert writes and
removes only the properties of the request; values are returned as
written, date-times and geo points carry their @odata.type.
2026-09-16 09:20:39 +00:00
Dominik Schmidt c5b84a599c feat(reva): open extensions over WebDAV
Adds pkg/openextension, the shared model of open extensions: every
property is one arbitrary metadata key,
http://opencloud.eu/ns/extensions/<name>/<property>, whose value carries
its kind as a one-letter prefix (s:, n:, b:, d:, g:, upper case for
arrays). A property is written and re-typed in one write; a value
without a known prefix is unreadable and skipped. Graph and the search
index in opencloud read and write extensions through the same package.

ocdav stores and answers properties in that namespace typed: PROPPATCH
maps xsi:type (RFC 4316) to the stored form, PROPFIND renders the stored
form with xsi:type; a property without xsi:type is a string, as every
WebDAV client writes today. allprop leaves extensions out, properties in
other namespaces are untouched.

Vendored ahead of the reva release that will carry it.
2026-09-16 09:20:39 +00:00
Dominik Schmidt b34cfd736d feat(reva): emit ArbitraryMetadataUpdated for metadata writes
The events middleware emits ArbitraryMetadataUpdated for Set- and
UnsetArbitraryMetadata with the touched keys, so consumers such as the
search service can follow metadata writes without a full re-index.

Vendored ahead of the reva release that will carry it.
2026-09-16 08:15:08 +00:00
Ralf Haferkamp a6f8777001 cleanup: remove unused calens based changelog artifacts
This seemed to trigger various coding agents to repeatedly re-create
and populate the "changelog/unreleased" directory.
2026-09-15 14:38:31 +02:00
OpenCloud Devops 75e636652d 🎉 Release 8.0.0 (#3405)
* 🎉 Release 7.5.1

* 🎉 Release 7.5.1

* 🎉 Release 7.5.1

* 🎉 Release 7.5.1

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 7.6.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0

* 🎉 Release 8.0.0
v8.0.0
2026-09-15 14:18:33 +02:00
Viktor Scharf 92560dbbdb [full-ci] chore: bump reva to 2.50.0 (#3531)
* chore: bump reva to 2.50.0

* increase timeout for extract properties tests
2026-09-15 10:13:55 +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
Sawjan Gurung a40e0666e9 chore: group watchfs test pipelines (#3532)
Signed-off-by: Saw-jan <saw.jan.grg3e@gmail.com>
2026-09-15 09:30:13 +02:00
Jörn Friedrich Dreyer a065c9ee19 Merge pull request #3525 from opencloud-eu/ci/minio-mc-replace-image
ci: replace minio image
2026-09-14 14:48:44 +02:00
v.scharf ee1deeef97 delete install zip- already in image 2026-09-14 13:35:18 +02:00
v.scharf fbcf2d683b ci: replace minio image 2026-09-14 12:58:45 +02:00
Viktor ScharfandFlorian Schade 35e4d4a3d6 api-test: retry token refresh on transient IDP failures (#3507)
* api-test: retry token refresh on transient IDP failures

* Fix retry condition in token exchange logic

* test: keep the retry limit a limit and the refresh fallback to exceptions

---------

Co-authored-by: Florian Schade <f.schade@icloud.com>
2026-09-11 14:56:57 +02:00
Alex Ababii 348890dda2 fix(test): removeAccessToSpace test helper (#3511)
* fix removeAccessToSpace test helper

* fix gherkin link
2026-09-11 11:58:00 +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
Viktor Scharf 994086ceb2 add search retry to all serach tests (#3500) 2026-09-09 15:21:23 +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
Dominik Schmidt b5cb1cd83b test(search): re-search until the expected files are in the result (#3488)
Indexing of newly uploaded resources is asynchronous; the search step
slept a fixed 10s and searched once, so under load a just-uploaded file
was missing from the result and the following assertion failed. The
search step now remembers its query, and new eventually-contain steps
re-run the search until the expected entries are present (or the
WaitHelper timeout elapses), then assert as before. contentSearch
scenarios use them for their positive assertions; the exact-count check
runs after the expected entries have appeared.
2026-09-08 14:50:49 +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
Dominik Schmidt 1ce7f07523 Merge pull request #3486 from opencloud-eu/test/extractedprops-wait-for-values
test(search): wait for expected properties and documents
2026-09-08 14:05:12 +02:00
Dominik Schmidt 3b83221a87 test(search): retry the driveItem GET until the extracted properties match
Property extraction reaches the driveItem asynchronously, so the GET
step previously waited only until any extraction facet key appeared and
a separate step then validated the full schema, which could run on a
partial payload and fail intermittently. The GET and the status check
stay plain steps; a new explicit Then step re-fetches the item until
the response satisfies the expected schema (a partial never matches) or
the WaitHelper timeout elapses.
2026-09-08 13:39:00 +02:00
Jörn Friedrich Dreyer 391705b017 Merge pull request #3441 from opencloud-eu/dependabot/go_modules/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp-0.71.0
build(deps): bump go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp from 0.70.0 to 0.71.0
2026-09-08 10:47:59 +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
dependabot[bot] b50c5e54d6 build(deps): bump go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp
Bumps [go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp](https://github.com/open-telemetry/opentelemetry-go-contrib) from 0.70.0 to 0.71.0.
- [Release notes](https://github.com/open-telemetry/opentelemetry-go-contrib/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go-contrib/blob/main/CHANGELOG.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-go-contrib/compare/zpages/v0.70.0...zpages/v0.71.0)

---
updated-dependencies:
- dependency-name: go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp
  dependency-version: 0.71.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-08 07:26:51 +00:00
opencloudeu c2a34e8c45 [tx] updated from transifex 2026-09-07 23:17:03 +00:00
Dominik Schmidt d6c6b6fd0d Merge pull request #3481 from opencloud-eu/fix/proxy-signed-url-methods
fix(proxy): restrict JWT signed urls to the allowed HTTP methods
2026-09-07 16:13:40 +02:00
Dominik Schmidt 7f7a938c3f fix(proxy): restrict JWT signed urls to the allowed HTTP methods
The legacy OC-Signature path already rejects methods outside
PRE_SIGNED_URL_ALLOWED_HTTP_METHODS, the JWT path did not. A leaked
signed download url could be used for PUT, DELETE, MOVE or PROPFIND
as the signing user for the lifetime of the signature.
2026-09-07 13:00:09 +02:00
Jörn Friedrich Dreyer cfefb83d26 revert unrelated changes 2026-09-07 12:52:33 +02:00
Jörn Friedrich Dreyer 9357124a91 add tests to extracted services
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-09-07 12:52:33 +02:00
Jörn Friedrich Dreyer c36af05d14 simplify ConnectNatsKV
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-09-07 12:52:33 +02:00
Jörn Friedrich Dreyer 7947c1c98a reduce packages
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-09-07 12:52:33 +02:00
Jörn Friedrich Dreyer d58c1e3dab use json encode
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-09-07 12:52:33 +02:00
Jörn Friedrich Dreyer 5a609c98dc handle error types
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-09-07 12:52:33 +02:00
Jörn Friedrich Dreyer 29913e1d7f revert to legacy autoack events
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-09-07 12:52:32 +02:00
Jörn Friedrich Dreyer 5028364e2c add tests to cover more ack scenarios
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-09-07 12:52:32 +02:00
Jörn Friedrich Dreyer b2b15d44f7 rename test files
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-09-07 12:52:32 +02:00
Jörn Friedrich Dreyer 6ea363b0b9 add debouncer tests
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-09-07 12:52:32 +02:00
Jörn Friedrich Dreyer 9594313243 add explicit ack
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-09-07 12:52:32 +02:00
Jörn Friedrich Dreyer 62d815abe9 split handlers, fix bugs
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-09-07 12:52:32 +02:00
Jörn Friedrich Dreyer 5923aa5e5e move event + http handler code to the events package
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-09-07 12:52:32 +02:00