Commit Graph
24129 Commits
Author SHA1 Message Date
Dominik Schmidt 3572410fc4 fix: answer the review, and read imagor's path the way imagor does
The push endpoint takes an empty filters segment, ignores an image key behind the box and computes a side given as 0 from the other one, all measured against both imagors and pinned in the parity suite. Plus the review leftovers: no em dashes, the request test on ginkgo, comments that contradicted the code, one stat for Head and generate, one thumbnail handler, the gif fit-in rounding of vips, and the new env names last so they win.
2026-10-19 14:57:35 +02:00
Dominik Schmidt 85b7cccc02 docs: fix what the thumbnail readmes get wrong
The a and processor defaults, that every named processor overrules a, the shared OC_THUMBNAIL_* names, the gif output type, the ladder making the response a different size, the empty filters segment that answers 404, and 406 instead of 400 for a format the build cannot write.
2026-10-19 14:57:35 +02:00
Dominik Schmidt f4792a0b02 fix(webdav): keep the acceptance contract for previews
An explicit x=0 or y=0 is an error again, only an omitted axis is unconstrained, and the text preview fixtures carry the resolution the generator writes now.
2026-10-19 14:57:35 +02:00
Dominik Schmidt eb6d1021a3 test(thumbnails): put the push endpoint on ginkgo
The repeated post-and-assert bodies collapse into tables, and the sources
are built without gomega because they run while the spec tree is built.
2026-10-19 14:57:35 +02:00
Dominik Schmidt 9b4e173020 test(thumbnails): compare the built-in generator against two real imagors
The same image goes to the built-in generator and to both imagor images,
and status, dimensions, format, frames and alpha are compared. A generator
that answers differently is held to that answer by a recorded override, so
the test fails once the divergence disappears. It runs once per resize
implementation, because make test builds the pure Go path while the images
ship vips.
2026-10-19 14:57:35 +02:00
Dominik Schmidt 6c9dc28599 refactor: one gif resize, a request struct, half the routes
The gif loop is shared by both builds, the executor takes a request
struct, the route table halves, the aspect flag is a pointer instead of
two bools, and the cache's budget is named after what it is.
2026-10-19 14:57:35 +02:00
Dominik Schmidt 99c7666ad2 fix(webdav): make the legacy a flag mean something again
An unconstrained axis is fitted instead of refused, a decides when the
client sent it, and an empty resolution ladder is refused at startup
instead of letting the client pick the cache key.
2026-10-19 14:57:35 +02:00
Dominik Schmidt 918c2baa7d fix(webdav): refuse what it cannot serve and pass the generator through
A cache backend nobody can serve fails at startup instead of dropping
entries silently, the memory backend is bounded, a busy generator's 429
reaches the client with its Retry-After, and a 400 from the generator is
read as this service's own bug instead of a missing preview.
2026-10-19 14:57:35 +02:00
Dominik Schmidt 70002306a8 docs: describe the push endpoint and the preview settings as they are
The fixtures are named after what they are, and the leftovers of the
deleted grpc service are gone.
2026-10-19 14:57:35 +02:00
Dominik Schmidt 2267b6d3bc fix(thumbnails): answer like imagor, and write what imagor writes
The upload part has to be typed, a malformed request is a 400 while a
source it cannot read is a 406, an animated gif flattens when the output
is still, a still source can be written as a gif, libvips writes webp, and
fit-in rounds the way vips and imagor round it.
2026-10-19 14:57:35 +02:00
Dominik Schmidt 9879927f4f refactor(webdav): a converter returns the image bytes and their type
A converter that found nothing returns nil, so the workflow decides what to
do with it instead of reading an error.
2026-10-19 14:57:35 +02:00
Dominik Schmidt 32f4ee02e8 feat(webdav): let a deployment add the types a preview is made of
webdav, graph and ocdav read the same list, so a configured type is
announced and attempted by all three. A type the generator cannot answer
is refused at startup, and ocdav takes the types from its own
configuration instead of importing an OpenCloud package, which the
vendored reva carries until opencloud-eu/reva#885 lands.
2026-10-19 14:57:35 +02:00
Dominik Schmidt 07d6829bd6 fix(webdav): hand an embedded image to the generator as it was found
Nothing is decoded in webdav any more, which also ends the libvips build
split in the preview path.
2026-10-19 14:57:35 +02:00
Dominik Schmidt de467d7dd8 feat(webdav): write a thumbnail in the type the source maps to
A source type maps onto the type its thumbnail is returned in, and that
type is asked for by the name the generator knows it under. The answer
carries that type whether it was just generated or came from the cache,
which is also what the cache key says.
2026-10-19 14:57:35 +02:00
Dominik Schmidt 0f734ac32c fix(webdav): type the upload part and answer the small things
The multipart part carries the source's own type, because imagor's upload
loader accepts image/* only. A public link that needs a password is a 404 again, a preview carries
nosniff and a content length, and the input size limit is read with reva's
bytesize again.
2026-10-19 14:57:35 +02:00
Dominik Schmidt 4c0768cb83 fix(webdav): name the thumbnail config fields after what they configure
The yaml keys stay as they are, so a config file written against them keeps
working, and OC_DISABLE_PREVIEWS is back without disabling search.
2026-10-19 14:57:35 +02:00
Dominik Schmidt 95fcc4c623 fix(webdav): snap each thumbnail axis onto a ladder of edge lengths
Each axis is rounded up on its own, so a square request can no longer land
in a landscape box, and the cache is keyed on the snapped box.
2026-10-19 14:57:35 +02:00
Jörn Friedrich Dreyer 203708474e refactor(thumbnails): remove the pull-based pipeline
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-10-19 14:57:35 +02:00
Jörn Friedrich Dreyer 81d0a86c35 refactor(webdav): drive the thumbnail workflow via the push-based generator
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-10-19 14:57:35 +02:00
Jörn Friedrich Dreyer 924d7428ed feat(thumbnails): add imagor-compatible push-based thumbnail endpoint
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-10-19 14:56:58 +02:00
Viktor Scharf 8517f84ea3 tests: add acceptance tests for sharing with guests via email (#3751)
Share resources with an email address via the sharingNg API and access them with the guest link from the email.
2026-10-19 11:39:48 +02:00
Alex Ababii 6bb1f2e859 Merge pull request #3743 from maki5/fix/activitylog_display_guestuser_name
fix(activitylog): fix for guestuser display name in activity list
2026-10-19 11:39:18 +02:00
Alex Ababii fc1a055997 Merge pull request #3745 from maki5/fix/authguest_readme
fix(authguest): fix diagram parsing in readme
2026-10-19 09:11:26 +02:00
opencloudeu 1d4308e36f [tx] updated from transifex 2026-10-17 23:16:56 +00:00
opencloudeu 6b50d80752 [tx] updated from transifex 2026-10-16 23:17:06 +00:00
Florian Schade 3cc47747af Merge pull request #3730 from fschade/feat-collaboration-checkfileinfo-gaps
feat(collaboration): close the CheckFileInfo gaps for the office apps
2026-10-16 17:05:49 +02:00
Alex Ababii 6ed4fd3fc1 fix(authguest): fix diagram parsing in readme 2026-10-16 16:09:33 +02:00
Alex Ababii 753524a22f fix(activitylog): fix for guestuser display name in activity list 2026-10-16 14:37:52 +02:00
Andre Duffeck 0deb1183d0 Merge pull request #3739 from aduffeck/guestlink-renewal-mail-without-pin
Make renewal mails without PINs work
2026-10-16 14:37:41 +02:00
Andre Duffeck 34195a40d8 Merge pull request #3742 from aduffeck/guest-renewal-limits
Guest renewal limits
2026-10-16 14:19:56 +02:00
André Duffeck cf60057d4a Raise the default cap for guest link renewals without a session to 50
Renewals without a session can happen up to 48 times a day, so a lower cap could be used up to lock the guest out.
2026-10-16 13:18:30 +02:00
André Duffeck b7fd066c5f Keep the newest guest link while it can still be redeemed
Renewals without a valid session only need the share id, so they no longer cancel a link the guest hasn't used yet.
2026-10-16 13:07:38 +02:00
André Duffeck 564e1c0ec7 Rate limit guest link renewals with a valid session separately
Each session renewal issues a PIN with fresh attempts, so without a limit a stolen session could keep guessing. The quota is separate from the one for renewals without a session, so neither can use up the other's.
2026-10-16 13:05:38 +02:00
André Duffeck 60832cc61b Don't issue PINs for renewals with expired guest sessions
An expired session token now counts as no session, so the renewal only rotates the link.
2026-10-16 13:03:36 +02:00
André Duffeck 5e4d722f18 Make renewal mails without PINs work 2026-10-16 12:38:51 +02:00
Alex Ababii 14d9251a5a Merge pull request #3704 from maki5/feat/authguest_rate_limit
feat(authguest): rate limited endpoints for guestlinks
2026-10-16 11:41:09 +02:00
Florian Schade e1cfacb2dd feat(collaboration): send DownloadUrl outside of secure view 2026-10-16 11:29:07 +02:00
Alex Ababii 6a527692ef feat(authguest): bump libre-graph-api-go to latest main 2026-10-16 11:05:47 +02:00
Jannik Stehle 19f9da79f8 Merge pull request #3737 from opencloud-eu/fix/guest-link-app-provider-paths
fix(proxy): allow guest link auth for app open and new endpoints
2026-10-16 10:59:12 +02:00
Alex Ababii f6a3ff09d8 feat(authguest): fixed tests after rebase 2026-10-16 10:34:34 +02:00
Alex Ababii c9345db7f3 feat(authguest): fix codacy styling 2026-10-16 10:07:22 +02:00
Alex Ababii e931d1ab25 feat(auhguest): upd renew quota limiting logic 2026-10-16 10:07:22 +02:00
Alex Ababii 7a7f43f889 feat(authguest): fix the renew sessionValid condition 2026-10-16 10:07:22 +02:00
Alex Ababii 7eac7db12c feat(authguest): upd renewal flow to rely on sessionToken 2026-10-16 10:07:22 +02:00
Alex Ababii 4df88e7dc5 feat(authguest): fix README styling 2026-10-16 10:07:22 +02:00
Alex Ababii dc59c536da feat(authguest): upd error mappings 2026-10-16 10:07:22 +02:00
Alex Ababii ddf388a058 feat(authguest): nonce and pin ttl are now using the same value 2026-10-16 10:07:22 +02:00
Alex Ababii fd25c8c88d feat(authguest): removed session token verification on renew endpoint 2026-10-16 10:07:21 +02:00
Alex Ababii 57e72213f7 feat(authguest): per share nonce cookie name 2026-10-16 10:01:56 +02:00
Alex Ababii 9d2c3d40fd feat(authguest): fix codacy issues 2026-10-16 10:01:56 +02:00