nextcloud / nextcloud/richdocuments

Failing startup of Collabora prevents users from downloading documents even if the download option is activated

Open
#3,332 1 comment 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

1. to develop bug feature: share link
Dominant language
JavaScript
Stars
453
Forks
147
Avg merge
14h 54m
Merged PRs (30d)
83

Description

Describe the bug
I shared an MS Office document (.xlsm file) via a public link which was actually ment for downloading. However, since I activated Nextcloud Office in my Nextcloud 27 these links do not work as expected anymore. When someone opens the link, Nextcloud offers a download for a second or less and immediately tries to start Nextcloud Office which removes the download option again. For some reason the document cannot be loaded via Nextcloud Office and download option does not come back.

Of course I could increase the timeout for Collabora or give it more RAM. However, I think there will always be very large or very unusual documents which cannot be loaded by LibreOffice/Collabora in time or at all. Therefore, activating Nextcloud Office should IMO never lead to a drawback in functionality. No matter if a document can be loaded by Nextcloud Office or not, there should be always a download button if the sharing user wants to allow downloads.

So a simple solution would be NOT to remove the download button while Nextcloud Office starts up.

To Reproduce
Steps to reproduce the behavior:

  1. Find an .xlsm file (or maybe any MS Office file) wich takes a long time open in LibreOffice (more then 30 seconds).
  2. Upload this file to the Nextcloud.
  3. Create a public share on this file with download option and without write permissions.
  4. Open the link of the public share in the webbrowser.
  5. See how the download option appears for one second and disappears afterwards when Nextcloud Office tries to start up.

Expected behavior
If the download option is set, the download button should IMO never disappear.

Screenshots
Screenshot showing the missing download button:
grafik

Screenshot telling me that Nextcloud Office could not establish a connection to the document.
grafik

Client details:

  • OS: Windows 10 Pro
  • Browser: Firefox 120.0.1
  • Device: desktop

Server details

Operating system:
Debian bookworm

Web server:
Apache2 2.4.57

Database:
MariaDB 10.11.4

PHP version:
8.1.25

Nextcloud version:
27.1.4

Version of Nextcloud Office
8.2.3

Collabora Online - Built-in CODE Server
23.5.503

