Bookstack: Safari downloads as .dms files.

Created on 2 Nov 2017  Â·  7Comments  Â·  Source: BookStackApp/BookStack

For Bug Reports

  • BookStack Version: BookStack v0.18.4
  • PHP Version: PHP 7.0.22-0ubuntu0.16.04.1
  • MySQL Version: mysql Ver 14.14 Distrib 5.7.20, for Linux (x86_64) using EditLine wrapper
Expected Behavior

Exports should be downloaded with the correct file extension (.pdf, .html, .txt)

Current Behavior

Exports download as page.dms, html.dms, or plaintext.dms when using Safari Version 11.0 (12604.1.38.1.7). If I change the extension after the file is downloaded, it opens correctly.

It also exports correctly using Chrome.

Steps to Reproduce

Install using the Ubuntu 16.04 script.
Create a new book/page.
Click any of the export links.

Bug

Most helpful comment

Great find @ajvolin. Thank you very much.

Just deployed a fix in 5c2e3f4e565b6e7626e1ca5aa83d6ebe4e56e940. Will be in the next release.

All 7 comments

Was hoping I could replicate this on an iPad but I unfortunately cannot.

Interestingly, Looking at this page it appears this could be down to a bug in safari.

This could probably be worked-around by adding file extensions to the export urls but that has a chance of causing issues where different server rules have be set up for static file types.

Think the best course of action here is to wait for apple to fix safari unless anyone can confirm it is a BookStack issue.

@ssddanbrown: Hi Dan, I can confirm that the issue still exists when using Safari on a Mac, and that the downloaded file names are correct when using FireFox. However, the download of files from other apps or websites works as expected – even in Safari. Do you have any news on this?

Cheers, Thomas

Describe the bug
When I export a page my installation, the downloaded file is named "html.dms", "plaintext.dms" and "pdf.dms" depending on the export file type. When I rename the downloaded file using the correct suffix, it opens up and is properly displayed.

Steps To Reproduce
Steps to reproduce the behavior:

  1. Go to any page in any book or chapter
  2. Click on export, select file type.
  3. Look at the file in your download folder.

Expected behavior
The downloaded file should be named "page title.file type" e.g. "foo.pdf"

Your Configuration (please complete the following information):

  • Exact BookStack Version (Found in settings): v0.23.0
  • PHP Version: php -v returns the following: PHP 7.0.30-0ubuntu0.16.04.1 (cli) ( NTS )
  • Client system: Mac OS Sierra 10.12.6
  • Browser: Safari Version 11.1.1

Additional context
At the moment users can easily work around as described above.

@tomasjay I ran into this same issue recently.

The content disposition headers are missing a closing double quote after the file extension and Safari bugs out. The issue is easily resolved by modifying the content disposition headers for each export method in the following controllers:

v0.22-dev

app/Http/Controllers/BookController.php

Change line 304 from
'Content-Disposition' => 'attachment; filename="' . $bookSlug . '.pdf'
To
'Content-Disposition' => 'attachment; filename="' . $bookSlug . '.pdf"'

Change line 319 from
'Content-Disposition' => 'attachment; filename="' . $bookSlug . '.html'
To
'Content-Disposition' => 'attachment; filename="' . $bookSlug . '.html"'

Change line 334 from
'Content-Disposition' => 'attachment; filename="' . $bookSlug . '.txt'
To
'Content-Disposition' => 'attachment; filename="' . $bookSlug . '.txt"'

app/Http/Controllers/ChapterController.php

Change line 255 from
'Content-Disposition' => 'attachment; filename="' . $chapterSlug . '.pdf'
To
'Content-Disposition' => 'attachment; filename="' . $chapterSlug . '.pdf"'

Change line 271 from
'Content-Disposition' => 'attachment; filename="' . $chapterSlug . '.html'
To
'Content-Disposition' => 'attachment; filename="' . $chapterSlug . '.html"'

Change line 287 from
'Content-Disposition' => 'attachment; filename="' . $chapterSlug . '.txt'
To
'Content-Disposition' => 'attachment; filename="' . $chapterSlug . '.txt"'

app/Http/Controllers/PageController.php
Change line 505 from
'Content-Disposition' => 'attachment; filename="' . $pageSlug . '.pdf'
To
'Content-Disposition' => 'attachment; filename="' . $pageSlug . '.pdf"'

Change line 522 from
'Content-Disposition' => 'attachment; filename="' . $pageSlug . '.html'
To
'Content-Disposition' => 'attachment; filename="' . $pageSlug . '.html"'

Change line 538 from
'Content-Disposition' => 'attachment; filename="' . $pageSlug . '.txt'
To
'Content-Disposition' => 'attachment; filename="' . $pageSlug . '.txt"'

Great find @ajvolin. Thank you very much.

Just deployed a fix in 5c2e3f4e565b6e7626e1ca5aa83d6ebe4e56e940. Will be in the next release.

Great find @ajvolin. Thank you very much.

Just deployed a fix in 5c2e3f4. Will be in the next release.

Hi @ssddanbrown , I can confirm that with v0.24.1 the behaviour on Safari is as expected.

Thanks a lot!

Hi, I want to ask if any of you have faced the following issue: Safari automatically downloads a dtag.dms file while opening Linkedin? Safari version is 12.0. I am curious what could be the reason?

Thank you very much in advance!

Indeed. I just visited LinkedIn today and—for the first time ever—it automatically downloaded a dtag.dms file to my Downloads. The file is zero bytes in length so it's unlikely to be anything destructive at this length.

This appears in the source HTML and presumably is the cause.

<img id="bizo-pixel" width="1" height="1" alt="" style="display:none" src="/csp/dtag?p=10">

Visiting the link https://www.linkedin.com/csp/dtag?p=10 redirects to https://dc.ads.linkedin.com/collect/?pid=6883&li_id=AgAAGuMDAc8sAYxUF6ddX2P4vU5NmhoyOSeRoM3dKA&li_oo=false&li_update=false&li_active=true&max_age=86400&fmt=gif and delivers a 1x1 GIF called collect.gif.

So it's possible that Safari sees this behavior as questionable tracking and is trying to deny it.

I just added an entry to my MacBook's /private/etc/hosts file:

127.0.0.1    dc.ads.linkedin.com

In theory, this will prevent LinkedIn's ad server from being reached. And this then should make that weird dtag.dms download go away.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Nedimko123 picture Nedimko123  Â·  3Comments

marcvef picture marcvef  Â·  3Comments

ensemblebd picture ensemblebd  Â·  3Comments

mtnyaeger picture mtnyaeger  Â·  3Comments

spacesven picture spacesven  Â·  3Comments