Logs
Nextcloud log (data/nextcloud.log)
[richdocuments] Information: GuzzleHttp\Exception\ConnectException: cURL error 28: Operation timed out after 25001 milliseconds with 0 bytes received (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://cloud.iat.sport-iat.de/apps/richdocumentscode/proxy.php?req=/lool/convert-to/png at <<closure>>

 0. /var/www/nextcloud/iat/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php line 158
    GuzzleHttp\Handler\CurlFactory::createRejection("*** sensitive parameters replaced ***")
 1. /var/www/nextcloud/iat/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php line 110
    GuzzleHttp\Handler\CurlFactory::finishError()
 2. /var/www/nextcloud/iat/3rdparty/guzzlehttp/guzzle/src/Handler/CurlHandler.php line 47
    GuzzleHttp\Handler\CurlFactory::finish()
 3. /var/www/nextcloud/iat/3rdparty/guzzlehttp/guzzle/src/Middleware.php line 137
    GuzzleHttp\Handler\CurlHandler->__invoke()
 4. /var/www/nextcloud/iat/lib/private/Http/Client/DnsPinMiddleware.php line 114
    GuzzleHttp\Middleware::GuzzleHttp\{closure}("*** sensitive parameters replaced ***")
 5. /var/www/nextcloud/iat/3rdparty/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php line 64
    OC\Http\Client\DnsPinMiddleware->OC\Http\Client\{closure}("*** sensitive parameters replaced ***")
 6. /var/www/nextcloud/iat/3rdparty/guzzlehttp/guzzle/src/Middleware.php line 31
    GuzzleHttp\PrepareBodyMiddleware->__invoke()
 7. /var/www/nextcloud/iat/3rdparty/guzzlehttp/guzzle/src/RedirectMiddleware.php line 71
    GuzzleHttp\Middleware::GuzzleHttp\{closure}("*** sensitive parameters replaced ***")
 8. /var/www/nextcloud/iat/3rdparty/guzzlehttp/guzzle/src/Middleware.php line 63
    GuzzleHttp\RedirectMiddleware->__invoke()
 9. /var/www/nextcloud/iat/3rdparty/guzzlehttp/guzzle/src/HandlerStack.php line 75
    GuzzleHttp\Middleware::GuzzleHttp\{closure}("*** sensitive parameters replaced ***")
10. /var/www/nextcloud/iat/3rdparty/guzzlehttp/guzzle/src/Client.php line 331
    GuzzleHttp\HandlerStack->__invoke()
11. /var/www/nextcloud/iat/3rdparty/guzzlehttp/guzzle/src/Client.php line 168
    GuzzleHttp\Client->transfer()
12. /var/www/nextcloud/iat/3rdparty/guzzlehttp/guzzle/src/Client.php line 187
    GuzzleHttp\Client->requestAsync("*** sensitive parameters replaced ***")
13. /var/www/nextcloud/iat/lib/private/Http/Client/Client.php line 301
    GuzzleHttp\Client->request()
14. /var/www/nextcloud/iat/apps/richdocuments/lib/Preview/Office.php line 94
    OC\Http\Client\Client->post()
15. /var/www/nextcloud/iat/lib/private/Preview/ProviderV1Adapter.php line 53
    OCA\Richdocuments\Preview\Office->getThumbnail()
16. /var/www/nextcloud/iat/lib/private/Preview/GeneratorHelper.php line 64
    OC\Preview\ProviderV1Adapter->getThumbnail()
17. /var/www/nextcloud/iat/lib/private/Preview/Generator.php line 367
    OC\Preview\GeneratorHelper->getThumbnail()
18. /var/www/nextcloud/iat/lib/private/Preview/Generator.php line 343
    OC\Preview\Generator->generateProviderPreview()
19. /var/www/nextcloud/iat/lib/private/Preview/Generator.php line 149
    OC\Preview\Generator->getMaxPreview()
20. /var/www/nextcloud/iat/lib/private/Preview/Generator.php line 116
    OC\Preview\Generator->generatePreviews()
21. /var/www/nextcloud/iat/lib/private/PreviewManager.php line 192
    OC\Preview\Generator->getPreview()
22. /var/www/nextcloud/iat/apps/files_sharing/lib/Controller/PublicPreviewController.php line 125
    OC\PreviewManager->getPreview()
23. /var/www/nextcloud/iat/lib/private/AppFramework/Http/Dispatcher.php line 230
    OCA\Files_Sharing\Controller\PublicPreviewController->getPreview()
24. /var/www/nextcloud/iat/lib/private/AppFramework/Http/Dispatcher.php line 137
    OC\AppFramework\Http\Dispatcher->executeController()
25. /var/www/nextcloud/iat/lib/private/AppFramework/App.php line 183
    OC\AppFramework\Http\Dispatcher->dispatch()
26. /var/www/nextcloud/iat/lib/private/Route/Router.php line 315
    OC\AppFramework\App::main()
27. /var/www/nextcloud/iat/lib/base.php line 1068
    OC\Route\Router->match()
28. /var/www/nextcloud/iat/index.php line 36
    OC::handleRequest()

GET /index.php/apps/files_sharing/publicpreview/aqanyFbDXewaKGr?x=1920&y=542&a=true&file=%252FF%25C3%25B6rderdashboard.xlsm&scalingup=0
from 178.254.13.17 at 2023-12-01T10:26:52+00:00
Browser log
Insert your browser log here, this could for example include:

a) The javascript console log
b) The network log
c) ...

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with apps/richdocuments/lib/Preview/Office.php at line 94 and the public-preview flow through files_sharing/lib/Controller/PublicPreviewController.php at line 125. Reproduce a slow or failed Collabora preview for a public .xlsm share, then verify that the download option remains available when preview generation times out or fails.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, php
Domain
full-stack
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.